From 0e857739c491be91e4b0a1aa620178361aad6158 Mon Sep 17 00:00:00 2001 From: drh Date: Sat, 2 Jan 2010 03:21:35 +0000 Subject: [PATCH] Add a new sqlite3_test_control() verb that facilitates testing that all keywords are shown in the documentation. (Two keywords were found to be missing while testing the change.) FossilOrigin-Name: d3cdc4b12be7f1ed2249ad210482200868956d12 --- manifest | 22 +++++++++++----------- manifest.uuid | 2 +- src/main.c | 18 ++++++++++++++++++ src/sqlite.h.in | 3 ++- tool/mkkeywordhash.c | 1 + 5 files changed, 33 insertions(+), 13 deletions(-) diff --git a/manifest b/manifest index 6cf663c70e..11651bc354 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,8 @@ -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 -C Add\sevidence\smarks\sassociated\swith\sautoincrement. -D 2010-01-01T18:57:48 +C Add\sa\snew\ssqlite3_test_control()\sverb\sthat\sfacilitates\stesting\sthat\sall\nkeywords\sare\sshown\sin\sthe\sdocumentation.\s\s(Two\skeywords\swere\sfound\sto\nbe\smissing\swhile\stesting\sthe\schange.) +D 2010-01-02T03:21:35 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in c5827ead754ab32b9585487177c93bb00b9497b3 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -132,7 +132,7 @@ F src/journal.c b0ea6b70b532961118ab70301c00a33089f9315c F src/legacy.c 9304428e71b1d622b764913e1432e69156814755 F src/lempar.c 7f026423f4d71d989e719a743f98a1cbd4e6d99e F src/loadext.c 1c7a61ce1281041f437333f366a96aa0d29bb581 -F src/main.c e477f3e3b3cfdce075e23b12875c4e77e6e358ee +F src/main.c 0ccd64804fa7f17b6913b19c525625b0121f894f F src/malloc.c 5fa175797f982b178eaf38afba9c588a866be729 F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 F src/mem1.c 552f7e11486272f27948d2de9c012884d1f52908 @@ -167,7 +167,7 @@ F src/resolve.c 69a45df25039eb58e321653914ad670ffe49d486 F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697 F src/select.c 0109b993c360d649857523abb72919e1794f9b45 F src/shell.c b9fae60b0f2ce306c20fa99e83c75023bf35f15b -F src/sqlite.h.in 60cbf318765de59bb454e229bd2d5ec065dd686a +F src/sqlite.h.in d493cf5029de67fe7252324473d89140a007a6c4 F src/sqlite3ext.h 69dfb8116af51b84a029cddb3b35062354270c89 F src/sqliteInt.h d6c48b1a5cd6485151e1d1b071dbe0a85ceb70fe F src/sqliteLimit.h 3afab2291762b5d09ae20c18feb8e9fa935a60a6 @@ -764,7 +764,7 @@ F tool/genfkey.README cf68fddd4643bbe3ff8e31b8b6d8b0a1b85e20f4 F tool/genfkey.test 4196a8928b78f51d54ef58e99e99401ab2f0a7e5 F tool/lemon.c 3088e4dec7f93c6b0925cf5bac04c8b7c8688835 F tool/lempar.c 01ca97f87610d1dac6d8cd96ab109ab1130e76dc -F tool/mkkeywordhash.c 9216336085e7a7c226a35c0bd780239968f8304f +F tool/mkkeywordhash.c d2e6b4a5965e23afb80fbe74bb54648cd371f309 F tool/mkopts.tcl 66ac10d240cc6e86abd37dc908d50382f84ff46e F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97 F tool/mksqlite3c.tcl 1da28229695fdebdfe8a7d19902ef6c76d6c1c2d @@ -786,14 +786,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P e1ccdb93d79a6f7b16f1f59cc3ad78f8d02eae84 -R e8f64ea35cd805e82f52b2a556e34139 +P 0e918c54893c361fb005295847f89aadcbfae35d +R 4e2278a90d83aeb76194f552dd614ab2 U drh -Z 394e360eb5d1df957fe55c257efb31a6 +Z 6cc1d51d83bc0a29c7be4eda186a8f3f -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) -iD8DBQFLPkWvoxKgR168RlERAtsJAJwKfkre0Bw1zrZ2r7ADRBOPhGeUFwCeKg/n -1gzLrYYIpH++nnmQeRwJHWU= -=j3Nq +iD8DBQFLPrvBoxKgR168RlERAl39AJ4z8HMdS6dRMjYvZStCrX4tTzIf7QCeLL+Z +zmFXEMFv/PKMmwqfXsIA47c= +=8Nrv -----END PGP SIGNATURE----- diff --git a/manifest.uuid b/manifest.uuid index 1a374056ef..376d8ac54d 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -0e918c54893c361fb005295847f89aadcbfae35d \ No newline at end of file +d3cdc4b12be7f1ed2249ad210482200868956d12 \ No newline at end of file diff --git a/src/main.c b/src/main.c index 2a4fbcf5eb..7477e0c66b 100644 --- a/src/main.c +++ b/src/main.c @@ -2297,6 +2297,24 @@ int sqlite3_test_control(int op, ...){ break; } +#ifdef SQLITE_N_KEYWORD + /* sqlite3_test_control(SQLITE_TESTCTRL_ISKEYWORD, const char *zWord) + ** + ** If zWord is a keyword recognized by the parser, then return the + ** number of keywords. Or if zWord is not a keyword, return 0. + ** + ** This test feature is only available in the amalgamation since + ** the SQLITE_N_KEYWORD macro is not defined in this file if SQLite + ** is built using separate source files. + */ + case SQLITE_TESTCTRL_ISKEYWORD: { + const char *zWord = va_arg(ap, const char*); + int n = sqlite3Strlen30(zWord); + rc = sqlite3KeywordCode((u8*)zWord, n) ? SQLITE_N_KEYWORD : 0; + break; + } +#endif + } va_end(ap); #endif /* SQLITE_OMIT_BUILTIN_TEST */ diff --git a/src/sqlite.h.in b/src/sqlite.h.in index e5e3e1b707..3bbb714588 100644 --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@ -4935,7 +4935,8 @@ int sqlite3_test_control(int op, ...); #define SQLITE_TESTCTRL_ALWAYS 13 #define SQLITE_TESTCTRL_RESERVE 14 #define SQLITE_TESTCTRL_OPTIMIZATIONS 15 -#define SQLITE_TESTCTRL_LAST 15 +#define SQLITE_TESTCTRL_ISKEYWORD 16 +#define SQLITE_TESTCTRL_LAST 16 /* ** CAPI3REF: SQLite Runtime Status diff --git a/tool/mkkeywordhash.c b/tool/mkkeywordhash.c index 872961a532..509aeef9ea 100644 --- a/tool/mkkeywordhash.c +++ b/tool/mkkeywordhash.c @@ -596,6 +596,7 @@ int main(int argc, char **argv){ printf("int sqlite3KeywordCode(const unsigned char *z, int n){\n"); printf(" return keywordCode((char*)z, n);\n"); printf("}\n"); + printf("#define SQLITE_N_KEYWORD %d\n", nKeyword); return 0; } -- 2.47.2