]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Modifications to parse.y to better support backwards compatibility for the
authordan <dan@noemail.net>
Thu, 28 Jun 2018 20:05:04 +0000 (20:05 +0000)
committerdan <dan@noemail.net>
Thu, 28 Jun 2018 20:05:04 +0000 (20:05 +0000)
"window" keyword.

FossilOrigin-Name: 7c4b879bdb10f30260f0fb28fcb559ab0949865d10f4ff2cf13834a326198998

manifest
manifest.uuid
src/parse.y

index fcb3dd292f7fb152571586f3e535acefacb4c219..69ff0aa49e31a91b422243162ba9ae1b74d3d17d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Introduce\sthe\sconcept\sof\s"weak\sfallback"\sin\sthe\sparser.\s\sA\sweak\sfallback\nonly\soccurs\sif\sa\ssyntax\serror\swould\sresult\sotherwise.
-D 2018-06-28T03:38:49.164
+C Modifications\sto\sparse.y\sto\sbetter\ssupport\sbackwards\scompatibility\sfor\sthe\n"window"\skeyword.
+D 2018-06-28T20:05:04.235
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in 0a3a6c81e6fcb969ff9106e882f0a08547014ba463cb6beca4c4efaecc924ee6
@@ -484,7 +484,7 @@ F src/os_win.c ac29c25cde4cfb4adacc59cdec4aa45698ca0e29164ea127859585ccd9faa354
 F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
 F src/pager.c 1bb6a57fa0465296a4d6109a1a64610a0e7adde1f3acf3ef539a9d972908ce8f
 F src/pager.h c571b064df842ec8f2e90855dead9acf4cbe0d1b2c05afe0ef0d0145f7fd0388
-F src/parse.y 9517b50d35e5e495a241541b49f5512b8e9bcbac3fbfdc659215555efa5c4f40
+F src/parse.y 9b5eb0e61e615832647a7a77f9e675f1da536a133426327e6812316d83f275e7
 F src/pcache.c 135ef0bc6fb2e3b7178d49ab5c9176254c8a691832c1bceb1156b2fbdd0869bd
 F src/pcache.h 072f94d29281cffd99e46c1539849f248c4b56ae7684c1f36626797fee375170
 F src/pcache1.c 716975564c15eb6679e97f734cec1bfd6c16ac3d4010f05f1f8e509fc7d19880
@@ -1743,10 +1743,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 4383cb68a1241768ddb3f180f8cbb9ea1638f8806210b10aac1384b8a7ecdca2
-R 341c5aa0d73cc2ef03cecacf95853224
-T *branch * weak-fallback
-T *sym-weak-fallback *
-T -sym-exp-window-functions *
-U drh
-Z 196c50a9819aa6d1d98f4a403b164e6b
+P c41d7079fb63831bd2f009b64cbf5a423e8119e6b841bfd9bd5a2d85fba3b142
+R 4e74da2117f8f8cceb7bb5b15336dc74
+U dan
+Z e15fe89d6d9f69693116ca5d610ea195
index 6b74c95f01ae2250068e44cc7ffb50f1410240a5..51740e4ee8b93a092a6dd6ab9d1993f741775635 100644 (file)
@@ -1 +1 @@
-c41d7079fb63831bd2f009b64cbf5a423e8119e6b841bfd9bd5a2d85fba3b142
\ No newline at end of file
+7c4b879bdb10f30260f0fb28fcb559ab0949865d10f4ff2cf13834a326198998
\ No newline at end of file
index 02989c28a25026e918736709278495e3d353e634..1faa9104a1f34c966493484ff7d94d213fb882d5 100644 (file)
@@ -217,8 +217,8 @@ columnname(A) ::= nm(A) typetoken(Y). {sqlite3AddColumn(pParse,&A,&Y);}
   EXCEPT INTERSECT UNION
 %endif SQLITE_OMIT_COMPOUND_SELECT
 %ifndef SQLITE_OMIT_WINDOWFUNC
-  CURRENT FILTER FOLLOWING ?OVER PARTITION 
-  PRECEDING RANGE UNBOUNDED ?WINDOW 
+  CURRENT FILTER FOLLOWING OVER PARTITION 
+  PRECEDING RANGE UNBOUNDED 
 %endif SQLITE_OMIT_WINDOWFUNC
   REINDEX RENAME CTIME_KW IF
   .
@@ -257,7 +257,7 @@ columnname(A) ::= nm(A) typetoken(Y). {sqlite3AddColumn(pParse,&A,&Y);}
 
 // And "ids" is an identifer-or-string.
 //
-%token_class ids  ID|STRING.
+%token_class ids ID|STRING.
 
 // The name of a column or table can be any of the following:
 //
@@ -265,6 +265,7 @@ columnname(A) ::= nm(A) typetoken(Y). {sqlite3AddColumn(pParse,&A,&Y);}
 nm(A) ::= id(A).
 nm(A) ::= STRING(A).
 nm(A) ::= JOIN_KW(A).
+nm(A) ::= WINDOW(A).
 
 // A typetoken is really zero or more tokens that form a type name such
 // as can be found after the column name in a CREATE TABLE statement.
@@ -280,8 +281,8 @@ typetoken(A) ::= typename(A) LP signed COMMA signed RP(Y). {
   A.n = (int)(&Y.z[Y.n] - A.z);
 }
 %type typename {Token}
-typename(A) ::= ids(A).
-typename(A) ::= typename(A) ids(Y). {A.n=Y.n+(int)(Y.z-A.z);}
+typename(A) ::= nm(A).
+typename(A) ::= typename(A) nm(Y). {A.n=Y.n+(int)(Y.z-A.z);}
 signed ::= plus_num.
 signed ::= minus_num.
 
@@ -342,7 +343,7 @@ ccons ::= CHECK LP expr(X) RP.   {sqlite3AddCheckConstraint(pParse,X);}
 ccons ::= REFERENCES nm(T) eidlist_opt(TA) refargs(R).
                                  {sqlite3CreateForeignKey(pParse,0,&T,TA,R);}
 ccons ::= defer_subclause(D).    {sqlite3DeferForeignKey(pParse,D);}
-ccons ::= COLLATE ids(C).        {sqlite3AddCollateType(pParse, &C);}
+ccons ::= COLLATE nm(C).        {sqlite3AddCollateType(pParse, &C);}
 
 // The optional AUTOINCREMENT keyword
 %type autoinc {int}
@@ -988,6 +989,7 @@ expr(A) ::= nm(X) DOT nm(Y) DOT nm(Z). {
 }
 term(A) ::= NULL|FLOAT|BLOB(X). {A=tokenExpr(pParse,@X,X); /*A-overwrites-X*/}
 term(A) ::= STRING(X).          {A=tokenExpr(pParse,@X,X); /*A-overwrites-X*/}
+term(A) ::= WINDOW(X).          {A=tokenExpr(pParse,TK_ID,X);/*A-overwrites-X*/}
 term(A) ::= INTEGER(X). {
   A = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &X, 1);
 }
@@ -1011,7 +1013,7 @@ expr(A) ::= VARIABLE(X).     {
     }
   }
 }
-expr(A) ::= expr(A) COLLATE ids(C). {
+expr(A) ::= expr(A) COLLATE nm(C). {
   A = sqlite3ExprAddCollateToken(pParse, A, &C, 1);
 }
 %ifndef SQLITE_OMIT_CAST
@@ -1020,7 +1022,7 @@ expr(A) ::= CAST LP expr(E) AS typetoken(T) RP. {
   sqlite3ExprAttachSubtrees(pParse->db, A, E, 0);
 }
 %endif  SQLITE_OMIT_CAST
-expr(A) ::= id(X) LP distinct(D) exprlist(Y) RP 
+expr(A) ::= nm(X) LP distinct(D) exprlist(Y) RP 
 %ifndef SQLITE_OMIT_WINDOWFUNC
   over_opt(Z)
 %endif
@@ -1034,7 +1036,7 @@ expr(A) ::= id(X) LP distinct(D) exprlist(Y) RP
     A->flags |= EP_Distinct;
   }
 }
-expr(A) ::= id(X) LP STAR RP
+expr(A) ::= nm(X) LP STAR RP
 %ifndef SQLITE_OMIT_WINDOWFUNC
   over_opt(Z)
 %endif
@@ -1443,7 +1445,7 @@ eidlist(A) ::= nm(Y) collate(C) sortorder(Z). {
 
 %type collate {int}
 collate(C) ::= .              {C = 0;}
-collate(C) ::= COLLATE ids.   {C = 1;}
+collate(C) ::= COLLATE nm.    {C = 1;}
 
 
 ///////////////////////////// The DROP INDEX command /////////////////////////