- C Merge\s3.12.0\schanges.
- D 2016-03-29T10:36:07.964
- F Makefile.in f53429fb2f313c099283659d0df6f20f932c861f
-C Remove\squotes\sfrom\sidentifiers\sused\sas\sdatatype\snames\sin\sa\sCREATE\sTABLE\nstatement.\s\sFix\sfor\sticket\s[7d7525cb01b68]
-D 2016-04-18T15:46:14.499
++C Merge\sall\srecent\senhancements\sfrom\strunk.
++D 2016-04-20T12:16:05.997
+ F Makefile.in eba680121821b8a60940a81454316f47a341487a
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
- F Makefile.msc df0bf9ff7f8b3f4dd9fb4cc43f92fe58f6ec5c66
+ F Makefile.msc 71b8b16cf9393f68e2e2035486ca104872558836
F README.md 8ecc12493ff9f820cdea6520a9016001cb2e59b7
- F VERSION c6b1f51809551d60ad001e6d87cf3ab2c7f54b6f
+ F VERSION 5d234da9b5dae329fab75ff75884cfe0a9cb3fda
F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90
F src/backup.c f60f0aa55d25d853ffde53d0b0370a7bb7ee41ce
F src/bitvec.c 3ee4c8b2c94ed3a7377256e18199e6ff5cf33f63
F src/btmutex.c bc87dd3b062cc26edfe79918de2200ccb8d41e73
- F src/btree.c 108728aecaaa1e5a2ff235e56f94a1bab8fb654b
-F src/btree.c 3ae6aea66cc4e13d30162ff0d0d43c7088e34abf
-F src/btree.h a5008b9afe56e8e54ade6c436a910f112defcca9
-F src/btreeInt.h c18b7d2a3494695133e4e60ee36061d37f45d9a5
-F src/build.c 42e8ee74dfa3a4b99bfb2c201f8a66ab50688d95
++F src/btree.c 6deeeeffaf9d35ba847ff6953ad76fc19e69d27d
+F src/btree.h 248919b5863d041e3931702f922bae62cf613004
+F src/btreeInt.h ca40607c2c9d4b4b7ded98e3d707b15c2f17f1bf
- F src/build.c 745020bd3d170e2a39df513d3f7ca8fb0f24f633
++F src/build.c 034b1b7c3d2c604a5f50d7527de1462b90d25112
F src/callback.c 2e76147783386374bf01b227f752c81ec872d730
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
F src/ctime.c 60e135af364d777a9ab41c97e5e89cd224da6198
F src/mutex_unix.c 27bb6cc49485ee46711a6580ab7b3f1402211d23
F src/mutex_w32.c 5e6fe1c298fb5a8a15aaed4161d5759311431c17
F src/notify.c 9711a7575036f0d3040ba61bc6e217f13a9888e7
- F src/os.c ca10edb445ad2c5fdc7285b49d72bcdf261fa23e
- F src/os.h 91ff889115ecd01f436d3611f7f5ea4dc12d92f1
+ F src/os.c 4d83917f072ad958fba9235136fa2ed43df47905
+ F src/os.h 8e976e59eb4ca1c0fca6d35ee803e38951cb0343
F src/os_common.h b2f4707a603e36811d9b1a13278bffd757857b85
F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa
- F src/os_unix.c b1ccb273771f41dbdbe0ba7c1ad63c38ad5972ec
- F src/os_win.c ff870d89f4cb088a04cbf5ea0cbd9ff1b089ff4a
+ F src/os_unix.c d0b41a47eb5f0dc00e423a1723aadeab0e78c85f
+ F src/os_win.c b169437dff859e308b3726594094a2f8ca922941
F src/os_win.h eb7a47aa17b26b77eb97e4823f20a00b8bda12ca
-F src/pager.c 38718a019ca762ba4f6795425d5a54db70d1790d
-F src/pager.h 329bdf078a4e0a3b35084534d58625d21fd03681
-F src/parse.y 10eb2f3fb62341291528c7984498054731f9d31e
+F src/pager.c 476884ce8d8e845daf88f1b12b8ca446bac5fdc5
- F src/pager.h bb26afd6fa33f684832895ede771f6459e513e5a
- F src/parse.y a74adac187a88fb949739aae203939241c06e62b
++F src/pager.h 6656436178c295d0668520739118e71a46163b8e
++F src/parse.y 2e1d371f99535ff29d1cd85052aa11cc636e21c8
F src/pcache.c 647bb53a86b7bbcf55ad88089b3ea5a9170b90df
F src/pcache.h 4d0ccaad264d360981ec5e6a2b596d6e85242545
F src/pcache1.c c40cdb93586e21b5dd826b5e671240bd91c26b05
F src/random.c ba2679f80ec82c4190062d756f22d0c358180696
F src/resolve.c b8f7174e5f8c33c44ded3a25a973d0bb89228c20
F src/rowset.c 9fe4b3ad7cc00944386bb600233d8f523de07a6e
- F src/select.c 7849cee0a01952a9c93cd28989daedfa57731143
- F src/shell.c 5e0ab1e708dc294330ccd8230536e1801f60822e
- F src/sqlite.h.in e877f141b15ef68ef28f84714e69d7234f9a071e
+ F src/select.c 30217121bdf6b587462150b8ee9e1467f7a6036b
+ F src/shell.c 14ff7f660530a52b117d110ba3390b7b2eb719b6
+ F src/sqlite.h.in 64eb70a3b309751bebf73a5552a51244f68f0ea5
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
F src/sqlite3ext.h 98f72cbfe00169c39089115427d06ea05fe4b4a2
- F src/sqliteInt.h d5699c8422fe250ff96696ea3f468cec1faad39d
-F src/sqliteInt.h 49cd2b5cd07cca7c462608540cb6dfa8ab03ba89
++F src/sqliteInt.h 0d9f22432cf553bab15e25cf168b57d93396922b
F src/sqliteLimit.h c0373387c287c8d0932510b5547ecde31b5da247
F src/status.c 70912d7be68e9e2dbc4010c93d344af61d4c59ba
F src/table.c 5226df15ab9179b9ed558d89575ea0ce37b03fc9
F src/test_bestindex.c 29af3cc3b963ffe5760c85d142b9b3e5302c1e3d
F src/test_blob.c b2551a9b5573232db5f66f292307c37067937239
F src/test_btree.c 2e9978eca99a9a4bfa8cae949efb00886860a64f
- F src/test_config.c 794367cf23e2532dd9b425486c2c6a17ac133d31
-F src/test_config.c 7003f6f35134de6f19c6588f44783e43390ea277
++F src/test_config.c 5165f79b3aea5305627ac36dd7b9b5f124572da1
F src/test_demovfs.c 0de72c2c89551629f58486fde5734b7d90758852
- F src/test_devsym.c e7498904e72ba7491d142d5c83b476c4e76993bc
+ F src/test_devsym.c 7e73009d5297b603c11c66d7c7d6723d4b5c73e1
F src/test_fs.c f10f840ca4f8c72e4837908bd8347ac4bcab074b
F src/test_func.c 37453d346cfcf118774efd5bf6187f7e6a7e3254
F src/test_hexio.c abfdecb6fa58c354623978efceb088ca18e379cd
F src/test_windirent.h b12055cab6227f7be10f5c19296f67c60cc5e2a5
F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
- F src/tokenize.c 3d338cdd00d916ce8a05c397001d64ed58e6fe1c
+ F src/tokenize.c 3b29883b0ce4a6c6f643965b66b5ca6613178e59
F src/treeview.c e4b41a37530a191579d3c53142cc44ee2eb99373
F src/trigger.c e14840ee0c3e549e758ec9bf3e4146e166002280
- F src/update.c 56b3db7edff0110360a12b76af97c39ebe3ea8b8
+ F src/update.c 3e67ab3c0814635f355fb1f8ab010a2b9e016e7d
F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c
- F src/util.c 8873d696c9ccc4206058c402e09e101f1b81561a
+ F src/util.c 187a0a2aaa3c5d2ccd2ab0143b2fd9e86d6bc816
-F src/vacuum.c feb1eabb20987983d9350cad98299b21fa811f52
-F src/vdbe.c d3843a66d74a7696477ee5141e5eb9a7e5e2401c
+F src/vacuum.c c1a94413f8fa9d9b2cbe3af9a89377f777be676c
- F src/vdbe.c ada5fe38c19447b270548c7b3dca086effa7eedc
- F src/vdbe.h 6f44193e7be52fd5f7c308175a936555b1e6b101
- F src/vdbeInt.h f88d3115e9bde33b01d81f0dd26d8dd51f995991
- F src/vdbeapi.c 95b1f8e527240a18a9aea41a655b013bf07a7009
- F src/vdbeaux.c 8bf5783ff0c39720252120bd258e169e14069c29
- F src/vdbeblob.c 3b570b730109e8f653d9d2081649f6e7015113db
- F src/vdbemem.c fe76c1f866de362d9b8332e59d74aa44f6560d69
- F src/vdbesort.c 307460bfa4de4d1c3901fcd42089159131e34062
++F src/vdbe.c 226c51cced9aa6f66748f626413d3f0348f2fcb8
+ F src/vdbe.h 5591b5add447096e31288b5a0a78ec5d7b5c5170
+ F src/vdbeInt.h ddb157974436d87652de7dc641f7191496d9a8cd
+ F src/vdbeapi.c ba85b78fe08dc4a9ce747e62c89a2b4a4547e74c
-F src/vdbeaux.c ace1875da40b7185e604586768d5ac90de7e4f7f
++F src/vdbeaux.c 5234052cc3a3a7ea9b7e4bd05f6f827168e6b99d
+ F src/vdbeblob.c c9f2f494b911c6fa34efd9803f0a10807da80f77
+ F src/vdbemem.c 5cfef60e60e19cab6275d1b975bf4c791d575beb
+ F src/vdbesort.c 0a8f98366ae794442e6d1ef71d9553226d885d19
F src/vdbetrace.c f75c5455d8cf389ef86a8bfdfd3177e0e3692484
F src/vtab.c 23b6cdfa996152d43b390504ed4a942c8caf3a00
F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
- F src/wal.c 12931b1b6d91651c932b0a80571c649bb862a187
-F src/wal.c 4db22ed7e77bcf672b1a685d6ddeffba8d5be302
-F src/wal.h 2f7c831cf3b071fa548bf2d5cac640846a7ff19c
++F src/wal.c 69cbc05af0e81321e12b3f9c2f13c35b4a936b37
+F src/wal.h 327e94c3e366154f52a8d9be9be0ea790cc4e08c
F src/walker.c 0f142b5bd3ed2041fc52d773880748b212e63354
- F src/where.c fe7925faafbe9a458972035c0bb4753d672f04ed
- F src/whereInt.h 93297d56edd137b7ea004490690fb6e2ce028a34
- F src/wherecode.c 863aedf086131743763c1960637fde904eadc442
- F src/whereexpr.c fb87944b1254234e5bba671aaf6dee476241506a
+ F src/where.c bae50f2f18f9e8584549a77363858623b07e4915
+ F src/whereInt.h 7de94b751f088fe3fdc8cc04a491376f0900a059
+ F src/wherecode.c 8fdad9fbba723df1c1e8d07e7ea8507572040340
+ F src/whereexpr.c eacc0e60d029a082b4fc0cc42ea98544add1319e
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
F tool/lemon.c cfbfe061a4b2766512f6b484882eee2c86a14506
F tool/lempar.c 404ea3dc27dbeed343f0e61b1d36e97b9f5f0fb6
F tool/loadfts.c c3c64e4d5e90e8ba41159232c2189dba4be7b862
- F tool/logest.c eef612f8adf4d0993dafed0416064cf50d5d33c6
+ F tool/logest.c 11346aa019e2e77a00902aa7d0cabd27bd2e8cca
F tool/mkautoconfamal.sh e855df211ecbcc7131dee817110ff386cfb112f7
-F tool/mkkeywordhash.c f7f3b342211ac6a14258b9726d5b97cf4f548f22
+F tool/mkkeywordhash.c f5ecfd09b56b8badc644554ed38c86056152b893
F tool/mkmsvcmin.tcl 2f12f7fa8858bbe61cf81820a2da96c79ed1ca8d
F tool/mkopcodec.tcl d1b6362bd3aa80d5520d4d6f3765badf01f6c43c
- F tool/mkopcodeh.tcl 385c62d78c38b2d92146dcb5abd319dbbc33506d
+ F tool/mkopcodeh.tcl a01d2c1d8a6205b03fc635adf3735b4c523befd3
F tool/mkopts.tcl 66ac10d240cc6e86abd37dc908d50382f84ff46e
F tool/mkpragmatab.tcl f0d5bb266d1d388cf86fce5ba01a891e95d72d41
F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
- P 8ee7d346c1d9beedd02bf11d0a45810985a45480 e9bb4cf40f4971974a74468ef922bdee481c988b
- R f0b22467176ee18d86a13e1b0279a8ea
-P 3a7d72986fabe9434ff5bd02c93169314f072b23
-R 761e3cafabae5f2f003bf21bdc2befe8
++P d7381efff47c0a2f307478f196d03df7534f19e3 eba27d4d17a76884292667d570d542e580ee3e77
++R b2d94baa5aa70083709fce61087ef618
U drh
- Z db9cdcc9060a4c05b248d7435b13e406
-Z 8a9e64fdc933327d2408de0f01f55efc
++Z 09ace714760db63cbd8099bd8f9784df
trans_opt ::= TRANSACTION nm.
%type transtype {int}
transtype(A) ::= . {A = TK_DEFERRED;}
- transtype(A) ::= DEFERRED(X). {A = @X;}
- transtype(A) ::= IMMEDIATE(X). {A = @X;}
+ transtype(A) ::= DEFERRED(X). {A = @X; /*A-overwrites-X*/}
+ transtype(A) ::= IMMEDIATE(X). {A = @X; /*A-overwrites-X*/}
-transtype(A) ::= EXCLUSIVE(X). {A = @X; /*A-overwrites-X*/}
+transtype(A) ::= ID(X). {
+ Token *p = &X;
+ if( p->n==9 && sqlite3_strnicmp(p->z,"exclusive",9)==0 ){
+ A = TK_EXCLUSIVE;
+ }else if( p->n==10 && sqlite3_strnicmp(p->z,"concurrent",10)==0 ){
+ A = TK_CONCURRENT; /*A-overwrites-X*/
+ }else{
+ parserSyntaxError(pParse, p);
+ }
+}
cmd ::= COMMIT trans_opt. {sqlite3CommitTransaction(pParse);}
cmd ::= END trans_opt. {sqlite3CommitTransaction(pParse);}
cmd ::= ROLLBACK trans_opt. {sqlite3RollbackTransaction(pParse);}
%left COLLATE.
%right BITNOT.
- CONFLICT DATABASE DEFERRED DESC DETACH EACH END EXCLUSIVE EXPLAIN FAIL FOR
+ // An IDENTIFIER can be a generic identifier, or one of several
+ // keywords. Any non-standard keyword can also be an identifier.
+ //
+ %token_class id ID|INDEXED.
+
+ // The following directive causes tokens ABORT, AFTER, ASC, etc. to
+ // fallback to ID if they will not parse as their original value.
+ // This obviates the need for the "id" nonterminal.
+ //
+ %fallback ID
+ ABORT ACTION AFTER ANALYZE ASC ATTACH BEFORE BEGIN BY CASCADE CAST COLUMNKW
++ CONFLICT DATABASE DEFERRED DESC DETACH EACH END EXPLAIN FAIL FOR
+ IGNORE IMMEDIATE INITIALLY INSTEAD LIKE_KW MATCH NO PLAN
+ QUERY KEY OF OFFSET PRAGMA RAISE RECURSIVE RELEASE REPLACE RESTRICT ROW
+ ROLLBACK SAVEPOINT TEMP TRIGGER VACUUM VIEW VIRTUAL WITH WITHOUT
+ %ifdef SQLITE_OMIT_COMPOUND_SELECT
+ EXCEPT INTERSECT UNION
+ %endif SQLITE_OMIT_COMPOUND_SELECT
+ REINDEX RENAME CTIME_KW IF
+ .
+ %wildcard ANY.
+
+
// And "ids" is an identifer-or-string.
//
%token_class ids ID|STRING.
/* 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);
+ parserSyntaxError(pParse, &t);
A.pExpr = 0;
}else{
A.pExpr = sqlite3PExpr(pParse, TK_REGISTER, 0, 0, &t);