From b37d6373f0b2fc9f9779b2722f3a6095645cc9d3 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 27 Dec 2002 20:06:28 +0000 Subject: [PATCH] Deliver better error message when a relation name is used in an expression. Per report from Ian Barwick. --- src/backend/parser/parse_expr.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c index 3873fd37f0..ebb418ee90 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)); -- 2.50.0