diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2012-03-23 17:29:57 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2012-03-23 17:29:57 -0400 |
commit | 0339047bc93147c1c6f78f867ae6b0c215406235 (patch) | |
tree | 116a4cd10a9eb1b0b6beb4cf871bc126c504572a /src/backend/parser/parse_clause.c | |
parent | e08b4101e1daa2f4e6644330918177a10cac0aab (diff) | |
download | postgresql-0339047bc93147c1c6f78f867ae6b0c215406235.tar.gz postgresql-0339047bc93147c1c6f78f867ae6b0c215406235.zip |
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.
Diffstat (limited to 'src/backend/parser/parse_clause.c')
-rw-r--r-- | src/backend/parser/parse_clause.c | 22 |
1 files changed, 0 insertions, 22 deletions
diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c index 3a23cddd337..97ab9d5581a 100644 --- a/src/backend/parser/parse_clause.c +++ b/src/backend/parser/parse_clause.c @@ -2271,25 +2271,3 @@ transformFrameOffset(ParseState *pstate, int frameOptions, Node *clause) return node; } - -/* - * relabel_to_typmod - * Add a RelabelType node that changes just the typmod, and remove all - * now-superfluous RelabelType nodes beneath it. - */ -Node * -relabel_to_typmod(Node *expr, int32 typmod) -{ - Oid type = exprType(expr); - Oid coll = exprCollation(expr); - - /* - * Strip any existing RelabelType, then add one. This is to preserve the - * invariant of no redundant RelabelTypes. - */ - while (IsA(expr, RelabelType)) - expr = (Node *) ((RelabelType *) expr)->arg; - - return (Node *) makeRelabelType((Expr *) expr, type, typmod, coll, - COERCE_DONTCARE); -} |