Code review for protransform patches.
Fix loss of previous expression-simplification work when a transform function fires: we must not simply revert to untransformed input tree. Instead build a dummy FuncExpr node to pass to the transform function. This has the additional advantage of providing a simpler, more uniform API for transform functions. Move documentation to a somewhat less buried spot, relocate some poorly-placed code, be more wary of null constants and invalid typmod values, add an opr_sanity check on protransform function signatures, and some other minor cosmetic adjustments. Note: although this patch touches pg_proc.h, no need for catversion bump, because the changes are cosmetic and don't actually change the intended catalog contents.
Showing
- doc/src/sgml/catalogs.sgml 2 additions, 1 deletiondoc/src/sgml/catalogs.sgml
- doc/src/sgml/xfunc.sgml 34 additions, 0 deletionsdoc/src/sgml/xfunc.sgml
- src/backend/nodes/nodeFuncs.c 28 additions, 1 deletionsrc/backend/nodes/nodeFuncs.c
- src/backend/optimizer/util/clauses.c 50 additions, 65 deletionssrc/backend/optimizer/util/clauses.c
- src/backend/parser/parse_clause.c 0 additions, 22 deletionssrc/backend/parser/parse_clause.c
- src/backend/utils/adt/datetime.c 15 additions, 14 deletionssrc/backend/utils/adt/datetime.c
- src/backend/utils/adt/numeric.c 11 additions, 12 deletionssrc/backend/utils/adt/numeric.c
- src/backend/utils/adt/timestamp.c 11 additions, 19 deletionssrc/backend/utils/adt/timestamp.c
- src/backend/utils/adt/varbit.c 11 additions, 12 deletionssrc/backend/utils/adt/varbit.c
- src/backend/utils/adt/varchar.c 13 additions, 13 deletionssrc/backend/utils/adt/varchar.c
- src/include/catalog/pg_proc.h 12 additions, 11 deletionssrc/include/catalog/pg_proc.h
- src/include/nodes/nodeFuncs.h 1 addition, 0 deletionssrc/include/nodes/nodeFuncs.h
- src/include/parser/parse_clause.h 0 additions, 2 deletionssrc/include/parser/parse_clause.h
- src/test/regress/expected/opr_sanity.out 10 additions, 0 deletionssrc/test/regress/expected/opr_sanity.out
- src/test/regress/sql/opr_sanity.sql 7 additions, 0 deletionssrc/test/regress/sql/opr_sanity.sql
Loading
Please register or sign in to comment