I was reported that the Advantage Delphi client doesn’t return NULL on MONEY data type in Delphi Tokyo. After some research, I’ve found a bug in adsdata.pas: Line 5996 compares the data buffer with the value that represents NULL in ADS. It casts the content to a Signed64 for the comparison:
if ( pSIGNED64 ( pcData )^ <> $8000000000000000 ) then
All other comparisons in that function (TAdsDataSet.IsFieldBlank) compare to Unsigned values instead. So modifying the above line with
if ( PUNSIGNED64 ( pcData )^ <> $8000000000000000 ) then
fixes the issue.