Fix the shell so that it can be built with SQLITE_OMIT_VIRTUALTABLE.
FossilOrigin-Name: 931421a22507a5e1edb46e19cb5b3958ec3904807836ab5bcc7a90f37f476e6a
This commit is contained in:
parent
f87ae41f52
commit
6b046be41a
12
manifest
12
manifest
@ -1,5 +1,5 @@
|
|||||||
C Do\snot\sattempt\sto\sbuild\sthe\scode\sin\sext/expert/sqlite3expert.c\sif\nSQLITE_OMIT_VIRTUALTABLE\sis\sdefined.
|
C Fix\sthe\sshell\sso\sthat\sit\scan\sbe\sbuilt\swith\sSQLITE_OMIT_VIRTUALTABLE.
|
||||||
D 2018-01-09T14:30:49.074
|
D 2018-01-09T15:25:55.758
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F Makefile.in 12b6daa4bdb03fa87da27cbc205ff88ace645475b5be79414a3038b68ade14cb
|
F Makefile.in 12b6daa4bdb03fa87da27cbc205ff88ace645475b5be79414a3038b68ade14cb
|
||||||
@ -484,7 +484,7 @@ F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
|
|||||||
F src/resolve.c bbee7e31d369a18a2f4836644769882e9c5d40ef4a3af911db06410b65cb3730
|
F src/resolve.c bbee7e31d369a18a2f4836644769882e9c5d40ef4a3af911db06410b65cb3730
|
||||||
F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac
|
F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac
|
||||||
F src/select.c 8b22abe193e4d8243befa2038e4ae2405802fed1c446e5e502d11f652e09ba74
|
F src/select.c 8b22abe193e4d8243befa2038e4ae2405802fed1c446e5e502d11f652e09ba74
|
||||||
F src/shell.c.in fb615970a6ae95be99316d9e4ab14bd2d5c6ecdc15ff905c4107eadfd2e20d0c
|
F src/shell.c.in 2a752aed1dc3727b3845429540543ff7fea383f960c7fa9e3741f16eeaed8686
|
||||||
F src/sqlite.h.in 1f1a2da222ec57465794e8984d77f32d0bd0da80cdc136beadda461a0be9d80c
|
F src/sqlite.h.in 1f1a2da222ec57465794e8984d77f32d0bd0da80cdc136beadda461a0be9d80c
|
||||||
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
||||||
F src/sqlite3ext.h c02d628cca67f3889c689d82d25c3eb45e2c155db08e4c6089b5840d64687d34
|
F src/sqlite3ext.h c02d628cca67f3889c689d82d25c3eb45e2c155db08e4c6089b5840d64687d34
|
||||||
@ -1697,7 +1697,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P a7446d3217d39c96c884fbfb294dd320378255f3bfb34e35d15ba6d7c6698f53
|
P ba967ad2e38590fe2a51e814a087140089be5e6a06a795a958e70a8a47f6350f
|
||||||
R e70943770a9fc04a23bf01555115b0a6
|
R bfa134ce14c4136d4127894dc7db3a26
|
||||||
U dan
|
U dan
|
||||||
Z 4badcc0edcd89f4a5802d71ebe94c4d8
|
Z f58bc377dca6569bb98e68d46d49fa3f
|
||||||
|
@ -1 +1 @@
|
|||||||
ba967ad2e38590fe2a51e814a087140089be5e6a06a795a958e70a8a47f6350f
|
931421a22507a5e1edb46e19cb5b3958ec3904807836ab5bcc7a90f37f476e6a
|
121
src/shell.c.in
121
src/shell.c.in
@ -2400,6 +2400,7 @@ static void exec_prepared_stmt(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef SQLITE_OMIT_VIRTUALTABLE
|
||||||
/*
|
/*
|
||||||
** This function is called to process SQL if the previous shell command
|
** This function is called to process SQL if the previous shell command
|
||||||
** was ".expert". It passes the SQL in the second argument directly to
|
** was ".expert". It passes the SQL in the second argument directly to
|
||||||
@ -2472,6 +2473,63 @@ static int expertFinish(
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Implementation of ".expert" dot command.
|
||||||
|
*/
|
||||||
|
static int expertDotCommand(
|
||||||
|
ShellState *pState, /* Current shell tool state */
|
||||||
|
char **azArg, /* Array of arguments passed to dot command */
|
||||||
|
int nArg /* Number of entries in azArg[] */
|
||||||
|
){
|
||||||
|
int rc = SQLITE_OK;
|
||||||
|
char *zErr = 0;
|
||||||
|
int i;
|
||||||
|
int iSample = 0;
|
||||||
|
|
||||||
|
assert( pState->expert.pExpert==0 );
|
||||||
|
memset(&pState->expert, 0, sizeof(ExpertInfo));
|
||||||
|
|
||||||
|
for(i=1; rc==SQLITE_OK && i<nArg; i++){
|
||||||
|
char *z = azArg[i];
|
||||||
|
int n;
|
||||||
|
if( z[0]=='-' && z[1]=='-' ) z++;
|
||||||
|
n = strlen30(z);
|
||||||
|
if( n>=2 && 0==strncmp(z, "-verbose", n) ){
|
||||||
|
pState->expert.bVerbose = 1;
|
||||||
|
}
|
||||||
|
else if( n>=2 && 0==strncmp(z, "-sample", n) ){
|
||||||
|
if( i==(nArg-1) ){
|
||||||
|
raw_printf(stderr, "option requires an argument: %s\n", z);
|
||||||
|
rc = SQLITE_ERROR;
|
||||||
|
}else{
|
||||||
|
iSample = (int)integerValue(azArg[++i]);
|
||||||
|
if( iSample<0 || iSample>100 ){
|
||||||
|
raw_printf(stderr, "value out of range: %s\n", azArg[i]);
|
||||||
|
rc = SQLITE_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
raw_printf(stderr, "unknown option: %s\n", z);
|
||||||
|
rc = SQLITE_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( rc==SQLITE_OK ){
|
||||||
|
pState->expert.pExpert = sqlite3_expert_new(pState->db, &zErr);
|
||||||
|
if( pState->expert.pExpert==0 ){
|
||||||
|
raw_printf(stderr, "sqlite3_expert_new: %s\n", zErr);
|
||||||
|
rc = SQLITE_ERROR;
|
||||||
|
}else{
|
||||||
|
sqlite3_expert_config(
|
||||||
|
pState->expert.pExpert, EXPERT_CONFIG_SAMPLE, iSample
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
#endif /* ifndef SQLITE_OMIT_VIRTUALTABLE */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Execute a statement or set of statements. Print
|
** Execute a statement or set of statements. Print
|
||||||
@ -2499,10 +2557,12 @@ static int shell_exec(
|
|||||||
*pzErrMsg = NULL;
|
*pzErrMsg = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef SQLITE_OMIT_VIRTUALTABLE
|
||||||
if( pArg->expert.pExpert ){
|
if( pArg->expert.pExpert ){
|
||||||
rc = expertHandleSQL(pArg, zSql, pzErrMsg);
|
rc = expertHandleSQL(pArg, zSql, pzErrMsg);
|
||||||
return expertFinish(pArg, (rc!=SQLITE_OK), pzErrMsg);
|
return expertFinish(pArg, (rc!=SQLITE_OK), pzErrMsg);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
while( zSql[0] && (SQLITE_OK == rc) ){
|
while( zSql[0] && (SQLITE_OK == rc) ){
|
||||||
static const char *zStmtSql;
|
static const char *zStmtSql;
|
||||||
@ -5106,63 +5166,6 @@ static int arDotCommand(
|
|||||||
**********************************************************************************/
|
**********************************************************************************/
|
||||||
#endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB) */
|
#endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB) */
|
||||||
|
|
||||||
/*
|
|
||||||
** Implementation of ".expert" dot command.
|
|
||||||
*/
|
|
||||||
static int expertDotCommand(
|
|
||||||
ShellState *pState, /* Current shell tool state */
|
|
||||||
char **azArg, /* Array of arguments passed to dot command */
|
|
||||||
int nArg /* Number of entries in azArg[] */
|
|
||||||
){
|
|
||||||
int rc = SQLITE_OK;
|
|
||||||
char *zErr = 0;
|
|
||||||
int i;
|
|
||||||
int iSample = 0;
|
|
||||||
|
|
||||||
assert( pState->expert.pExpert==0 );
|
|
||||||
memset(&pState->expert, 0, sizeof(ExpertInfo));
|
|
||||||
|
|
||||||
for(i=1; rc==SQLITE_OK && i<nArg; i++){
|
|
||||||
char *z = azArg[i];
|
|
||||||
int n;
|
|
||||||
if( z[0]=='-' && z[1]=='-' ) z++;
|
|
||||||
n = strlen30(z);
|
|
||||||
if( n>=2 && 0==strncmp(z, "-verbose", n) ){
|
|
||||||
pState->expert.bVerbose = 1;
|
|
||||||
}
|
|
||||||
else if( n>=2 && 0==strncmp(z, "-sample", n) ){
|
|
||||||
if( i==(nArg-1) ){
|
|
||||||
raw_printf(stderr, "option requires an argument: %s\n", z);
|
|
||||||
rc = SQLITE_ERROR;
|
|
||||||
}else{
|
|
||||||
iSample = (int)integerValue(azArg[++i]);
|
|
||||||
if( iSample<0 || iSample>100 ){
|
|
||||||
raw_printf(stderr, "value out of range: %s\n", azArg[i]);
|
|
||||||
rc = SQLITE_ERROR;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
raw_printf(stderr, "unknown option: %s\n", z);
|
|
||||||
rc = SQLITE_ERROR;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( rc==SQLITE_OK ){
|
|
||||||
pState->expert.pExpert = sqlite3_expert_new(pState->db, &zErr);
|
|
||||||
if( pState->expert.pExpert==0 ){
|
|
||||||
raw_printf(stderr, "sqlite3_expert_new: %s\n", zErr);
|
|
||||||
rc = SQLITE_ERROR;
|
|
||||||
}else{
|
|
||||||
sqlite3_expert_config(
|
|
||||||
pState->expert.pExpert, EXPERT_CONFIG_SAMPLE, iSample
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** If an input line begins with "." then invoke this routine to
|
** If an input line begins with "." then invoke this routine to
|
||||||
@ -5177,9 +5180,11 @@ static int do_meta_command(char *zLine, ShellState *p){
|
|||||||
int rc = 0;
|
int rc = 0;
|
||||||
char *azArg[50];
|
char *azArg[50];
|
||||||
|
|
||||||
|
#ifndef SQLITE_OMIT_VIRTUALTABLE
|
||||||
if( p->expert.pExpert ){
|
if( p->expert.pExpert ){
|
||||||
expertFinish(p, 1, 0);
|
expertFinish(p, 1, 0);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Parse the input line into tokens.
|
/* Parse the input line into tokens.
|
||||||
*/
|
*/
|
||||||
@ -5544,10 +5549,12 @@ static int do_meta_command(char *zLine, ShellState *p){
|
|||||||
}
|
}
|
||||||
}else
|
}else
|
||||||
|
|
||||||
|
#ifndef SQLITE_OMIT_VIRTUALTABLE
|
||||||
if( c=='e' && strncmp(azArg[0], "expert", n)==0 ){
|
if( c=='e' && strncmp(azArg[0], "expert", n)==0 ){
|
||||||
open_db(p, 0);
|
open_db(p, 0);
|
||||||
expertDotCommand(p, azArg, nArg);
|
expertDotCommand(p, azArg, nArg);
|
||||||
}else
|
}else
|
||||||
|
#endif
|
||||||
|
|
||||||
if( c=='f' && strncmp(azArg[0], "fullschema", n)==0 ){
|
if( c=='f' && strncmp(azArg[0], "fullschema", n)==0 ){
|
||||||
ShellState data;
|
ShellState data;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user