diff options
author | Bruce Momjian <bruce@momjian.us> | 2001-05-21 18:42:08 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2001-05-21 18:42:08 +0000 |
commit | 66e9ee79c75e2b684d47fd791a4a08f777eb731a (patch) | |
tree | bb0c4e7aa9ef0eeeeaebed72194b9dc6695f2177 /src | |
parent | 984bf07a65a8753a2538aad68de7342a0619523e (diff) | |
download | postgresql-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.c | 5 | ||||
-rw-r--r-- | src/backend/parser/parse_target.c | 5 | ||||
-rw-r--r-- | src/include/nodes/parsenodes.h | 5 |
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; /* |