aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/parse_expr.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2002-12-27 20:06:28 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2002-12-27 20:06:28 +0000
commitb37d6373f0b2fc9f9779b2722f3a6095645cc9d3 (patch)
treececc622f2b221d43ab99bbbe2d2e989f7995a82c /src/backend/parser/parse_expr.c
parentd5a0f78848a593de507cb8a8a5d040dc0fcd050d (diff)
downloadpostgresql-b37d6373f0b2fc9f9779b2722f3a6095645cc9d3.tar.gz
postgresql-b37d6373f0b2fc9f9779b2722f3a6095645cc9d3.zip
Deliver better error message when a relation name is used in an expression.
Per report from Ian Barwick.
Diffstat (limited to 'src/backend/parser/parse_expr.c')
-rw-r--r--src/backend/parser/parse_expr.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c
index 3873fd37f0d..ebb418ee904 100644
--- a/src/backend/parser/parse_expr.c
+++ b/src/backend/parser/parse_expr.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.129 2002/09/18 21:35:22 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.129.2.1 2002/12/27 20:06:28 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -912,6 +912,7 @@ exprType(Node *expr)
if (!qtree || !IsA(qtree, Query))
elog(ERROR, "exprType: Cannot get type for untransformed sublink");
tent = (TargetEntry *) lfirst(qtree->targetList);
+ Assert(IsA(tent, TargetEntry));
type = tent->resdom->restype;
}
else
@@ -936,6 +937,16 @@ exprType(Node *expr)
case T_ConstraintTest:
type = exprType(((ConstraintTest *) expr)->arg);
break;
+ case T_RangeVar:
+ /*
+ * If someone uses a bare relation name in an expression,
+ * we will likely first notice a problem here (see comments in
+ * transformColumnRef()). Issue an appropriate error message.
+ */
+ elog(ERROR, "Relation reference \"%s\" cannot be used in an expression",
+ ((RangeVar *) expr)->relname);
+ type = InvalidOid; /* keep compiler quiet */
+ break;
default:
elog(ERROR, "exprType: Do not know how to get type for %d node",
nodeTag(expr));