mirror of
https://github.com/postgres/postgres.git
synced 2025-04-25 21:42:33 +03:00
Handle NULL fields in WRITE_INDEX_ARRAY
Unlike existing WRITE_*_ARRAY macros, WRITE_INDEX_ARRAY needs to handle the case that the field is NULL. We already have the convention to print NULL fields as "<>", so we do that here as well. There is currently no corresponding read function for this, so reading this back in is not implemented, but it could be if needed. Reported-by: Richard Guo <guofenglinux@gmail.com> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://www.postgresql.org/message-id/flat/CAMbWs4-LN%3DbF8f9eU2R94dJtF54DfDvBq%2BovqHnOQqbinYDrUw%40mail.gmail.com
This commit is contained in:
parent
06cafd6f57
commit
9ddf251f94
@ -124,11 +124,18 @@ static void outChar(StringInfo str, char c);
|
||||
appendStringInfo(str, " %u", node->fldname[i]); \
|
||||
} while(0)
|
||||
|
||||
/*
|
||||
* This macro supports the case that the field is NULL. For the other array
|
||||
* macros, that is currently not needed.
|
||||
*/
|
||||
#define WRITE_INDEX_ARRAY(fldname, len) \
|
||||
do { \
|
||||
appendStringInfoString(str, " :" CppAsString(fldname) " "); \
|
||||
for (int i = 0; i < len; i++) \
|
||||
appendStringInfo(str, " %u", node->fldname[i]); \
|
||||
if (node->fldname) \
|
||||
for (int i = 0; i < len; i++) \
|
||||
appendStringInfo(str, " %u", node->fldname[i]); \
|
||||
else \
|
||||
appendStringInfoString(str, "<>"); \
|
||||
} while(0)
|
||||
|
||||
#define WRITE_INT_ARRAY(fldname, len) \
|
||||
|
Loading…
x
Reference in New Issue
Block a user