mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-05 15:55:57 +03:00
speed tweaks and documentation updates (CVS 167)
FossilOrigin-Name: ced90c3f93e5e0cf73ea77b62a1308cd8dd5f3b3
This commit is contained in:
59
src/main.c
59
src/main.c
@@ -26,7 +26,7 @@
|
||||
** other files are for internal use by SQLite and should not be
|
||||
** accessed by users of the library.
|
||||
**
|
||||
** $Id: main.c,v 1.21 2000/10/19 01:49:02 drh Exp $
|
||||
** $Id: main.c,v 1.22 2000/12/10 18:23:50 drh Exp $
|
||||
*/
|
||||
#include "sqliteInt.h"
|
||||
|
||||
@@ -257,29 +257,50 @@ void sqlite_close(sqlite *db){
|
||||
** Return TRUE if the given SQL string ends in a semicolon.
|
||||
*/
|
||||
int sqlite_complete(const char *zSql){
|
||||
int i;
|
||||
int lastWasSemi = 0;
|
||||
|
||||
i = 0;
|
||||
while( i>=0 && zSql[i]!=0 ){
|
||||
int tokenType;
|
||||
int n;
|
||||
|
||||
n = sqliteGetToken(&zSql[i], &tokenType);
|
||||
switch( tokenType ){
|
||||
case TK_SPACE:
|
||||
case TK_COMMENT:
|
||||
int isComplete = 0;
|
||||
while( *zSql ){
|
||||
switch( *zSql ){
|
||||
case ';': {
|
||||
isComplete = 1;
|
||||
break;
|
||||
case TK_SEMI:
|
||||
lastWasSemi = 1;
|
||||
}
|
||||
case ' ':
|
||||
case '\t':
|
||||
case '\n':
|
||||
case '\f': {
|
||||
break;
|
||||
default:
|
||||
lastWasSemi = 0;
|
||||
}
|
||||
case '\'': {
|
||||
isComplete = 0;
|
||||
zSql++;
|
||||
while( *zSql && *zSql!='\'' ){ zSql++; }
|
||||
if( *zSql==0 ) return 0;
|
||||
break;
|
||||
}
|
||||
case '"': {
|
||||
isComplete = 0;
|
||||
zSql++;
|
||||
while( *zSql && *zSql!='"' ){ zSql++; }
|
||||
if( *zSql==0 ) return 0;
|
||||
break;
|
||||
}
|
||||
case '-': {
|
||||
if( zSql[1]!='-' ){
|
||||
isComplete = 0;
|
||||
break;
|
||||
}
|
||||
while( *zSql && *zSql!='\n' ){ zSql++; }
|
||||
if( *zSql==0 ) return isComplete;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
isComplete = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
i += n;
|
||||
zSql++;
|
||||
}
|
||||
return lastWasSemi;
|
||||
return isComplete;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user