From: drh <> Date: Thu, 4 Dec 2025 11:59:11 +0000 (+0000) Subject: Performance optimization in the language grammar. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fa7abfdf0b58e5a5f72b19c59a132d2af18114e3;p=thirdparty%2Fsqlite.git Performance optimization in the language grammar. FossilOrigin-Name: 1c1ad5e39cb379250f10db5ef61f42e0bd56ace308f8e41f9bf5e08d92075521 --- diff --git a/manifest b/manifest index 1dfad5d679..8ec797cb90 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Merge\sall\sthe\slatest\strunk\senhancements\sand\sfixes\sinto\sthe\stemp-trigger-refs\nbranch. -D 2025-12-04T11:20:01.398 +C Performance\soptimization\sin\sthe\slanguage\sgrammar. +D 2025-12-04T11:59:11.518 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -726,7 +726,7 @@ F src/os_win.c a89b501fc195085c7d6c9eec7f5bd782625e94bb2a96b000f4d009703df1083f F src/os_win.h 4c247cdb6d407c75186c94a1e84d5a22cbae4adcec93fcae8d2bc1f956fd1f19 F src/pager.c a81461de271ac4886ad75b7ca2cca8157a48635820c4646cd2714acdc2c17e5f F src/pager.h 6137149346e6c8a3ddc1eeb40aee46381e9bc8b0fcc6dda8a1efde993c2275b8 -F src/parse.y 015375decff21fa3be5688189d58988458db8e3ccb821041b0fb7de4cd2fcf30 +F src/parse.y 4a23bf1437e2f0a6470a40cbe79b8dd6a52292a0a7ecd3b6268d170b0cf2f802 F src/pcache.c 588cc3c5ccaaadde689ed35ce5c5c891a1f7b1f4d1f56f6cf0143b74d8ee6484 F src/pcache.h 1497ce1b823cf00094bb0cf3bac37b345937e6f910890c626b16512316d3abf5 F src/pcache1.c 131ca0daf4e66b4608d2945ae76d6ed90de3f60539afbd5ef9ec65667a5f2fcd @@ -2184,8 +2184,8 @@ F tool/version-info.c 33d0390ef484b3b1cb685d59362be891ea162123cea181cb8e6d2cf6dd F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh d924598cf2f55a4ecbc2aeb055c10bd5f48114793e7ba25f9585435da29e7e98 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 3223fee0b93bbbe277b955a98c13bb583ded78109f8e601c9ec0a7bd3749fd55 aef5397569d65d2971367b0278fe3a6f42544cf771572e7d046e2472f052364d -R 7195c1541663c387532db21aed885d33 +P 8e8a27c77aa0ea5891968231e13a8caeade48b817419bbf6eda18ad217f1df63 +R 8de7f794171ed7df662770c0396beb92 U drh -Z 19135e17dd3bb54a10cd401bdceed81e +Z ada3aa3b66f39f347d273cddb2d5d232 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 4d8fccc6d1..2ee023f420 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -8e8a27c77aa0ea5891968231e13a8caeade48b817419bbf6eda18ad217f1df63 +1c1ad5e39cb379250f10db5ef61f42e0bd56ace308f8e41f9bf5e08d92075521 diff --git a/src/parse.y b/src/parse.y index a148171a95..67c24679ec 100644 --- a/src/parse.y +++ b/src/parse.y @@ -833,11 +833,35 @@ fullname(A) ::= nm(X) DOT nm(Y). { %type xfullname {SrcList*} %destructor xfullname {sqlite3SrcListDelete(pParse->db, $$);} -xfullname(A) ::= fullname(X). { A=X; } -xfullname(A) ::= fullname(X) AS nm(Z). { - X->a[0].zAlias = sqlite3NameFromToken(pParse->db, &Z); - A = X; +xfullname(A) ::= nm(X). { + A = sqlite3SrcListAppend(pParse,0,&X,0); + if( IN_RENAME_OBJECT && A ) sqlite3RenameTokenMap(pParse, A->a[0].zName, &X); +} +xfullname(A) ::= nm(X) DOT nm(Y). { + A = sqlite3SrcListAppend(pParse,0,&X,&Y); + if( IN_RENAME_OBJECT && A ) sqlite3RenameTokenMap(pParse, A->a[0].zName, &Y); } +xfullname(A) ::= nm(X) AS nm(Z). { + A = sqlite3SrcListAppend(pParse,0,&X,0); + if( A ){ + if( IN_RENAME_OBJECT ){ + sqlite3RenameTokenMap(pParse, A->a[0].zName, &X); + }else{ + A->a[0].zAlias = sqlite3NameFromToken(pParse->db, &Z); + } + } +} +xfullname(A) ::= nm(X) DOT nm(Y) AS nm(Z). { + A = sqlite3SrcListAppend(pParse,0,&X,&Y); + if( A ){ + if( IN_RENAME_OBJECT ){ + sqlite3RenameTokenMap(pParse, A->a[0].zName, &X); + }else{ + A->a[0].zAlias = sqlite3NameFromToken(pParse->db, &Z); + } + } +} + %type joinop {int} joinop(X) ::= COMMA|JOIN. { X = JT_INNER; }