aboutsummaryrefslogtreecommitdiff
path: root/src/backend/nodes/outfuncs.c
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2022-09-24 18:18:33 -0400
committerPeter Eisentraut <peter@eisentraut.org>2022-09-24 18:18:33 -0400
commita6bc3301925e1a8ad1f58da629b9dd55bc4b8d9c (patch)
tree1d4edc9f60cb0a144931caff3de6f9797d77fe9e /src/backend/nodes/outfuncs.c
parent2cb1a5a8d4aeb63da2d6a2d22169f05c60bb5828 (diff)
downloadpostgresql-a6bc3301925e1a8ad1f58da629b9dd55bc4b8d9c.tar.gz
postgresql-a6bc3301925e1a8ad1f58da629b9dd55bc4b8d9c.zip
Add read support for some missing raw parse nodes
The node types A_Const, Constraint, and A_Expr had custom output functions, but no read functions were implemented so far. The A_Expr output format had to be tweaked a bit to make it easier to parse. Be a bit more cautious about applying strncmp to unterminated strings. Also error out if an unrecognized enum value is found in each case, instead of just printing a placeholder value. That was maybe ok for debugging but won't work if we want to have robust round-tripping. Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://www.postgresql.org/message-id/flat/4159834.1657405226@sss.pgh.pa.us
Diffstat (limited to 'src/backend/nodes/outfuncs.c')
-rw-r--r--src/backend/nodes/outfuncs.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index 60610e3a4bd..24ea0487e7f 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -548,12 +548,12 @@ _outA_Expr(StringInfo str, const A_Expr *node)
WRITE_NODE_FIELD(name);
break;
case AEXPR_OP_ANY:
- WRITE_NODE_FIELD(name);
appendStringInfoString(str, " ANY");
+ WRITE_NODE_FIELD(name);
break;
case AEXPR_OP_ALL:
- WRITE_NODE_FIELD(name);
appendStringInfoString(str, " ALL");
+ WRITE_NODE_FIELD(name);
break;
case AEXPR_DISTINCT:
appendStringInfoString(str, " DISTINCT");
@@ -600,7 +600,7 @@ _outA_Expr(StringInfo str, const A_Expr *node)
WRITE_NODE_FIELD(name);
break;
default:
- appendStringInfoString(str, " ??");
+ elog(ERROR, "unrecognized A_Expr_Kind: %d", (int) node->kind);
break;
}
@@ -782,8 +782,7 @@ _outConstraint(StringInfo str, const Constraint *node)
break;
default:
- appendStringInfo(str, "<unrecognized_constraint %d>",
- (int) node->contype);
+ elog(ERROR, "unrecognized ConstrType: %d", (int) node->contype);
break;
}
}