Improve parsetree representation of special functions such as CURRENT_DATE.
We implement a dozen or so parameterless functions that the SQL standard defines special syntax for. Up to now, that was done by converting them into more or less ad-hoc constructs such as "'now'::text::date". That's messy for multiple reasons: it exposes what should be implementation details to users, and performance is worse than it needs to be in several cases. To improve matters, invent a new expression node type SQLValueFunction that can represent any of these parameterless functions. Bump catversion because this changes stored parsetrees for rules. Discussion: <30058.1463091294@sss.pgh.pa.us>
Showing
- contrib/pg_stat_statements/pg_stat_statements.c 9 additions, 0 deletionscontrib/pg_stat_statements/pg_stat_statements.c
- src/backend/executor/execQual.c 78 additions, 0 deletionssrc/backend/executor/execQual.c
- src/backend/nodes/copyfuncs.c 19 additions, 0 deletionssrc/backend/nodes/copyfuncs.c
- src/backend/nodes/equalfuncs.c 14 additions, 0 deletionssrc/backend/nodes/equalfuncs.c
- src/backend/nodes/nodeFuncs.c 24 additions, 3 deletionssrc/backend/nodes/nodeFuncs.c
- src/backend/nodes/outfuncs.c 14 additions, 0 deletionssrc/backend/nodes/outfuncs.c
- src/backend/nodes/readfuncs.c 18 additions, 0 deletionssrc/backend/nodes/readfuncs.c
- src/backend/optimizer/util/clauses.c 13 additions, 3 deletionssrc/backend/optimizer/util/clauses.c
- src/backend/parser/gram.y 29 additions, 95 deletionssrc/backend/parser/gram.y
- src/backend/parser/parse_expr.c 62 additions, 0 deletionssrc/backend/parser/parse_expr.c
- src/backend/parser/parse_target.c 43 additions, 0 deletionssrc/backend/parser/parse_target.c
- src/backend/utils/adt/date.c 86 additions, 7 deletionssrc/backend/utils/adt/date.c
- src/backend/utils/adt/ruleutils.c 62 additions, 0 deletionssrc/backend/utils/adt/ruleutils.c
- src/backend/utils/adt/timestamp.c 52 additions, 8 deletionssrc/backend/utils/adt/timestamp.c
- src/include/catalog/catversion.h 1 addition, 1 deletionsrc/include/catalog/catversion.h
- src/include/nodes/nodes.h 1 addition, 0 deletionssrc/include/nodes/nodes.h
- src/include/nodes/primnodes.h 39 additions, 0 deletionssrc/include/nodes/primnodes.h
- src/include/utils/date.h 4 additions, 0 deletionssrc/include/utils/date.h
- src/include/utils/timestamp.h 4 additions, 0 deletionssrc/include/utils/timestamp.h
- src/pl/plpgsql/src/pl_exec.c 3 additions, 0 deletionssrc/pl/plpgsql/src/pl_exec.c
Loading
Please register or sign in to comment