aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2001-05-21 18:42:08 +0000
committerBruce Momjian <bruce@momjian.us>2001-05-21 18:42:08 +0000
commit66e9ee79c75e2b684d47fd791a4a08f777eb731a (patch)
treebb0c4e7aa9ef0eeeeaebed72194b9dc6695f2177 /src
parent984bf07a65a8753a2538aad68de7342a0619523e (diff)
downloadpostgresql-66e9ee79c75e2b684d47fd791a4a08f777eb731a.tar.gz
postgresql-66e9ee79c75e2b684d47fd791a4a08f777eb731a.zip
Print error on SELECT tab FROM tab:
You can't use relation names alone in the target list, try relation.*
Diffstat (limited to 'src')
-rw-r--r--src/backend/parser/parse_expr.c5
-rw-r--r--src/backend/parser/parse_target.c5
-rw-r--r--src/include/nodes/parsenodes.h5
3 files changed, 10 insertions, 5 deletions
diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c
index 08a2f5f2035..4cbbc1c980c 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.95 2001/05/19 00:33:20 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.96 2001/05/21 18:42:08 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -585,7 +585,10 @@ transformIdent(ParseState *pstate, Ident *ident, int precedence)
Node *var = colnameToVar(pstate, ident->name);
if (var != NULL)
+ {
+ ident->isRel = FALSE;
result = transformIndirection(pstate, var, ident->indirection);
+ }
}
if (result == NULL)
diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index 8f8ea4e168b..be48c899ddb 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.66 2001/03/22 03:59:41 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.67 2001/05/21 18:42:08 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -55,6 +55,9 @@ transformTargetEntry(ParseState *pstate,
if (expr == NULL)
expr = transformExpr(pstate, node, EXPR_COLUMN_FIRST);
+ if (IsA(expr, Ident) && ((Ident *)expr)->isRel)
+ elog(ERROR,"You can't use relation names alone in the target list, try relation.*.");
+
type_id = exprType(expr);
type_mod = exprTypmod(expr);
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index cfea5222965..ff4cc278312 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: parsenodes.h,v 1.128 2001/05/20 20:28:20 tgl Exp $
+ * $Id: parsenodes.h,v 1.129 2001/05/21 18:42:08 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1081,8 +1081,7 @@ typedef struct Ident
NodeTag type;
char *name; /* its name */
List *indirection; /* array references */
- bool isRel; /* is a relation - filled in by
- * transformExpr() */
+ bool isRel; /* is this a relation or a column? */
} Ident;
/*