Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit003fb02

Browse files
committed
base, conflict isnt solved yet
1 parent55c0da3 commit003fb02

File tree

2 files changed

+57
-2
lines changed

2 files changed

+57
-2
lines changed

‎src/backend/parser/gram.y

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ static void processCASbits(int cas_bits, int location, const char *constrType,
176176
bool *deferrable,bool *initdeferred,bool *not_valid,
177177
bool *no_inherit,core_yyscan_t yyscanner);
178178
static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
179+
static SelectStmt *makeElementSubselect(Node *of,constchar *aliasname,
180+
Node *clause,int location);
179181

180182
%}
181183

@@ -580,7 +582,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
580582
DEFERRABLE DEFERRED DEFINER DELETE_P DELIMITER DELIMITERS DESC
581583
DICTIONARY DISABLE_P DISCARD DISTINCT DO DOCUMENT_P DOMAIN_P DOUBLE_P DROP
582584

583-
EACH ELSE ENABLE_P ENCODING ENCRYPTED END_P ENUM_P ESCAPE EVENT EXCEPT
585+
EACHELEMENTELSE ENABLE_P ENCODING ENCRYPTED END_P ENUM_P ESCAPE EVENT EXCEPT
584586
EXCLUDE EXCLUDING EXCLUSIVE EXECUTE EXISTS EXPLAIN
585587
EXTENSION EXTERNAL EXTRACT
586588

@@ -624,7 +626,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
624626
RESET RESTART RESTRICT RETURNING RETURNS REVOKE RIGHT ROLE ROLLBACK ROLLUP
625627
ROW ROWS RULE
626628

627-
SAVEPOINT SCHEMA SCROLL SEARCH SECOND_P SECURITY SELECT SEQUENCE SEQUENCES
629+
SATISFIESSAVEPOINT SCHEMA SCROLL SEARCH SECOND_P SECURITY SELECT SEQUENCE SEQUENCES
628630
SERIALIZABLE SERVER SESSION SESSION_USER SET SETS SETOF SHARE SHOW
629631
SIMILAR SIMPLE SKIP SMALLINT SNAPSHOT SOME SQL_P STABLE STANDALONE_P START
630632
STATEMENT STATISTICS STDIN STDOUT STORAGE STRICT_P STRIP_P SUBSTRING
@@ -724,6 +726,8 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
724726
%leftJOINCROSSLEFTFULLRIGHTINNER_PNATURAL
725727
/* kluge to keep xml_whitespace_option from causing shift/reduce conflicts*/
726728
%rightPRESERVESTRIP_P
729+
%rightELEMENT
730+
%nonassocANY
727731

728732
%%
729733

@@ -12056,6 +12060,30 @@ c_expr:columnref{ $$ = $1; }
1205612060
g->location =@1;
1205712061
$$ = (Node *)g;
1205812062
}
12063+
|ANYELEMENTOFa_exprASColIdSATISFIES'('a_expr')'
12064+
{
12065+
SubLink*n = makeNode(SubLink);
12066+
12067+
n->subLinkType = EXISTS_SUBLINK;
12068+
n->subLinkId =0;
12069+
n->testexpr =NULL;
12070+
n->operName = NIL;
12071+
n->subselect = (Node*)makeElementSubselect($4,$6,$9,@1);
12072+
n->location =@1;
12073+
$$ = (Node *)n;
12074+
}
12075+
|EACHELEMENTOFa_exprASColIdSATISFIES'('a_expr')'
12076+
{
12077+
SubLink*n = makeNode(SubLink);
12078+
12079+
n->subLinkType = EXISTS_SUBLINK;
12080+
n->subLinkId =0;
12081+
n->testexpr =NULL;
12082+
n->operName = NIL;
12083+
n->subselect = (Node*)makeElementSubselect($4,$6, makeNotExpr($9,@1),@1);
12084+
n->location =@1;
12085+
$$ = makeNotExpr((Node *)n,@1);;
12086+
}
1205912087
;
1206012088

1206112089
func_application:func_name'('')'
@@ -13644,6 +13672,7 @@ unreserved_keyword:
1364413672
| DOUBLE_P
1364513673
| DROP
1364613674
| EACH
13675+
| ELEMENT
1364713676
| ENABLE_P
1364813677
| ENCODING
1364913678
| ENCRYPTED
@@ -13773,6 +13802,7 @@ unreserved_keyword:
1377313802
| ROLLUP
1377413803
| ROWS
1377513804
| RULE
13805+
| SATISFIES
1377613806
| SAVEPOINT
1377713807
| SCHEMA
1377813808
| SCROLL
@@ -14829,6 +14859,29 @@ makeRecursiveViewSelect(char *relname, List *aliases, Node *query)
1482914859
return (Node *) s;
1483014860
}
1483114861

14862+
static SelectStmt *
14863+
makeElementSubselect(Node *of, const char *aliasname, Node *clause, int location)
14864+
{
14865+
ResTarget *target = makeNode(ResTarget);
14866+
FuncCall*func_call;
14867+
RangeFunction*table_ref = makeNode(RangeFunction);
14868+
SelectStmt *subselect = makeNode(SelectStmt);
14869+
14870+
target->val = (Node*)makeIntConst(1, location);
14871+
target->location = location;
14872+
14873+
func_call = makeFuncCall(SystemFuncName("unnest"), list_make1(of), location);
14874+
14875+
table_ref->functions = list_make1(list_make2(func_call, NIL));
14876+
table_ref->alias = makeAlias(aliasname, NIL);
14877+
14878+
subselect->targetList = list_make1(target);
14879+
subselect->fromClause = list_make1(table_ref);/* unnest(of) as aliasname*/
14880+
subselect->whereClause = clause;
14881+
14882+
return subselect;
14883+
}
14884+
1483214885
/* parser_init()
1483314886
* Initialize to parse one query string
1483414887
*/

‎src/include/parser/kwlist.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ PG_KEYWORD("domain", DOMAIN_P, UNRESERVED_KEYWORD)
136136
PG_KEYWORD("double",DOUBLE_P,UNRESERVED_KEYWORD)
137137
PG_KEYWORD("drop",DROP,UNRESERVED_KEYWORD)
138138
PG_KEYWORD("each",EACH,UNRESERVED_KEYWORD)
139+
PG_KEYWORD("element",ELEMENT,UNRESERVED_KEYWORD)
139140
PG_KEYWORD("else",ELSE,RESERVED_KEYWORD)
140141
PG_KEYWORD("enable",ENABLE_P,UNRESERVED_KEYWORD)
141142
PG_KEYWORD("encoding",ENCODING,UNRESERVED_KEYWORD)
@@ -331,6 +332,7 @@ PG_KEYWORD("rollup", ROLLUP, UNRESERVED_KEYWORD)
331332
PG_KEYWORD("row",ROW,COL_NAME_KEYWORD)
332333
PG_KEYWORD("rows",ROWS,UNRESERVED_KEYWORD)
333334
PG_KEYWORD("rule",RULE,UNRESERVED_KEYWORD)
335+
PG_KEYWORD("satisfies",SATISFIES,UNRESERVED_KEYWORD)
334336
PG_KEYWORD("savepoint",SAVEPOINT,UNRESERVED_KEYWORD)
335337
PG_KEYWORD("schema",SCHEMA,UNRESERVED_KEYWORD)
336338
PG_KEYWORD("scroll",SCROLL,UNRESERVED_KEYWORD)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp