aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/gram.y
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/parser/gram.y')
-rw-r--r--src/backend/parser/gram.y79
1 files changed, 14 insertions, 65 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 2cc92a89432..c9941d9cb4f 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -455,7 +455,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
transform_element_list transform_type_list
TriggerTransitions TriggerReferencing
vacuum_relation_list opt_vacuum_relation_list
- drop_option_list pub_obj_list pub_obj_type_list
+ drop_option_list pub_obj_list
%type <node> opt_routine_body
%type <groupclause> group_clause
@@ -588,7 +588,6 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
%type <node> var_value zone_value
%type <rolespec> auth_ident RoleSpec opt_granted_by
%type <publicationobjectspec> PublicationObjSpec
-%type <node> pub_obj_type
%type <keyword> unreserved_keyword type_func_name_keyword
%type <keyword> col_name_keyword reserved_keyword
@@ -9863,10 +9862,13 @@ AlterOwnerStmt: ALTER AGGREGATE aggregate_with_argtypes OWNER TO RoleSpec
*
* CREATE PUBLICATION FOR ALL TABLES [WITH options]
*
- * CREATE PUBLICATION FOR ALL SEQUENCES [WITH options]
- *
* CREATE PUBLICATION FOR pub_obj [, ...] [WITH options]
*
+ * pub_obj is one of:
+ *
+ * TABLE table [, ...]
+ * ALL TABLES IN SCHEMA schema [, ...]
+ *
*****************************************************************************/
CreatePublicationStmt:
@@ -9877,12 +9879,12 @@ CreatePublicationStmt:
n->options = $4;
$$ = (Node *)n;
}
- | CREATE PUBLICATION name FOR ALL pub_obj_type_list opt_definition
+ | CREATE PUBLICATION name FOR ALL TABLES opt_definition
{
CreatePublicationStmt *n = makeNode(CreatePublicationStmt);
n->pubname = $3;
n->options = $7;
- n->for_all_objects = $6;
+ n->for_all_tables = true;
$$ = (Node *)n;
}
| CREATE PUBLICATION name FOR pub_obj_list opt_definition
@@ -9932,26 +9934,6 @@ PublicationObjSpec:
$$->pubobjtype = PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA;
$$->location = @5;
}
- | SEQUENCE relation_expr
- {
- $$ = makeNode(PublicationObjSpec);
- $$->pubobjtype = PUBLICATIONOBJ_SEQUENCE;
- $$->pubtable = makeNode(PublicationTable);
- $$->pubtable->relation = $2;
- }
- | ALL SEQUENCES IN_P SCHEMA ColId
- {
- $$ = makeNode(PublicationObjSpec);
- $$->pubobjtype = PUBLICATIONOBJ_SEQUENCES_IN_SCHEMA;
- $$->name = $5;
- $$->location = @5;
- }
- | ALL SEQUENCES IN_P SCHEMA CURRENT_SCHEMA
- {
- $$ = makeNode(PublicationObjSpec);
- $$->pubobjtype = PUBLICATIONOBJ_SEQUENCES_IN_CUR_SCHEMA;
- $$->location = @5;
- }
| ColId opt_column_list OptWhereClause
{
$$ = makeNode(PublicationObjSpec);
@@ -10013,19 +9995,6 @@ pub_obj_list: PublicationObjSpec
{ $$ = lappend($1, $3); }
;
-pub_obj_type: TABLES
- { $$ = (Node *) makeString("tables"); }
- | SEQUENCES
- { $$ = (Node *) makeString("sequences"); }
- ;
-
-pub_obj_type_list: pub_obj_type
- { $$ = list_make1($1); }
- | pub_obj_type_list ',' pub_obj_type
- { $$ = lappend($1, $3); }
- ;
-
-
/*****************************************************************************
*
* ALTER PUBLICATION name SET ( options )
@@ -10036,6 +10005,11 @@ pub_obj_type_list: pub_obj_type
*
* ALTER PUBLICATION name SET pub_obj [, ...]
*
+ * pub_obj is one of:
+ *
+ * TABLE table_name [, ...]
+ * ALL TABLES IN SCHEMA schema_name [, ...]
+ *
*****************************************************************************/
AlterPublicationStmt:
@@ -18757,8 +18731,7 @@ preprocess_pubobj_list(List *pubobjspec_list, core_yyscan_t yyscanner)
if (pubobj->pubobjtype == PUBLICATIONOBJ_CONTINUATION)
pubobj->pubobjtype = prevobjtype;
- if (pubobj->pubobjtype == PUBLICATIONOBJ_TABLE ||
- pubobj->pubobjtype == PUBLICATIONOBJ_SEQUENCE)
+ if (pubobj->pubobjtype == PUBLICATIONOBJ_TABLE)
{
/* relation name or pubtable must be set for this type of object */
if (!pubobj->name && !pubobj->pubtable)
@@ -18809,30 +18782,6 @@ preprocess_pubobj_list(List *pubobjspec_list, core_yyscan_t yyscanner)
errmsg("invalid schema name at or near"),
parser_errposition(pubobj->location));
}
- else if (pubobj->pubobjtype == PUBLICATIONOBJ_SEQUENCES_IN_SCHEMA ||
- pubobj->pubobjtype == PUBLICATIONOBJ_SEQUENCES_IN_CUR_SCHEMA)
- {
- /* WHERE clause is not allowed on a schema object */
- if (pubobj->pubtable && pubobj->pubtable->whereClause)
- ereport(ERROR,
- errcode(ERRCODE_SYNTAX_ERROR),
- errmsg("WHERE clause not allowed for schema"),
- parser_errposition(pubobj->location));
-
- /*
- * We can distinguish between the different type of schema
- * objects based on whether name and pubtable is set.
- */
- if (pubobj->name)
- pubobj->pubobjtype = PUBLICATIONOBJ_SEQUENCES_IN_SCHEMA;
- else if (!pubobj->name && !pubobj->pubtable)
- pubobj->pubobjtype = PUBLICATIONOBJ_SEQUENCES_IN_CUR_SCHEMA;
- else
- ereport(ERROR,
- errcode(ERRCODE_SYNTAX_ERROR),
- errmsg("invalid schema name at or near"),
- parser_errposition(pubobj->location));
- }
prevobjtype = pubobj->pubobjtype;
}