diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2008-11-20 14:04:46 +0000 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2008-11-20 14:04:46 +0000 |
commit | b09a1a2942628477973f25d564f7698baf54df1c (patch) | |
tree | ec0ff635976b0b9ebe81e8b546fa830dec6e55a4 /src | |
parent | f179d5ea99b4598689e5aefed376874b68110978 (diff) | |
download | postgresql-b09a1a2942628477973f25d564f7698baf54df1c.tar.gz postgresql-b09a1a2942628477973f25d564f7698baf54df1c.zip |
TABLE command
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/catalog/sql_features.txt | 2 | ||||
-rw-r--r-- | src/backend/parser/gram.y | 24 | ||||
-rw-r--r-- | src/bin/psql/tab-complete.c | 14 | ||||
-rw-r--r-- | src/test/regress/expected/select.out | 2 | ||||
-rw-r--r-- | src/test/regress/sql/select.sql | 2 |
5 files changed, 33 insertions, 11 deletions
diff --git a/src/backend/catalog/sql_features.txt b/src/backend/catalog/sql_features.txt index 354fd98811b..3afffa814ab 100644 --- a/src/backend/catalog/sql_features.txt +++ b/src/backend/catalog/sql_features.txt @@ -280,7 +280,7 @@ F591 Derived tables YES F611 Indicator data types YES F641 Row and table constructors NO F651 Catalog name qualifiers YES -F661 Simple tables NO +F661 Simple tables YES F671 Subqueries in CHECK NO intentionally omitted F672 Retrospective check constraints YES F690 Collation support NO diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index b3046c04b20..6733372da2d 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.637 2008/11/13 11:10:06 meskes Exp $ + * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.638 2008/11/20 14:04:46 petere Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -6431,6 +6431,28 @@ simple_select: $$ = (Node *)n; } | values_clause { $$ = $1; } + | TABLE qualified_name + { + /* same as SELECT * FROM qualified_name */ + ColumnRef *cr = makeNode(ColumnRef); + ResTarget *rt = makeNode(ResTarget); + SelectStmt *n = makeNode(SelectStmt); + + cr->fields = list_make1(makeNode(A_Star)); + cr->location = -1; + + rt->name = NULL; + rt->indirection = NIL; + rt->val = (Node *)cr; + rt->location = -1; + + $2->inhOpt = INH_DEFAULT; + $2->alias = NULL; + + n->targetList = list_make1(rt); + n->fromClause = list_make1($2); + $$ = (Node *)n; + } | select_clause UNION opt_all select_clause { $$ = makeSetOp(SETOP_UNION, $3, $1, $4); diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index d262f21771e..635e0c7fa7b 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -3,7 +3,7 @@ * * Copyright (c) 2000-2008, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.176 2008/11/11 02:42:32 tgl Exp $ + * $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.177 2008/11/20 14:04:46 petere Exp $ */ /*---------------------------------------------------------------------- @@ -615,7 +615,7 @@ psql_completion(char *text, int start, int end) "DELETE FROM", "DISCARD", "DROP", "END", "EXECUTE", "EXPLAIN", "FETCH", "GRANT", "INSERT", "LISTEN", "LOAD", "LOCK", "MOVE", "NOTIFY", "PREPARE", "REASSIGN", "REINDEX", "RELEASE", "RESET", "REVOKE", "ROLLBACK", - "SAVEPOINT", "SELECT", "SET", "SHOW", "START", "TRUNCATE", "UNLISTEN", + "SAVEPOINT", "SELECT", "SET", "SHOW", "START", "TABLE", "TRUNCATE", "UNLISTEN", "UPDATE", "VACUUM", "VALUES", "WITH", NULL }; @@ -1694,24 +1694,24 @@ psql_completion(char *text, int start, int end) COMPLETE_WITH_ATTR(prev_wd, ""); /* - * Complete INSERT INTO <table> with "VALUES" or "SELECT" or "DEFAULT - * VALUES" + * Complete INSERT INTO <table> with "VALUES" or "SELECT" or + * "TABLE" or "DEFAULT VALUES" */ else if (pg_strcasecmp(prev3_wd, "INSERT") == 0 && pg_strcasecmp(prev2_wd, "INTO") == 0) { static const char *const list_INSERT[] = - {"DEFAULT VALUES", "SELECT", "VALUES", NULL}; + {"DEFAULT VALUES", "SELECT", "TABLE", "VALUES", NULL}; COMPLETE_WITH_LIST(list_INSERT); } - /* Complete INSERT INTO <table> (attribs) with "VALUES" or "SELECT" */ + /* Complete INSERT INTO <table> (attribs) with "VALUES" or "SELECT" or "TABLE" */ else if (pg_strcasecmp(prev4_wd, "INSERT") == 0 && pg_strcasecmp(prev3_wd, "INTO") == 0 && prev_wd[strlen(prev_wd) - 1] == ')') { static const char *const list_INSERT[] = - {"SELECT", "VALUES", NULL}; + {"SELECT", "TABLE", "VALUES", NULL}; COMPLETE_WITH_LIST(list_INSERT); } diff --git a/src/test/regress/expected/select.out b/src/test/regress/expected/select.out index 2936f0306ab..19a0b9caae6 100644 --- a/src/test/regress/expected/select.out +++ b/src/test/regress/expected/select.out @@ -506,7 +506,7 @@ VALUES (1,2), (3,4+4), (7,77.7) UNION ALL SELECT 2+2, 57 UNION ALL -SELECT * FROM int8_tbl; +TABLE int8_tbl; column1 | column2 ------------------+------------------- 1 | 2 diff --git a/src/test/regress/sql/select.sql b/src/test/regress/sql/select.sql index bb1fc9b9347..a9ddd5e5861 100644 --- a/src/test/regress/sql/select.sql +++ b/src/test/regress/sql/select.sql @@ -146,7 +146,7 @@ VALUES (1,2), (3,4+4), (7,77.7) UNION ALL SELECT 2+2, 57 UNION ALL -SELECT * FROM int8_tbl; +TABLE int8_tbl; -- -- Test ORDER BY options |