@@ -444,12 +444,13 @@
444 444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** state and mode information.
445 445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
446 446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct callback_data {
447 447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db; /* The database */
448 448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int echoOn; /* True to echo input commands */
449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int autoEQP; /* Run EXPLAIN QUERY PLAN prior to seach SQL statement */
449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int autoEQP; /* Run EXPLAIN QUERY PLAN prior to seach SQL stmt */
450 450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int statsOn; /* True to display memory stats before each finalize */
451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int outCount; /* Revert to stdout when reaching zero */
451 452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int cnt; /* Number of records displayed so far */
452 453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FILE *out; /* Write results here */
453 454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FILE *traceOut; /* Output for sqlite3_trace() */
454 455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nErr; /* Number of errors seen */
455 456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int mode; /* An output mode setting */
@@ -876,11 +877,12 @@
876 877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (azArg[i]==0) || (aiType && aiType[i]==SQLITE_NULL) ){
877 878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(p->out,"%sNULL",zSep);
878 879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( aiType && aiType[i]==SQLITE_TEXT ){
879 880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zSep[0] ) fprintf(p->out,"%s",zSep);
880 881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
output_quoted_string(p->out, azArg[i]);
881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( aiType && (aiType[i]==SQLITE_INTEGER || aiType[i]==SQLITE_FLOAT) ){
882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( aiType && (aiType[i]==SQLITE_INTEGER
883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || aiType[i]==SQLITE_FLOAT) ){
882 884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(p->out,"%s%s",zSep, azArg[i]);
883 885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( aiType && aiType[i]==SQLITE_BLOB && p->pStmt ){
884 886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const void *pBlob = sqlite3_column_blob(p->pStmt, i);
885 887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nBlob = sqlite3_column_bytes(p->pStmt, i);
886 888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zSep[0] ) fprintf(p->out,"%s",zSep);
@@ -1196,11 +1198,11 @@
1196 1198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nAlloc = 0; /* Allocated size of p->aiIndent[], abYield */
1197 1199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iOp; /* Index of operation in p->aiIndent[] */
1198 1200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1199 1201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *azNext[] = { "Next", "Prev", "VPrev", "VNext", "SorterNext",
1200 1202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"NextIfOpen", "PrevIfOpen", 0 };
1201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *azYield[] = { "Yield", "SeekLt", "SeekGt", "RowSetRead", "Rewind", 0 };
1203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *azYield[] = { "Yield", "SeekLT", "SeekGT", "RowSetRead", "Rewind", 0 };
1202 1204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *azGoto[] = { "Goto", 0 };
1203 1205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1204 1206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Try to figure out if this is really an EXPLAIN statement. If this
1205 1207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** cannot be verified, return early. */
1206 1208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSql = sqlite3_sql(pSql);
@@ -1568,21 +1570,21 @@
1568 1570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1569 1571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Text of a help message
1570 1572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1571 1573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static char zHelp[] =
1572 1574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".backup ?DB? FILE Backup DB (default \"main\") to FILE\n"
1573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ".bail ON|OFF Stop after hitting an error. Default OFF\n"
1575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ".bail on|off Stop after hitting an error. Default OFF\n"
1574 1576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".clone NEWDB Clone data into NEWDB from the existing database\n"
1575 1577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".databases List names and files of attached databases\n"
1576 1578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".dump ?TABLE? ... Dump the database in an SQL text format\n"
1577 1579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" If TABLE specified, only dump tables matching\n"
1578 1580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" LIKE pattern TABLE.\n"
1579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ".echo ON|OFF Turn command echo on or off\n"
1581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ".echo on|off Turn command echo on or off\n"
1580 1582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".exit Exit this program\n"
1581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ".explain ?ON|OFF? Turn output mode suitable for EXPLAIN on or off.\n"
1583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ".explain ?on|off? Turn output mode suitable for EXPLAIN on or off.\n"
1582 1584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" With no args, it turns EXPLAIN on.\n"
1583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ".headers ON|OFF Turn display of headers on or off\n"
1585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ".headers on|off Turn display of headers on or off\n"
1584 1586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".help Show this message\n"
1585 1587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".import FILE TABLE Import data from FILE into TABLE\n"
1586 1588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".indices ?TABLE? Show names of all indices\n"
1587 1589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" If TABLE specified, only show indices for tables\n"
1588 1590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" matching LIKE pattern TABLE.\n"
@@ -1601,13 +1603,13 @@
1601 1603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" line One value per line\n"
1602 1604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" list Values delimited by .separator string\n"
1603 1605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" tabs Tab-separated values\n"
1604 1606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" tcl TCL list elements\n"
1605 1607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".nullvalue STRING Use STRING in place of NULL values\n"
1608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ".once FILENAME Output for the next SQL command only to FILENAME\n"
1606 1609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".open ?FILENAME? Close existing database and reopen FILENAME\n"
1607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ".output FILENAME Send output to FILENAME\n"
1608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ".output stdout Send output to the screen\n"
1610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ".output ?FILENAME? Send output to FILENAME or stdout\n"
1609 1611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".print STRING... Print literal STRING\n"
1610 1612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".prompt MAIN CONTINUE Replace the standard prompts\n"
1611 1613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".quit Exit this program\n"
1612 1614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".read FILENAME Execute SQL in FILENAME\n"
1613 1615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".restore ?DB? FILE Restore content of DB (default \"main\") from FILE\n"
@@ -1616,26 +1618,23 @@
1616 1618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" If TABLE specified, only show tables matching\n"
1617 1619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" LIKE pattern TABLE.\n"
1618 1620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".separator STRING Change separator used by output mode and .import\n"
1619 1621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".shell CMD ARGS... Run CMD ARGS... in a system shell\n"
1620 1622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".show Show the current values for various settings\n"
1621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ".stats ON|OFF Turn stats on or off\n"
1623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ".stats on|off Turn stats on or off\n"
1622 1624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".system CMD ARGS... Run CMD ARGS... in a system shell\n"
1623 1625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".tables ?TABLE? List names of tables\n"
1624 1626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" If TABLE specified, only list tables matching\n"
1625 1627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" LIKE pattern TABLE.\n"
1626 1628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".timeout MS Try opening locked tables for MS milliseconds\n"
1629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ".timer on|off Turn SQL timer on or off\n"
1627 1630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".trace FILE|off Output each SQL statement as it is run\n"
1628 1631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".vfsname ?AUX? Print the name of the VFS stack\n"
1629 1632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
".width NUM1 NUM2 ... Set column widths for \"column\" mode\n"
1630 1633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" Negative values right-justify\n"
1631 1634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
;
1632 1635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static char zTimerHelp[] =
1634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ".timer ON|OFF Turn the CPU timer measurement on or off\n"
1635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ;
1636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1637 1636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Forward reference */
1638 1637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int process_input(struct callback_data *p, FILE *in);
1639 1638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1640 1639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1641 1640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Make sure the database is open. If it is not, then open it. If
@@ -1673,10 +1672,11 @@
1673 1672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** \\ -> backslash
1674 1673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1675 1674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void resolve_backslashes(char *z){
1676 1675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i, j;
1677 1676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char c;
1677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( *z && *z!='\\' ) z++;
1678 1678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=j=0; (c = z[i])!=0; i++, j++){
1679 1679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='\\' ){
1680 1680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
c = z[++i];
1681 1681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='n' ){
1682 1682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
c = '\n';
@@ -1698,11 +1698,11 @@
1698 1698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1699 1699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1700 1700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1701 1701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z[j] = c;
1702 1702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- z[j] = 0;
1703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( j<i ) z[j] = 0;
1704 1704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1705 1705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1706 1706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1707 1707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return the value of a hexadecimal digit. Return -1 if the input
1708 1708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is not a hex digit.
@@ -2141,10 +2141,23 @@
2141 2141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_exec(newDb, "COMMIT;", 0, 0, 0);
2142 2142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_exec(p->db, "PRAGMA writable_schema=OFF;", 0, 0, 0);
2143 2143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2144 2144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_close(newDb);
2145 2145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
2148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Change the output file back to stdout
2149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
2150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void output_reset(struct callback_data *p){
2151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->outfile[0]=='|' ){
2152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pclose(p->out);
2153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
2154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ output_file_close(p->out);
2155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->outfile[0] = 0;
2157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->out = stdout;
2158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2146 2159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2147 2160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
2148 2161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If an input line begins with "." then invoke this routine to
2149 2162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** process that line.
2150 2163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -2240,26 +2253,36 @@
2240 2253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
2241 2254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2242 2255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_close(pDest);
2243 2256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2244 2257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='b' && n>=3 && strncmp(azArg[0], "bail", n)==0 && nArg>1 && nArg<3 ){
2246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- bail_on_error = booleanValue(azArg[1]);
2258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='b' && n>=3 && strncmp(azArg[0], "bail", n)==0 ){
2259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg==2 ){
2260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bail_on_error = booleanValue(azArg[1]);
2261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
2262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .bail on|off\n");
2263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
2264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2247 2265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2248 2266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2249 2267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The undocumented ".breakpoint" command causes a call to the no-op
2250 2268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** routine named test_breakpoint().
2251 2269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
2252 2270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='b' && n>=3 && strncmp(azArg[0], "breakpoint", n)==0 ){
2253 2271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
test_breakpoint();
2254 2272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2255 2273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='c' && strncmp(azArg[0], "clone", n)==0 && nArg>1 && nArg<3 ){
2257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- tryToClone(p, azArg[1]);
2274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='c' && strncmp(azArg[0], "clone", n)==0 ){
2275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg==2 ){
2276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tryToClone(p, azArg[1]);
2277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
2278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .clone FILENAME\n");
2279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
2280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2258 2281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2259 2282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='d' && n>1 && strncmp(azArg[0], "databases", n)==0 && nArg==1 ){
2283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='d' && n>1 && strncmp(azArg[0], "databases", n)==0 ){
2261 2284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct callback_data data;
2262 2285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zErrMsg = 0;
2263 2286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
open_db(p, 0);
2264 2287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(&data, p, sizeof(data));
2265 2288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
data.showHeader = 1;
@@ -2274,15 +2297,20 @@
2274 2297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zErrMsg);
2275 2298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
2276 2299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2277 2300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2278 2301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='d' && strncmp(azArg[0], "dump", n)==0 && nArg<3 ){
2302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='d' && strncmp(azArg[0], "dump", n)==0 ){
2280 2303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
open_db(p, 0);
2281 2304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* When playing back a "dump", the content might appear in an order
2282 2305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** which causes immediate foreign key constraints to be violated.
2283 2306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** So disable foreign-key constraint enforcement to prevent problems. */
2307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg!=1 && nArg!=2 ){
2308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .dump ?LIKE-PATTERN?\n");
2309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
2310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto meta_command_exit;
2311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2284 2312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(p->out, "PRAGMA foreign_keys=OFF;\n");
2285 2313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(p->out, "BEGIN TRANSACTION;\n");
2286 2314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->writableSchema = 0;
2287 2315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_exec(p->db, "SAVEPOINT dump; PRAGMA writable_schema=ON", 0, 0, 0);
2288 2316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nErr = 0;
@@ -2323,24 +2351,34 @@
2323 2351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_exec(p->db, "PRAGMA writable_schema=OFF;", 0, 0, 0);
2324 2352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_exec(p->db, "RELEASE dump;", 0, 0, 0);
2325 2353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(p->out, p->nErr ? "ROLLBACK; -- due to errors\n" : "COMMIT;\n");
2326 2354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2327 2355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='e' && strncmp(azArg[0], "echo", n)==0 && nArg>1 && nArg<3 ){
2329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->echoOn = booleanValue(azArg[1]);
2356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='e' && strncmp(azArg[0], "echo", n)==0 ){
2357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg==2 ){
2358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->echoOn = booleanValue(azArg[1]);
2359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
2360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .echo on|off\n");
2361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
2362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2330 2363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2331 2364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='e' && strncmp(azArg[0], "eqp", n)==0 && nArg>1 && nArg<3 ){
2333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->autoEQP = booleanValue(azArg[1]);
2365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='e' && strncmp(azArg[0], "eqp", n)==0 ){
2366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg==2 ){
2367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->autoEQP = booleanValue(azArg[1]);
2368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
2369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .eqp on|off\n");
2370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
2371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2334 2372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2335 2373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2336 2374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='e' && strncmp(azArg[0], "exit", n)==0 ){
2337 2375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nArg>1 && (rc = (int)integerValue(azArg[1]))!=0 ) exit(rc);
2338 2376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 2;
2339 2377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2340 2378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='e' && strncmp(azArg[0], "explain", n)==0 && nArg<3 ){
2379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='e' && strncmp(azArg[0], "explain", n)==0 ){
2342 2380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int val = nArg>=2 ? booleanValue(azArg[1]) : 1;
2343 2381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(val == 1) {
2344 2382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(!p->explainPrev.valid) {
2345 2383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->explainPrev.valid = 1;
2346 2384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->explainPrev.mode = p->mode;
@@ -2371,25 +2409,26 @@
2371 2409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->showHeader = p->explainPrev.showHeader;
2372 2410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(p->colWidth,p->explainPrev.colWidth,sizeof(p->colWidth));
2373 2411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2374 2412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2375 2413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='h' && (strncmp(azArg[0], "header", n)==0 ||
2377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- strncmp(azArg[0], "headers", n)==0) && nArg>1 && nArg<3 ){
2378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->showHeader = booleanValue(azArg[1]);
2414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='h' && strncmp(azArg[0], "headers", n)==0 ){
2415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg==2 ){
2416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->showHeader = booleanValue(azArg[1]);
2417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
2418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .headers on|off\n");
2419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
2420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2379 2421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2380 2422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2381 2423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='h' && strncmp(azArg[0], "help", n)==0 ){
2382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fprintf(stderr,"%s",zHelp);
2383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( HAS_TIMER ){
2384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fprintf(stderr,"%s",zTimerHelp);
2385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
2424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(p->out, "%s", zHelp);
2386 2425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2387 2426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='i' && strncmp(azArg[0], "import", n)==0 && nArg==3 ){
2389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zTable = azArg[2]; /* Insert data into this table */
2390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zFile = azArg[1]; /* Name of file to extra content from */
2427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='i' && strncmp(azArg[0], "import", n)==0 ){
2428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zTable; /* Insert data into this table */
2429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zFile; /* Name of file to extra content from */
2391 2430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_stmt *pStmt = NULL; /* A statement */
2392 2431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nCol; /* Number of columns in the table */
2393 2432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nByte; /* Number of bytes in an SQL string */
2394 2433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i, j; /* Loop counters */
2395 2434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int needCommit; /* True to COMMIT or ROLLBACK at end */
@@ -2396,10 +2435,16 @@
2396 2435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nSep; /* Number of bytes in p->separator[] */
2397 2436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zSql; /* An SQL statement */
2398 2437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CSVReader sCsv; /* Reader context */
2399 2438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*xCloser)(FILE*); /* Procedure to close th3 connection */
2400 2439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg!=3 ){
2441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .import FILE TABLE\n");
2442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto meta_command_exit;
2443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFile = azArg[1];
2445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTable = azArg[2];
2401 2446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
seenInterrupt = 0;
2402 2447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&sCsv, 0, sizeof(sCsv));
2403 2448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
open_db(p, 0);
2404 2449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nSep = strlen30(p->separator);
2405 2450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nSep==0 ){
@@ -2534,11 +2579,11 @@
2534 2579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(sCsv.z);
2535 2580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_finalize(pStmt);
2536 2581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( needCommit ) sqlite3_exec(db, "COMMIT", 0, 0, 0);
2537 2582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2538 2583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='i' && strncmp(azArg[0], "indices", n)==0 && nArg<3 ){
2584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='i' && strncmp(azArg[0], "indices", n)==0 ){
2540 2585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct callback_data data;
2541 2586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zErrMsg = 0;
2542 2587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
open_db(p, 0);
2543 2588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(&data, p, sizeof(data));
2544 2589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
data.showHeader = 0;
@@ -2551,11 +2596,11 @@
2551 2596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"SELECT name FROM sqlite_temp_master "
2552 2597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"WHERE type='index' "
2553 2598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"ORDER BY 1",
2554 2599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
callback, &data, &zErrMsg
2555 2600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
2556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
2601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( nArg==2 ){
2557 2602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zShellStatic = azArg[1];
2558 2603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3_exec(p->db,
2559 2604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"SELECT name FROM sqlite_master "
2560 2605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"WHERE type='index' AND tbl_name LIKE shellstatic() "
2561 2606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"UNION ALL "
@@ -2563,10 +2608,14 @@
2563 2608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"WHERE type='index' AND tbl_name LIKE shellstatic() "
2564 2609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"ORDER BY 1",
2565 2610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
callback, &data, &zErrMsg
2566 2611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
2567 2612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zShellStatic = 0;
2613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
2614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .indices ?LIKE-PATTERN?\n");
2615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
2616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto meta_command_exit;
2568 2617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2569 2618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zErrMsg ){
2570 2619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(stderr,"Error: %s\n", zErrMsg);
2571 2620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zErrMsg);
2572 2621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
@@ -2598,13 +2647,18 @@
2598 2647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2599 2648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2600 2649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
2601 2650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2602 2651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_LOAD_EXTENSION
2603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='l' && strncmp(azArg[0], "load", n)==0 && nArg>=2 ){
2652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='l' && strncmp(azArg[0], "load", n)==0 ){
2604 2653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFile, *zProc;
2605 2654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zErrMsg = 0;
2655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg<2 ){
2656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .load FILE ?ENTRYPOINT?\n");
2657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
2658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto meta_command_exit;
2659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2606 2660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zFile = azArg[1];
2607 2661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zProc = nArg>=3 ? azArg[2] : 0;
2608 2662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
open_db(p, 0);
2609 2663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3_load_extension(p->db, zFile, zProc, &zErrMsg);
2610 2664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
@@ -2613,66 +2667,62 @@
2613 2667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
2614 2668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2615 2669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2616 2670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
2617 2671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='l' && strncmp(azArg[0], "log", n)==0 && nArg>=2 ){
2619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zFile = azArg[1];
2620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- output_file_close(p->pLog);
2621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->pLog = output_file_open(zFile);
2672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='l' && strncmp(azArg[0], "log", n)==0 ){
2673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg!=2 ){
2674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .log FILENAME\n");
2675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
2676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
2677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zFile = azArg[1];
2678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ output_file_close(p->pLog);
2679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->pLog = output_file_open(zFile);
2680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2622 2681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2623 2682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='m' && strncmp(azArg[0], "mode", n)==0 && nArg==2 ){
2625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int n2 = strlen30(azArg[1]);
2626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (n2==4 && strncmp(azArg[1],"line",n2)==0)
2627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ||
2628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (n2==5 && strncmp(azArg[1],"lines",n2)==0) ){
2683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='m' && strncmp(azArg[0], "mode", n)==0 ){
2684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zMode = nArg>=2 ? azArg[1] : "";
2685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int n2 = (int)strlen(zMode);
2686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int c2 = zMode[0];
2687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c2=='l' && n2>2 && strncmp(azArg[1],"lines",n2)==0 ){
2629 2688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mode = MODE_Line;
2630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( (n2==6 && strncmp(azArg[1],"column",n2)==0)
2631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ||
2632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (n2==7 && strncmp(azArg[1],"columns",n2)==0) ){
2689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( c2=='c' && strncmp(azArg[1],"columns",n2)==0 ){
2633 2690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mode = MODE_Column;
2634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( n2==4 && strncmp(azArg[1],"list",n2)==0 ){
2691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( c2=='l' && n2>2 && strncmp(azArg[1],"list",n2)==0 ){
2635 2692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mode = MODE_List;
2636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( n2==4 && strncmp(azArg[1],"html",n2)==0 ){
2693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( c2=='h' && strncmp(azArg[1],"html",n2)==0 ){
2637 2694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mode = MODE_Html;
2638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( n2==3 && strncmp(azArg[1],"tcl",n2)==0 ){
2695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( c2=='t' && strncmp(azArg[1],"tcl",n2)==0 ){
2639 2696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mode = MODE_Tcl;
2640 2697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(sizeof(p->separator), p->separator, " ");
2641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( n2==3 && strncmp(azArg[1],"csv",n2)==0 ){
2698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( c2=='c' && strncmp(azArg[1],"csv",n2)==0 ){
2642 2699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mode = MODE_Csv;
2643 2700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(sizeof(p->separator), p->separator, ",");
2644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( n2==4 && strncmp(azArg[1],"tabs",n2)==0 ){
2701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( c2=='t' && strncmp(azArg[1],"tabs",n2)==0 ){
2645 2702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mode = MODE_List;
2646 2703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(sizeof(p->separator), p->separator, "\t");
2647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( n2==6 && strncmp(azArg[1],"insert",n2)==0 ){
2704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( c2=='i' && strncmp(azArg[1],"insert",n2)==0 ){
2648 2705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mode = MODE_Insert;
2649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set_table_name(p, "table");
2706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set_table_name(p, nArg>=3 ? azArg[2] : "table");
2650 2707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else {
2651 2708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(stderr,"Error: mode should be one of: "
2652 2709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"column csv html insert line list tabs tcl\n");
2653 2710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
2654 2711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2655 2712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2656 2713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='m' && strncmp(azArg[0], "mode", n)==0 && nArg==3 ){
2658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int n2 = strlen30(azArg[1]);
2659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( n2==6 && strncmp(azArg[1],"insert",n2)==0 ){
2660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->mode = MODE_Insert;
2661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set_table_name(p, azArg[2]);
2662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else {
2663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fprintf(stderr, "Error: invalid arguments: "
2664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " \"%s\". Enter \".help\" for help\n", azArg[2]);
2714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='n' && strncmp(azArg[0], "nullvalue", n)==0 ){
2715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg==2 ){
2716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(sizeof(p->nullvalue), p->nullvalue,
2717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "%.*s", (int)ArraySize(p->nullvalue)-1, azArg[1]);
2718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
2719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .nullvalue STRING\n");
2665 2720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
2666 2721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2667 2722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2668 2723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='n' && strncmp(azArg[0], "nullvalue", n)==0 && nArg==2 ) {
2670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(sizeof(p->nullvalue), p->nullvalue,
2671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "%.*s", (int)ArraySize(p->nullvalue)-1, azArg[1]);
2672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else
2673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
2674 2724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='o' && strncmp(azArg[0], "open", n)==0 && n>=2 ){
2675 2725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *savedDb = p->db;
2676 2726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zSavedFilename = p->zDbFilename;
2677 2727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zNewFilename = 0;
2678 2728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->db = 0;
@@ -2689,36 +2739,49 @@
2689 2739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->db = savedDb;
2690 2740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zDbFilename = zSavedFilename;
2691 2741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2692 2742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2693 2743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='o' && strncmp(azArg[0], "output", n)==0 && nArg==2 ){
2695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->outfile[0]=='|' ){
2696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pclose(p->out);
2744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='o'
2745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (strncmp(azArg[0], "output", n)==0 || strncmp(azArg[0], "once", n)==0)
2746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
2747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zFile = nArg>=2 ? azArg[1] : "stdout";
2748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg>2 ){
2749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .%s FILE\n", azArg[0]);
2750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
2751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto meta_command_exit;
2752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( n>1 && strncmp(azArg[0], "once", n)==0 ){
2754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg<2 ){
2755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .once FILE\n");
2756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
2757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto meta_command_exit;
2758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->outCount = 2;
2697 2760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
2698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- output_file_close(p->out);
2761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->outCount = 0;
2699 2762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->outfile[0] = 0;
2701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( azArg[1][0]=='|' ){
2702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->out = popen(&azArg[1][1], "w");
2763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ output_reset(p);
2764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zFile[0]=='|' ){
2765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->out = popen(zFile + 1, "w");
2703 2766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->out==0 ){
2704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fprintf(stderr,"Error: cannot open pipe \"%s\"\n", &azArg[1][1]);
2767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr,"Error: cannot open pipe \"%s\"\n", zFile + 1);
2705 2768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->out = stdout;
2706 2769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
2707 2770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
2708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(sizeof(p->outfile), p->outfile, "%s", azArg[1]);
2771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(sizeof(p->outfile), p->outfile, "%s", zFile);
2709 2772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2710 2773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
2711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->out = output_file_open(azArg[1]);
2774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->out = output_file_open(zFile);
2712 2775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->out==0 ){
2713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( strcmp(azArg[1],"off")!=0 ){
2714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fprintf(stderr,"Error: cannot write to \"%s\"\n", azArg[1]);
2776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( strcmp(zFile,"off")!=0 ){
2777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr,"Error: cannot write to \"%s\"\n", zFile);
2715 2778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2716 2779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->out = stdout;
2717 2780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
2718 2781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
2719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(sizeof(p->outfile), p->outfile, "%s", azArg[1]);
2782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(sizeof(p->outfile), p->outfile, "%s", zFile);
2720 2783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2721 2784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2722 2785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2723 2786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2724 2787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='p' && n>=3 && strncmp(azArg[0], "print", n)==0 ){
@@ -2728,47 +2791,57 @@
2728 2791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(p->out, "%s", azArg[i]);
2729 2792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2730 2793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(p->out, "\n");
2731 2794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2732 2795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='p' && strncmp(azArg[0], "prompt", n)==0 && (nArg==2 || nArg==3)){
2796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='p' && strncmp(azArg[0], "prompt", n)==0 ){
2734 2797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nArg >= 2) {
2735 2798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
strncpy(mainPrompt,azArg[1],(int)ArraySize(mainPrompt)-1);
2736 2799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2737 2800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nArg >= 3) {
2738 2801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
strncpy(continuePrompt,azArg[2],(int)ArraySize(continuePrompt)-1);
2739 2802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2740 2803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2741 2804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='q' && strncmp(azArg[0], "quit", n)==0 && nArg==1 ){
2805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='q' && strncmp(azArg[0], "quit", n)==0 ){
2743 2806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 2;
2744 2807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2745 2808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='r' && n>=3 && strncmp(azArg[0], "read", n)==0 && nArg==2 ){
2747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- FILE *alt = fopen(azArg[1], "rb");
2809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='r' && n>=3 && strncmp(azArg[0], "read", n)==0 ){
2810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FILE *alt;
2811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg!=2 ){
2812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .read FILE\n");
2813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
2814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto meta_command_exit;
2815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ alt = fopen(azArg[1], "rb");
2748 2817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( alt==0 ){
2749 2818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(stderr,"Error: cannot open \"%s\"\n", azArg[1]);
2750 2819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
2751 2820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
2752 2821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = process_input(p, alt);
2753 2822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fclose(alt);
2754 2823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2755 2824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2756 2825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='r' && n>=3 && strncmp(azArg[0], "restore", n)==0 && nArg>1 && nArg<4){
2826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='r' && n>=3 && strncmp(azArg[0], "restore", n)==0 ){
2758 2827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zSrcFile;
2759 2828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zDb;
2760 2829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *pSrc;
2761 2830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_backup *pBackup;
2762 2831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nTimeout = 0;
2763 2832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2764 2833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nArg==2 ){
2765 2834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSrcFile = azArg[1];
2766 2835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDb = "main";
2767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
2836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( nArg==3 ){
2768 2837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSrcFile = azArg[2];
2769 2838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDb = azArg[1];
2839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
2840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .restore ?DB? FILE\n");
2841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
2842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto meta_command_exit;
2770 2843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2771 2844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3_open(zSrcFile, &pSrc);
2772 2845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
2773 2846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(stderr, "Error: cannot open \"%s\"\n", zSrcFile);
2774 2847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_close(pSrc);
@@ -2799,18 +2872,18 @@
2799 2872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
2800 2873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2801 2874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_close(pSrc);
2802 2875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2803 2876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='s' && strncmp(azArg[0], "schema", n)==0 && nArg<3 ){
2877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='s' && strncmp(azArg[0], "schema", n)==0 ){
2805 2878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct callback_data data;
2806 2879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zErrMsg = 0;
2807 2880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
open_db(p, 0);
2808 2881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(&data, p, sizeof(data));
2809 2882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
data.showHeader = 0;
2810 2883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
data.mode = MODE_Semi;
2811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( nArg>1 ){
2884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg==2 ){
2812 2885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
2813 2886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; azArg[1][i]; i++) azArg[1][i] = ToLower(azArg[1][i]);
2814 2887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( strcmp(azArg[1],"sqlite_master")==0 ){
2815 2888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *new_argv[2], *new_colv[2];
2816 2889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
new_argv[0] = "CREATE TABLE sqlite_master (\n"
@@ -2850,20 +2923,24 @@
2850 2923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND type!='meta' AND sql NOTNULL "
2851 2924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"ORDER BY rowid",
2852 2925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
callback, &data, &zErrMsg);
2853 2926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zShellStatic = 0;
2854 2927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
2928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( nArg==1 ){
2856 2929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3_exec(p->db,
2857 2930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"SELECT sql FROM "
2858 2931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" (SELECT sql sql, type type, tbl_name tbl_name, name name, rowid x"
2859 2932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" FROM sqlite_master UNION ALL"
2860 2933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" SELECT sql, type, tbl_name, name, rowid FROM sqlite_temp_master) "
2861 2934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"WHERE type!='meta' AND sql NOTNULL AND name NOT LIKE 'sqlite_%'"
2862 2935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"ORDER BY rowid",
2863 2936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
callback, &data, &zErrMsg
2864 2937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
2938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
2939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .schema ?LIKE-PATTERN?\n");
2940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
2941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto meta_command_exit;
2865 2942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2866 2943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zErrMsg ){
2867 2944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(stderr,"Error: %s\n", zErrMsg);
2868 2945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zErrMsg);
2869 2946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
@@ -2889,38 +2966,53 @@
2889 2966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( strncmp(azArg[0]+9, "integer", n-9)==0 ){
2890 2967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i; sqlite3_int64 v;
2891 2968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=1; i<nArg; i++){
2892 2969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char zBuf[200];
2893 2970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = integerValue(azArg[i]);
2894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(sizeof(zBuf), zBuf, "%s: %lld 0x%llx\n", azArg[i], v, v);
2971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(sizeof(zBuf),zBuf,"%s: %lld 0x%llx\n", azArg[i],v,v);
2895 2972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(p->out, "%s", zBuf);
2896 2973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2897 2974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2898 2975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2899 2976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
2900 2977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='s' && strncmp(azArg[0], "separator", n)==0 && nArg==2 ){
2902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(sizeof(p->separator), p->separator,
2903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "%.*s", (int)sizeof(p->separator)-1, azArg[1]);
2978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='s' && strncmp(azArg[0], "separator", n)==0 ){
2979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg==2 ){
2980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(sizeof(p->separator), p->separator,
2981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "%.*s", (int)sizeof(p->separator)-1, azArg[1]);
2982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
2983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .separator STRING\n");
2984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
2985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2904 2986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2905 2987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2906 2988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='s'
2907 2989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (strncmp(azArg[0], "shell", n)==0 || strncmp(azArg[0],"system",n)==0)
2908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && nArg>=2
2909 2990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
2910 2991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zCmd;
2911 2992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
2912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zCmd = sqlite3_mprintf("\"%s\"", azArg[1]);
2993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg<2 ){
2994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .system COMMAND\n");
2995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
2996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto meta_command_exit;
2997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zCmd = sqlite3_mprintf(strchr(azArg[1],' ')==0?"%s":"\"%s\"", azArg[1]);
2913 2999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=2; i<nArg; i++){
2914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zCmd = sqlite3_mprintf("%z \"%s\"", zCmd, azArg[i]);
3000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zCmd = sqlite3_mprintf(strchr(azArg[i],' ')==0?"%z %s":"%z \"%s\"",
3001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zCmd, azArg[i]);
2915 3002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- system(zCmd);
3003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)system(zCmd);
2917 3004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zCmd);
2918 3005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2919 3006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='s' && strncmp(azArg[0], "show", n)==0 && nArg==1 ){
3007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='s' && strncmp(azArg[0], "show", n)==0 ){
2921 3008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
3009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg!=1 ){
3010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .show\n");
3011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
3012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto meta_command_exit;
3013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2922 3014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(p->out,"%9.9s: %s\n","echo", p->echoOn ? "on" : "off");
2923 3015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(p->out,"%9.9s: %s\n","eqp", p->autoEQP ? "on" : "off");
2924 3016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(p->out,"%9.9s: %s\n","explain", p->explainPrev.valid ? "on" :"off");
2925 3017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(p->out,"%9.9s: %s\n","headers", p->showHeader ? "on" : "off");
2926 3018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(p->out,"%9.9s: %s\n","mode", modeDescr[p->mode]);
@@ -2938,15 +3030,20 @@
2938 3030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(p->out,"%d ",p->colWidth[i]);
2939 3031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2940 3032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(p->out,"\n");
2941 3033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2942 3034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='s' && strncmp(azArg[0], "stats", n)==0 && nArg>1 && nArg<3 ){
2944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->statsOn = booleanValue(azArg[1]);
3035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='s' && strncmp(azArg[0], "stats", n)==0 ){
3036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg==2 ){
3037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->statsOn = booleanValue(azArg[1]);
3038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
3039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .stats on|off\n");
3040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
3041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2945 3042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
2946 3043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='t' && n>1 && strncmp(azArg[0], "tables", n)==0 && nArg<3 ){
3044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='t' && n>1 && strncmp(azArg[0], "tables", n)==0 ){
2948 3045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_stmt *pStmt;
2949 3046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char **azResult;
2950 3047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nRow, nAlloc;
2951 3048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zSql = 0;
2952 3049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ii;
@@ -3148,24 +3245,36 @@
3148 3245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
3149 3246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3150 3247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3151 3248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
3152 3249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='t' && n>4 && strncmp(azArg[0], "timeout", n)==0 && nArg==2 ){
3250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='t' && n>4 && strncmp(azArg[0], "timeout", n)==0 ){
3154 3251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
open_db(p, 0);
3155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_busy_timeout(p->db, (int)integerValue(azArg[1]));
3252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_busy_timeout(p->db, nArg>=2 ? (int)integerValue(azArg[1]) : 0);
3156 3253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
3157 3254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( HAS_TIMER && c=='t' && n>=5 && strncmp(azArg[0], "timer", n)==0
3159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && nArg==2
3160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ){
3161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- enableTimer = booleanValue(azArg[1]);
3255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='t' && n>=5 && strncmp(azArg[0], "timer", n)==0 ){
3256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg==2 ){
3257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ enableTimer = booleanValue(azArg[1]);
3258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( enableTimer && !HAS_TIMER ){
3259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Error: timer not available on this system.\n");
3260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ enableTimer = 0;
3261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
3263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .timer on|off\n");
3264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
3265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3162 3266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
3163 3267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='t' && strncmp(azArg[0], "trace", n)==0 && nArg>1 ){
3268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='t' && strncmp(azArg[0], "trace", n)==0 ){
3165 3269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
open_db(p, 0);
3166 3270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
output_file_close(p->traceOut);
3271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nArg!=2 ){
3272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr, "Usage: .trace FILE|off\n");
3273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = 1;
3274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto meta_command_exit;
3275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3167 3276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->traceOut = output_file_open(azArg[1]);
3168 3277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if !defined(SQLITE_OMIT_TRACE) && !defined(SQLITE_OMIT_FLOATING_POINT)
3169 3278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->traceOut==0 ){
3170 3279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_trace(p->db, 0, 0);
3171 3280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -3192,15 +3301,15 @@
3192 3301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
3193 3302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3194 3303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(SQLITE_DEBUG) && defined(SQLITE_ENABLE_WHERETRACE)
3195 3304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='w' && strncmp(azArg[0], "wheretrace", n)==0 ){
3196 3305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
extern int sqlite3WhereTrace;
3197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3WhereTrace = booleanValue(azArg[1]);
3306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3WhereTrace = nArg>=2 ? booleanValue(azArg[1]) : 0xff;
3198 3307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
3199 3308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
3200 3309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='w' && strncmp(azArg[0], "width", n)==0 && nArg>1 ){
3310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='w' && strncmp(azArg[0], "width", n)==0 ){
3202 3311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int j;
3203 3312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nArg<=ArraySize(azArg) );
3204 3313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=1; j<nArg && j<ArraySize(p->colWidth); j++){
3205 3314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->colWidth[j-1] = (int)integerValue(azArg[j]);
3206 3315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -3210,10 +3319,15 @@
3210 3319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(stderr, "Error: unknown command or invalid arguments: "
3211 3320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" \"%s\". Enter \".help\" for help\n", azArg[0]);
3212 3321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
3213 3322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3214 3323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ meta_command_exit:
3325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->outCount ){
3326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->outCount--;
3327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->outCount==0 ) output_reset(p);
3328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3215 3329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
3216 3330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3217 3331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3218 3332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
3219 3333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return TRUE if a semicolon occurs anywhere in the first N characters
@@ -3377,10 +3491,14 @@
3377 3491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(stderr, "%s %s\n", zPrefix, sqlite3_errmsg(p->db));
3378 3492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3379 3493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
errCnt++;
3380 3494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3381 3495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nSql = 0;
3496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->outCount ){
3497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ output_reset(p);
3498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->outCount = 0;
3499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3382 3500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( nSql && _all_whitespace(zSql) ){
3383 3501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->echoOn ) printf("%s\n", zSql);
3384 3502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nSql = 0;
3385 3503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3386 3504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3387 3505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!