From: Pavan Deolasee Date: Fri, 15 Jan 2016 07:58:12 +0000 (+0530) Subject: Support additional synax for choosing table distribution strategy X-Git-Tag: XL9_5_R1BETA1~98 X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=0922a7ec3d239f5249059511dd6b344ebdd0156a;p=postgres-xl.git Support additional synax for choosing table distribution strategy DISTRIBUTED BY (col) maps to DISTRIBUTE BY HASH (col) DISTRIBUTED RANDOMLY maps to DISTRIBUTE BY ROUNDROBIN --- diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 978dbfca52..8d272573c0 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -580,7 +580,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); */ /* ordinary key words in alphabetical order */ -/* PGXC - added DISTRIBUTE, DIRECT, COORDINATOR, CLEAN, NODE, BARRIER */ +/* PGXC - added DISTRIBUTE, DISTRIBUTED, RANDOMLY, DIRECT, COORDINATOR, CLEAN, NODE, BARRIER */ %token ABORT_P ABSOLUTE_P ACCESS ACTION ADD_P ADMIN AFTER AGGREGATE ALL ALSO ALTER ALWAYS ANALYSE ANALYZE AND ANY ARRAY AS ASC ASSERTION ASSIGNMENT ASYMMETRIC AT ATTRIBUTE AUTHORIZATION @@ -600,7 +600,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); DATA_P DATABASE DAY_P DEALLOCATE DEC DECIMAL_P DECLARE DEFAULT DEFAULTS DEFERRABLE DEFERRED DEFINER DELETE_P DELIMITER DELIMITERS DESC /* PGXC_BEGIN */ - DICTIONARY DIRECT DISABLE_P DISCARD DISTINCT DISTRIBUTE DO DOCUMENT_P DOMAIN_P DOUBLE_P + DICTIONARY DIRECT DISABLE_P DISCARD DISTINCT DISTRIBUTE DISTRIBUTED DO DOCUMENT_P DOMAIN_P DOUBLE_P /* PGXC_END */ DROP @@ -645,7 +645,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); QUOTE - RANGE READ REAL REASSIGN RECHECK RECURSIVE REF REFERENCES REFRESH REINDEX + RANDOMLY RANGE READ REAL REASSIGN RECHECK RECURSIVE REF REFERENCES REFRESH REINDEX RELATIVE_P RELEASE RENAME REPEATABLE REPLACE REPLICA RESET RESTART RESTRICT RETURNING RETURNS REVOKE RIGHT ROLE ROLLBACK ROLLUP ROW ROWS RULE @@ -3597,6 +3597,20 @@ OptDistributeByInternal: DISTRIBUTE BY OptDistributeType '(' name ')' n->colname = NULL; $$ = n; } + | DISTRIBUTED BY '(' name ')' + { + DistributeBy *n = makeNode(DistributeBy); + n->disttype = DISTTYPE_HASH; + n->colname = $4; + $$ = n; + } + | DISTRIBUTED RANDOMLY + { + DistributeBy *n = makeNode(DistributeBy); + n->disttype = DISTTYPE_ROUNDROBIN; + n->colname = NULL; + $$ = n; + } ; OptSubCluster: OptSubClusterInternal { $$ = $1; } @@ -14058,7 +14072,7 @@ ColLabel: IDENT { $$ = $1; } /* "Unreserved" keywords --- available for use as any kind of name. */ -/* PGXC - added DISTRIBUTE, DIRECT, COORDINATOR, CLEAN, NODE, BARRIER */ +/* PGXC - added DISTRIBUTE, DISTRIBUTED, RANDOMLY, DIRECT, COORDINATOR, CLEAN, NODE, BARRIER */ unreserved_keyword: ABORT_P | ABSOLUTE_P @@ -14130,6 +14144,7 @@ unreserved_keyword: | DISCARD /* PGXC_BEGIN */ | DISTRIBUTE + | DISTRIBUTED /* PGXC_END */ | DOCUMENT_P | DOMAIN_P @@ -14248,6 +14263,9 @@ unreserved_keyword: | PROCEDURE | PROGRAM | QUOTE +/* PGXC_BEGIN */ + | RANDOMLY +/* PGXC_END */ | RANGE | READ | REASSIGN diff --git a/src/include/parser/kwlist.h b/src/include/parser/kwlist.h index f4f00642cc..ec5c880c91 100644 --- a/src/include/parser/kwlist.h +++ b/src/include/parser/kwlist.h @@ -141,6 +141,7 @@ PG_KEYWORD("discard", DISCARD, UNRESERVED_KEYWORD) PG_KEYWORD("distinct", DISTINCT, RESERVED_KEYWORD) #ifdef PGXC PG_KEYWORD("distribute", DISTRIBUTE, UNRESERVED_KEYWORD) +PG_KEYWORD("distributed", DISTRIBUTED, UNRESERVED_KEYWORD) #endif PG_KEYWORD("do", DO, RESERVED_KEYWORD) PG_KEYWORD("document", DOCUMENT_P, UNRESERVED_KEYWORD) @@ -323,6 +324,9 @@ PG_KEYWORD("procedural", PROCEDURAL, UNRESERVED_KEYWORD) PG_KEYWORD("procedure", PROCEDURE, UNRESERVED_KEYWORD) PG_KEYWORD("program", PROGRAM, UNRESERVED_KEYWORD) PG_KEYWORD("quote", QUOTE, UNRESERVED_KEYWORD) +#ifdef PGXC +PG_KEYWORD("randomly", RANDOMLY, UNRESERVED_KEYWORD) +#endif PG_KEYWORD("range", RANGE, UNRESERVED_KEYWORD) PG_KEYWORD("read", READ, UNRESERVED_KEYWORD) PG_KEYWORD("real", REAL, COL_NAME_KEYWORD)