diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2015-02-22 14:40:27 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2015-02-22 14:40:27 -0500 |
commit | c063da1769229efa8d8d21f0d068b3199ea3a6b3 (patch) | |
tree | 9337be8e39f8e5d3f2091ed2bf5e1e7828e46798 /src/backend/parser | |
parent | 6a75562ed16b5fa52cfd8830e4546972e647db26 (diff) | |
download | postgresql-c063da1769229efa8d8d21f0d068b3199ea3a6b3.tar.gz postgresql-c063da1769229efa8d8d21f0d068b3199ea3a6b3.zip |
Add parse location fields to NullTest and BooleanTest structs.
We did not need a location tag on NullTest or BooleanTest before, because
no error messages referred directly to their locations. That's planned
to change though, so add these fields in a separate housekeeping commit.
Catversion bump because stored rules may change.
Diffstat (limited to 'src/backend/parser')
-rw-r--r-- | src/backend/parser/gram.y | 10 | ||||
-rw-r--r-- | src/backend/parser/parse_expr.c | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index b8af2963979..76b0affff06 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -11299,6 +11299,7 @@ a_expr: c_expr { $$ = $1; } NullTest *n = makeNode(NullTest); n->arg = (Expr *) $1; n->nulltesttype = IS_NULL; + n->location = @2; $$ = (Node *)n; } | a_expr ISNULL @@ -11306,6 +11307,7 @@ a_expr: c_expr { $$ = $1; } NullTest *n = makeNode(NullTest); n->arg = (Expr *) $1; n->nulltesttype = IS_NULL; + n->location = @2; $$ = (Node *)n; } | a_expr IS NOT NULL_P %prec IS @@ -11313,6 +11315,7 @@ a_expr: c_expr { $$ = $1; } NullTest *n = makeNode(NullTest); n->arg = (Expr *) $1; n->nulltesttype = IS_NOT_NULL; + n->location = @2; $$ = (Node *)n; } | a_expr NOTNULL @@ -11320,6 +11323,7 @@ a_expr: c_expr { $$ = $1; } NullTest *n = makeNode(NullTest); n->arg = (Expr *) $1; n->nulltesttype = IS_NOT_NULL; + n->location = @2; $$ = (Node *)n; } | row OVERLAPS row @@ -11343,6 +11347,7 @@ a_expr: c_expr { $$ = $1; } BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) $1; b->booltesttype = IS_TRUE; + b->location = @2; $$ = (Node *)b; } | a_expr IS NOT TRUE_P %prec IS @@ -11350,6 +11355,7 @@ a_expr: c_expr { $$ = $1; } BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) $1; b->booltesttype = IS_NOT_TRUE; + b->location = @2; $$ = (Node *)b; } | a_expr IS FALSE_P %prec IS @@ -11357,6 +11363,7 @@ a_expr: c_expr { $$ = $1; } BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) $1; b->booltesttype = IS_FALSE; + b->location = @2; $$ = (Node *)b; } | a_expr IS NOT FALSE_P %prec IS @@ -11364,6 +11371,7 @@ a_expr: c_expr { $$ = $1; } BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) $1; b->booltesttype = IS_NOT_FALSE; + b->location = @2; $$ = (Node *)b; } | a_expr IS UNKNOWN %prec IS @@ -11371,6 +11379,7 @@ a_expr: c_expr { $$ = $1; } BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) $1; b->booltesttype = IS_UNKNOWN; + b->location = @2; $$ = (Node *)b; } | a_expr IS NOT UNKNOWN %prec IS @@ -11378,6 +11387,7 @@ a_expr: c_expr { $$ = $1; } BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) $1; b->booltesttype = IS_NOT_UNKNOWN; + b->location = @2; $$ = (Node *)b; } | a_expr IS DISTINCT FROM a_expr %prec IS diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c index 791639a7db3..f314745818b 100644 --- a/src/backend/parser/parse_expr.c +++ b/src/backend/parser/parse_expr.c @@ -789,6 +789,7 @@ transformAExprOp(ParseState *pstate, A_Expr *a) NullTest *n = makeNode(NullTest); n->nulltesttype = IS_NULL; + n->location = a->location; if (exprIsNullConstant(lexpr)) n->arg = (Expr *) rexpr; |