]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Small size reduction and performance improvement in the parser.
authordrh <drh@noemail.net>
Mon, 11 Apr 2016 01:26:31 +0000 (01:26 +0000)
committerdrh <drh@noemail.net>
Mon, 11 Apr 2016 01:26:31 +0000 (01:26 +0000)
FossilOrigin-Name: 16df71284bf081c8b3d3aa57c129a07067ddbed3

manifest
manifest.uuid
src/parse.y

index dc13b3eb8a5580e04fbed81db4d8757b41f5681d..f239120af54e5ba5282eda28bd728b5a73ee0fc6 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Factor\sout\sthe\scommon\soperation\sof\ssetting\sthe\sExpr.x.pSelect\sfield\sof\san\nExpr\sobject\sinto\sa\ssubroutine.
-D 2016-04-11T01:06:47.056
+C Small\ssize\sreduction\sand\sperformance\simprovement\sin\sthe\sparser.
+D 2016-04-11T01:26:31.547
 F Makefile.in eba680121821b8a60940a81454316f47a341487a
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 1f123a0757f6f04f0341accb46457e116817159a
@@ -364,7 +364,7 @@ F src/os_win.c b3ba9573d8d893e70a6a8015bbee572ecf7ffbef
 F src/os_win.h eb7a47aa17b26b77eb97e4823f20a00b8bda12ca
 F src/pager.c 38718a019ca762ba4f6795425d5a54db70d1790d
 F src/pager.h e1d38a2f14849e219df0f91f8323504d134c8a56
-F src/parse.y b6fcbc84ea5a278ab7f1d12ce6eeff6bfa4024d3
+F src/parse.y 55670f9b802b65fa7b4c5bee1c3f1df3b7fab17b
 F src/pcache.c 647bb53a86b7bbcf55ad88089b3ea5a9170b90df
 F src/pcache.h 4d0ccaad264d360981ec5e6a2b596d6e85242545
 F src/pcache1.c c40cdb93586e21b5dd826b5e671240bd91c26b05
@@ -1482,7 +1482,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 6c56b3a04778bc62ca50307ad838dd301cd91ac2
-R 08b902f57778a5f41e0cd6430d22ec7f
+P 6a5cceee486c5e3625556e4c7076ff90e9d8fa43
+R 760d086185281b3360f3c0b7a4fcef9f
 U drh
-Z 9c3d824161c7c538f7604747bea88424
+Z 39bdfd823e1ede2ba92d243629273ed6
index a1179c31d947ffde970c8011870ba7aae84b5007..1409067143a573fcd43a755ce72a7ecc4515ea28 100644 (file)
@@ -1 +1 @@
-6a5cceee486c5e3625556e4c7076ff90e9d8fa43
\ No newline at end of file
+16df71284bf081c8b3d3aa57c129a07067ddbed3
\ No newline at end of file
index 5704fffb7e4835f880764ace2438cbbf6c8f637d..01a738ff8f4ac9ab019169d231498734ffb983ee 100644 (file)
@@ -871,11 +871,15 @@ expr(A) ::= nm(X) DOT nm(Y) DOT nm(Z). {
 term(A) ::= INTEGER|FLOAT|BLOB(X). {spanExpr(&A,pParse,@X,X);/*A-overwrites-X*/}
 term(A) ::= STRING(X).             {spanExpr(&A,pParse,@X,X);/*A-overwrites-X*/}
 expr(A) ::= VARIABLE(X).     {
-  Token t = X; /*A-overwrites-X*/
-  if( t.n>=2 && t.z[0]=='#' && sqlite3Isdigit(t.z[1]) ){
+  if( X.z[0]!='#' ){
+    spanExpr(&A, pParse, TK_VARIABLE, X);
+    sqlite3ExprAssignVarNumber(pParse, A.pExpr);
+  }else{
     /* When doing a nested parse, one can include terms in an expression
     ** that look like this:   #1 #2 ...  These terms refer to registers
     ** in the virtual machine.  #N is the N-th register. */
+    Token t = X; /*A-overwrites-X*/
+    assert( t.n>=2 );
     spanSet(&A, &t, &t);
     if( pParse->nested==0 ){
       sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
@@ -884,9 +888,6 @@ expr(A) ::= VARIABLE(X).     {
       A.pExpr = sqlite3PExpr(pParse, TK_REGISTER, 0, 0, &t);
       if( A.pExpr ) sqlite3GetInt32(&t.z[1], &A.pExpr->iTable);
     }
-  }else{
-    spanExpr(&A, pParse, TK_VARIABLE, t);
-    sqlite3ExprAssignVarNumber(pParse, A.pExpr);
   }
 }
 expr(A) ::= expr(A) COLLATE ids(C). {