Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Make sure the page_count and quick_check pragmas work properly even when their names are capitalized. Fixes a problem reported on the mailing list. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
150592b4b4d86372e70332d4f69e41a0 |
User & Date: | drh 2011-10-13 14:41:22.110 |
References
2011-10-13
| ||
17:09 | An improved fix for the page_count and quick_check problem previously patched at [150592b4b4d8637] (check-in: c3cb7f4fad user: drh tags: trunk) | |
Context
2011-10-13
| ||
15:35 | Make sure the query optimizer for aggregate queries knows that expressions (x='a') and (x='A') are different. Ticket [fa7bf5ec94801e7e] (check-in: e43da426e6 user: drh tags: trunk) | |
14:41 | Make sure the page_count and quick_check pragmas work properly even when their names are capitalized. Fixes a problem reported on the mailing list. (check-in: 150592b4b4 user: drh tags: trunk) | |
14:18 | Adjust the symbols.sh script for STAT3. Add the symbols-mingw.sh script for testing on windows with MinGW. (check-in: c41d1d4652 user: drh tags: trunk) | |
Changes
Changes to src/pragma.c.
︙ | ︙ | |||
463 464 465 466 467 468 469 | if( sqlite3StrICmp(zLeft,"page_count")==0 || sqlite3StrICmp(zLeft,"max_page_count")==0 ){ int iReg; if( sqlite3ReadSchema(pParse) ) goto pragma_out; sqlite3CodeVerifySchema(pParse, iDb); iReg = ++pParse->nMem; | | | 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 | if( sqlite3StrICmp(zLeft,"page_count")==0 || sqlite3StrICmp(zLeft,"max_page_count")==0 ){ int iReg; if( sqlite3ReadSchema(pParse) ) goto pragma_out; sqlite3CodeVerifySchema(pParse, iDb); iReg = ++pParse->nMem; if( (zLeft[0]&0xf)==0 ){ sqlite3VdbeAddOp2(v, OP_Pagecount, iDb, iReg); }else{ sqlite3VdbeAddOp3(v, OP_MaxPgcnt, iDb, iReg, sqlite3Atoi(zRight)); } sqlite3VdbeAddOp2(v, OP_ResultRow, iReg, 1); sqlite3VdbeSetNumCols(v, 1); sqlite3VdbeSetColName(v, 0, COLNAME_NAME, zLeft, SQLITE_TRANSIENT); |
︙ | ︙ | |||
1076 1077 1078 1079 1080 1081 1082 | static const VdbeOpList endCode[] = { { OP_AddImm, 1, 0, 0}, /* 0 */ { OP_IfNeg, 1, 0, 0}, /* 1 */ { OP_String8, 0, 3, 0}, /* 2 */ { OP_ResultRow, 3, 1, 0}, }; | | | 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 | static const VdbeOpList endCode[] = { { OP_AddImm, 1, 0, 0}, /* 0 */ { OP_IfNeg, 1, 0, 0}, /* 1 */ { OP_String8, 0, 3, 0}, /* 2 */ { OP_ResultRow, 3, 1, 0}, }; int isQuick = ((zLeft[0]&0xf)==1); /* Initialize the VDBE program */ if( sqlite3ReadSchema(pParse) ) goto pragma_out; pParse->nMem = 6; sqlite3VdbeSetNumCols(v, 1); sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "integrity_check", SQLITE_STATIC); |
︙ | ︙ |
Changes to test/pragma.test.
︙ | ︙ | |||
325 326 327 328 329 330 331 332 333 334 335 336 337 338 | hexio_write testerr.db 28 00000000 execsql {REINDEX t2} execsql {PRAGMA integrity_check} } {ok} do_test pragma-3.8.1 { execsql {PRAGMA quick_check} } {ok} do_test pragma-3.9 { execsql { ATTACH 'testerr.db' AS t2; PRAGMA integrity_check } } {{*** in database t2 *** Page 4 is never used | > > > | 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 | hexio_write testerr.db 28 00000000 execsql {REINDEX t2} execsql {PRAGMA integrity_check} } {ok} do_test pragma-3.8.1 { execsql {PRAGMA quick_check} } {ok} do_test pragma-3.8.2 { execsql {PRAGMA QUICK_CHECK} } {ok} do_test pragma-3.9 { execsql { ATTACH 'testerr.db' AS t2; PRAGMA integrity_check } } {{*** in database t2 *** Page 4 is never used |
︙ | ︙ | |||
1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 | do_test pragma-14.2 { execsql { CREATE TABLE abc(a, b, c); PRAGMA page_count; } } {2} do_test pragma-14.3 { execsql { BEGIN; CREATE TABLE def(a, b, c); PRAGMA page_count; } } {3} do_test pragma-14.4 { set page_size [db one {pragma page_size}] expr [file size test.db] / $page_size } {2} do_test pragma-14.5 { | > > > > > > | 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 | do_test pragma-14.2 { execsql { CREATE TABLE abc(a, b, c); PRAGMA page_count; } } {2} do_test pragma-14.2uc { execsql {pragma PAGE_COUNT} } {2} do_test pragma-14.3 { execsql { BEGIN; CREATE TABLE def(a, b, c); PRAGMA page_count; } } {3} do_test pragma-14.3uc { execsql {pragma PAGE_COUNT} } {3} do_test pragma-14.4 { set page_size [db one {pragma page_size}] expr [file size test.db] / $page_size } {2} do_test pragma-14.5 { |
︙ | ︙ | |||
1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 | } db2 db2 close execsql { ATTACH 'test2.db' AS aux; PRAGMA aux.page_count; } } {5} } # Test that the value set using the cache_size pragma is not reset when the # schema is reloaded. # ifcapable pager_pragmas { db close | > > > | 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 | } db2 db2 close execsql { ATTACH 'test2.db' AS aux; PRAGMA aux.page_count; } } {5} do_test pragma-14.6uc { execsql {pragma AUX.PAGE_COUNT} } {5} } # Test that the value set using the cache_size pragma is not reset when the # schema is reloaded. # ifcapable pager_pragmas { db close |
︙ | ︙ |