aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2015-02-22 14:40:27 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2015-02-22 14:40:27 -0500
commitc063da1769229efa8d8d21f0d068b3199ea3a6b3 (patch)
tree9337be8e39f8e5d3f2091ed2bf5e1e7828e46798 /src/backend/parser
parent6a75562ed16b5fa52cfd8830e4546972e647db26 (diff)
downloadpostgresql-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.y10
-rw-r--r--src/backend/parser/parse_expr.c1
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;