parse_expr.c another type produced by transformations?

Started by Bruce Momjianabout 23 years ago2 messageshackers
Jump to latest
#1Bruce Momjian
bruce@momjian.us

Ran into this in cvs tip checked out as of yesterday:

db=> SELECT sum(CASE WHEN (upper(substr((select 'en'::varchar),1,1)) not between 'A' and 'Z') THEN 1 ELSE 0 END) AS n FROM tab;
ERROR: transformExpr: does not know how to transform node 309 (internal error)

309 is T_FuncExpr. Is this a node type that should be added as described by
the comment? Appended is the patch to add it but I don't know if it should be
or not.

parse_expr.c:
/*********************************************
* Quietly accept node types that may be presented when we are
* called on an already-transformed tree.
*
* Do any other node types need to be accepted? For now we are
* taking a conservative approach, and only accepting node
* types that are demonstrably necessary to accept.
*********************************************/

--- parse_expr.c.~1.144.~	2003-02-09 23:44:46.000000000 -0500
+++ parse_expr.c	2003-02-12 13:02:35.000000000 -0500
@@ -670,6 +670,7 @@
 		case T_Param:
 		case T_Aggref:
 		case T_ArrayRef:
+		case T_FuncExpr:
 		case T_FieldSelect:
 		case T_RelabelType:
 		case T_CoerceToDomain:

--
greg

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#1)
Re: [HACKERS] parse_expr.c another type produced by transformations?

Greg Stark <gsstark@mit.edu> writes:

Ran into this in cvs tip checked out as of yesterday:

db=> SELECT sum(CASE WHEN (upper(substr((select 'en'::varchar),1,1)) not between 'A' and 'Z') THEN 1 ELSE 0 END) AS n FROM tab;
ERROR: transformExpr: does not know how to transform node 309 (internal error)

309 is T_FuncExpr. Is this a node type that should be added as described by
the comment?

Yeah, you're right, and three other node types too. I missed this spot
while changing the representation of Expr the other day. Thanks for
catching it.

regards, tom lane