Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix the expert extension so that it handles generated columns correctly. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
c2ae7ba6f8f4b10bd734051a0cfa8ed9 |
User & Date: | dan 2020-12-11 14:22:44.596 |
Context
2020-12-11
| ||
14:34 | Fix the configure script on the autoconf distribution so that the --disable-threadsafe option works. See FreeBSD bug 244459. (check-in: e64ff2cce3 user: drh tags: trunk) | |
14:22 | Fix the expert extension so that it handles generated columns correctly. (check-in: c2ae7ba6f8 user: dan tags: trunk) | |
2020-12-10
| ||
19:54 | Remove a redundant branch added by [56a54258560]. (check-in: b4d6f6d728 user: dan tags: trunk) | |
Changes
Changes to ext/expert/expert1.test.
︙ | ︙ | |||
23 24 25 26 27 28 29 30 31 32 33 34 35 36 | source $testdir/tester.tcl set testprefix expert1 if {[info commands sqlite3_expert_new]==""} { finish_test return } set CLI [test_binary_name sqlite3] set CMD [test_binary_name sqlite3_expert] proc squish {txt} { regsub -all {[[:space:]]+} $txt { } } | > | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | source $testdir/tester.tcl set testprefix expert1 if {[info commands sqlite3_expert_new]==""} { finish_test return } set CLI [test_binary_name sqlite3] set CMD [test_binary_name sqlite3_expert] proc squish {txt} { regsub -all {[[:space:]]+} $txt { } } |
︙ | ︙ | |||
363 364 365 366 367 368 369 370 371 372 373 374 375 376 | } { SELECT * FROM example WHERE a>? AND b=? } { CREATE INDEX example_idx_0000cb3f ON example(B, A); SEARCH TABLE example USING INDEX example_idx_0000cb3f (B=? AND A>?) } } proc do_candidates_test {tn sql res} { set res [squish [string trim $res]] set expert [sqlite3_expert_new db] $expert sql $sql | > > > > > > > > > > > > > > > > > > > > > > > | 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 | } { SELECT * FROM example WHERE a>? AND b=? } { CREATE INDEX example_idx_0000cb3f ON example(B, A); SEARCH TABLE example USING INDEX example_idx_0000cb3f (B=? AND A>?) } do_setup_rec_test $tn.18.0 { CREATE TABLE SomeObject ( a INTEGER PRIMARY KEY, x TEXT GENERATED ALWAYS AS(HEX(a)) VIRTUAL ); } { SELECT x FROM SomeObject; } { (no new indexes) SCAN TABLE SomeObject } do_setup_rec_test $tn.18.1 { CREATE TABLE SomeObject ( a INTEGER PRIMARY KEY, x TEXT GENERATED ALWAYS AS(HEX(a)) VIRTUAL ); } { SELECT * FROM SomeObject WHERE x=?; } { CREATE INDEX SomeObject_idx_00000078 ON SomeObject(x); SEARCH TABLE SomeObject USING COVERING INDEX SomeObject_idx_00000078 (x=?) } } proc do_candidates_test {tn sql res} { set res [squish [string trim $res]] set expert [sqlite3_expert_new db] $expert sql $sql |
︙ | ︙ | |||
426 427 428 429 430 431 432 | t1 t1_idx_00000062 {100 20} t1 t1_idx_000123a7 {100 50 17} t2 t2_idx_00000063 {100 20} t2 t2_idx_00000064 {100 5} t2 t2_idx_0001295b {100 20 5} } | < > | 450 451 452 453 454 455 456 457 458 | t1 t1_idx_00000062 {100 20} t1 t1_idx_000123a7 {100 50 17} t2 t2_idx_00000063 {100 20} t2 t2_idx_00000064 {100 5} t2 t2_idx_0001295b {100 20 5} } finish_test |
Changes to ext/expert/sqlite3expert.c.
︙ | ︙ | |||
683 684 685 686 687 688 689 | int nTab = STRLEN(zTab); int nByte = sizeof(IdxTable) + nTab + 1; IdxTable *pNew = 0; int rc, rc2; char *pCsr = 0; int nPk = 0; | | | 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 | int nTab = STRLEN(zTab); int nByte = sizeof(IdxTable) + nTab + 1; IdxTable *pNew = 0; int rc, rc2; char *pCsr = 0; int nPk = 0; rc = idxPrintfPrepareStmt(db, &p1, pzErrmsg, "PRAGMA table_xinfo=%Q", zTab); while( rc==SQLITE_OK && SQLITE_ROW==sqlite3_step(p1) ){ const char *zCol = (const char*)sqlite3_column_text(p1, 1); nByte += 1 + STRLEN(zCol); rc = sqlite3_table_column_metadata( db, "main", zTab, zCol, 0, &zCol, 0, 0, 0 ); nByte += 1 + STRLEN(zCol); |
︙ | ︙ |