|
|
|
@ -346,8 +346,7 @@ outBitmapset(StringInfo str, const Bitmapset *bms) |
|
|
|
void |
|
|
|
void |
|
|
|
outDatum(StringInfo str, Datum value, int typlen, bool typbyval) |
|
|
|
outDatum(StringInfo str, Datum value, int typlen, bool typbyval) |
|
|
|
{ |
|
|
|
{ |
|
|
|
Size length, |
|
|
|
Size length; |
|
|
|
i; |
|
|
|
|
|
|
|
char *s; |
|
|
|
char *s; |
|
|
|
|
|
|
|
|
|
|
|
length = datumGetSize(value, typbyval, typlen); |
|
|
|
length = datumGetSize(value, typbyval, typlen); |
|
|
|
@ -356,7 +355,7 @@ outDatum(StringInfo str, Datum value, int typlen, bool typbyval) |
|
|
|
{ |
|
|
|
{ |
|
|
|
s = (char *) (&value); |
|
|
|
s = (char *) (&value); |
|
|
|
appendStringInfo(str, "%u [ ", (unsigned int) length); |
|
|
|
appendStringInfo(str, "%u [ ", (unsigned int) length); |
|
|
|
for (i = 0; i < (Size) sizeof(Datum); i++) |
|
|
|
for (Size i = 0; i < (Size) sizeof(Datum); i++) |
|
|
|
appendStringInfo(str, "%d ", (int) (s[i])); |
|
|
|
appendStringInfo(str, "%d ", (int) (s[i])); |
|
|
|
appendStringInfoChar(str, ']'); |
|
|
|
appendStringInfoChar(str, ']'); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -368,7 +367,7 @@ outDatum(StringInfo str, Datum value, int typlen, bool typbyval) |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|
appendStringInfo(str, "%u [ ", (unsigned int) length); |
|
|
|
appendStringInfo(str, "%u [ ", (unsigned int) length); |
|
|
|
for (i = 0; i < length; i++) |
|
|
|
for (Size i = 0; i < length; i++) |
|
|
|
appendStringInfo(str, "%d ", (int) (s[i])); |
|
|
|
appendStringInfo(str, "%d ", (int) (s[i])); |
|
|
|
appendStringInfoChar(str, ']'); |
|
|
|
appendStringInfoChar(str, ']'); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -434,8 +433,6 @@ _outBoolExpr(StringInfo str, const BoolExpr *node) |
|
|
|
static void |
|
|
|
static void |
|
|
|
_outForeignKeyOptInfo(StringInfo str, const ForeignKeyOptInfo *node) |
|
|
|
_outForeignKeyOptInfo(StringInfo str, const ForeignKeyOptInfo *node) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int i; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WRITE_NODE_TYPE("FOREIGNKEYOPTINFO"); |
|
|
|
WRITE_NODE_TYPE("FOREIGNKEYOPTINFO"); |
|
|
|
|
|
|
|
|
|
|
|
WRITE_UINT_FIELD(con_relid); |
|
|
|
WRITE_UINT_FIELD(con_relid); |
|
|
|
@ -450,10 +447,10 @@ _outForeignKeyOptInfo(StringInfo str, const ForeignKeyOptInfo *node) |
|
|
|
WRITE_INT_FIELD(nmatched_ri); |
|
|
|
WRITE_INT_FIELD(nmatched_ri); |
|
|
|
/* for compactness, just print the number of matches per column: */ |
|
|
|
/* for compactness, just print the number of matches per column: */ |
|
|
|
appendStringInfoString(str, " :eclass"); |
|
|
|
appendStringInfoString(str, " :eclass"); |
|
|
|
for (i = 0; i < node->nkeys; i++) |
|
|
|
for (int i = 0; i < node->nkeys; i++) |
|
|
|
appendStringInfo(str, " %d", (node->eclass[i] != NULL)); |
|
|
|
appendStringInfo(str, " %d", (node->eclass[i] != NULL)); |
|
|
|
appendStringInfoString(str, " :rinfos"); |
|
|
|
appendStringInfoString(str, " :rinfos"); |
|
|
|
for (i = 0; i < node->nkeys; i++) |
|
|
|
for (int i = 0; i < node->nkeys; i++) |
|
|
|
appendStringInfo(str, " %d", list_length(node->rinfos[i])); |
|
|
|
appendStringInfo(str, " %d", list_length(node->rinfos[i])); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|