Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a problem with the CLI where not all SQL commands were being echoed. Added tests of same to tools/shell2.test. Ticket [eb620916be]. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
7080ae3bc3828168483ac23d5b8976d6 |
User & Date: | shaneh 2010-01-18 18:17:10.000 |
References
2010-01-18
| ||
18:16 | • Ticket [eb620916be] Shell doesn't print header if multiple statements on one line status still Fixed with 1 other change (artifact: c11d4043ee user: shane) | |
Context
2010-01-20
| ||
01:20 | Manually copy over the rebustness fixes from the apple-osx branch. (check-in: 095c74ea62 user: drh tags: trunk) | |
2010-01-18
| ||
18:17 | Fix a problem with the CLI where not all SQL commands were being echoed. Added tests of same to tools/shell2.test. Ticket [eb620916be]. (check-in: 7080ae3bc3 user: shaneh tags: trunk) | |
2010-01-15
| ||
17:33 | Fix test numbering in fts3snippet.test. (check-in: 34f6854685 user: dan tags: trunk) | |
Changes
Changes to src/shell.c.
︙ | ︙ | |||
1497 1498 1499 1500 1501 1502 1503 | ** This is the callback routine that the shell ** invokes for each row of a query result. */ static int shell_callback(void *pArg, int nArg, char **azArg, char **azCol, int *aiType){ int i; struct callback_data *p = (struct callback_data*)pArg; | < < < < | 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 | ** This is the callback routine that the shell ** invokes for each row of a query result. */ static int shell_callback(void *pArg, int nArg, char **azArg, char **azCol, int *aiType){ int i; struct callback_data *p = (struct callback_data*)pArg; switch( p->mode ){ case MODE_Line: { int w = 5; if( azArg==0 ) break; for(i=0; i<nArg; i++){ int len = strlen30(azCol[i] ? azCol[i] : ""); if( len>w ) w = len; |
︙ | ︙ | |||
1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 | }else{ if( !pStmt ){ /* this happens for a comment or white-space */ zSql = zLeftover; while( isspace(zSql[0]) ) zSql++; continue; } /* perform the first step. this will tell us if we ** have a result set or not and how wide it is. */ rc = sqlite3_step(pStmt); /* if we have a result set... */ if( SQLITE_ROW == rc ){ | > > > > > > | 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 | }else{ if( !pStmt ){ /* this happens for a comment or white-space */ zSql = zLeftover; while( isspace(zSql[0]) ) zSql++; continue; } /* echo the sql statement if echo on */ if( pArg->echoOn ){ char *zStmtSql = sqlite3_sql(pStmt); fprintf(pArg->out,"%s\n", zStmtSql ? zStmtSql : zSql); } /* perform the first step. this will tell us if we ** have a result set or not and how wide it is. */ rc = sqlite3_step(pStmt); /* if we have a result set... */ if( SQLITE_ROW == rc ){ |
︙ | ︙ |
Changes to tool/shell2.test.
︙ | ︙ | |||
95 96 97 98 99 100 101 | END; UPDATE OR REPLACE t5 SET a = 4 WHERE a = 1; } } {1 {Error: near line 9: too many levels of trigger recursion}} | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 | END; UPDATE OR REPLACE t5 SET a = 4 WHERE a = 1; } } {1 {Error: near line 9: too many levels of trigger recursion}} # Shell not echoing all commands with echo on. # Ticket [eb620916be]. # Test with echo off # NB. whitespace is important do_test shell2-1.4.1 { file delete -force foo.db catchcmd "foo.db" {CREATE TABLE foo(a); INSERT INTO foo(a) VALUES(1); SELECT * FROM foo;} } {0 1} # Test with echo on using command line option # NB. whitespace is important do_test shell2-1.4.2 { file delete -force foo.db catchcmd "-echo foo.db" {CREATE TABLE foo(a); INSERT INTO foo(a) VALUES(1); SELECT * FROM foo;} } {0 {CREATE TABLE foo(a); INSERT INTO foo(a) VALUES(1); SELECT * FROM foo; 1}} # Test with echo on using dot command # NB. whitespace is important do_test shell2-1.4.3 { file delete -force foo.db catchcmd "foo.db" {.echo ON CREATE TABLE foo(a); INSERT INTO foo(a) VALUES(1); SELECT * FROM foo;} } {0 {CREATE TABLE foo(a); INSERT INTO foo(a) VALUES(1); SELECT * FROM foo; 1}} # Test with echo on using dot command and # turning off mid- processing. # NB. whitespace is important do_test shell2-1.4.4 { file delete -force foo.db catchcmd "foo.db" {.echo ON CREATE TABLE foo(a); .echo OFF INSERT INTO foo(a) VALUES(1); SELECT * FROM foo;} } {0 {CREATE TABLE foo(a); .echo OFF 1}} # Test with echo on using dot command and # multiple commands per line. # NB. whitespace is important do_test shell2-1.4.5 { file delete -force foo.db catchcmd "foo.db" {.echo ON CREATE TABLE foo1(a); INSERT INTO foo1(a) VALUES(1); CREATE TABLE foo2(b); INSERT INTO foo2(b) VALUES(1); SELECT * FROM foo1; SELECT * FROM foo2; INSERT INTO foo1(a) VALUES(2); INSERT INTO foo2(b) VALUES(2); SELECT * FROM foo1; SELECT * FROM foo2; } } {0 {CREATE TABLE foo1(a); INSERT INTO foo1(a) VALUES(1); CREATE TABLE foo2(b); INSERT INTO foo2(b) VALUES(1); SELECT * FROM foo1; 1 SELECT * FROM foo2; 1 INSERT INTO foo1(a) VALUES(2); INSERT INTO foo2(b) VALUES(2); SELECT * FROM foo1; 1 2 SELECT * FROM foo2; 1 2}} # Test with echo on and headers on using dot command and # multiple commands per line. # NB. whitespace is important do_test shell2-1.4.6 { file delete -force foo.db catchcmd "foo.db" {.echo ON .headers ON CREATE TABLE foo1(a); INSERT INTO foo1(a) VALUES(1); CREATE TABLE foo2(b); INSERT INTO foo2(b) VALUES(1); SELECT * FROM foo1; SELECT * FROM foo2; INSERT INTO foo1(a) VALUES(2); INSERT INTO foo2(b) VALUES(2); SELECT * FROM foo1; SELECT * FROM foo2; } } {0 {.headers ON CREATE TABLE foo1(a); INSERT INTO foo1(a) VALUES(1); CREATE TABLE foo2(b); INSERT INTO foo2(b) VALUES(1); SELECT * FROM foo1; a 1 SELECT * FROM foo2; b 1 INSERT INTO foo1(a) VALUES(2); INSERT INTO foo2(b) VALUES(2); SELECT * FROM foo1; a 1 2 SELECT * FROM foo2; b 1 2}} |