8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-23 23:23:04 +01:00

Backport fix for bug #7482 : Result of blob_append(null, null) (literal '<null>') is not shown

This commit is contained in:
Vlad Khorsun 2023-02-24 12:06:22 +02:00
parent 56f4dc52dd
commit 7b6f1edabb

View File

@ -1244,6 +1244,7 @@ bool makeBlobAppendBlob(dsc* result, const dsc* arg, bid* blob_id = nullptr)
if (arg->isBlob()) if (arg->isBlob())
{ {
result->makeBlob(arg->getBlobSubType(), arg->getTextType(), ptr); result->makeBlob(arg->getBlobSubType(), arg->getTextType(), ptr);
result->setNullable(true);
return true; return true;
} }
@ -1263,6 +1264,7 @@ bool makeBlobAppendBlob(dsc* result, const dsc* arg, bid* blob_id = nullptr)
result->makeBlob(isc_blob_text, ttype_ascii, ptr); result->makeBlob(isc_blob_text, ttype_ascii, ptr);
} }
result->setNullable(true);
return true; return true;
} }
@ -1270,18 +1272,23 @@ bool makeBlobAppendBlob(dsc* result, const dsc* arg, bid* blob_id = nullptr)
void makeBlobAppend(DataTypeUtilBase* dataTypeUtil, const SysFunction* function, dsc* result, void makeBlobAppend(DataTypeUtilBase* dataTypeUtil, const SysFunction* function, dsc* result,
int argsCount, const dsc** args) int argsCount, const dsc** args)
{ {
fb_assert(argsCount >= function->minArgCount);
if (argsCount > 0) if (argsCount > 0)
{ {
const dsc** ppArg = args; const dsc** ppArg = args;
const dsc** const end = args + argsCount; const dsc** const end = args + argsCount;
for (; ppArg < end; ppArg++) for (; ppArg < end; ppArg++)
{
if (makeBlobAppendBlob(result, *ppArg)) if (makeBlobAppendBlob(result, *ppArg))
return; return;
} }
}
fb_assert(false); // All args are NULL's
result->makeBlob(isc_blob_untyped, ttype_binary); result->makeBlob(isc_blob_untyped, ttype_binary);
result->setNullable(true);
} }