Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix the "onecolumn" and "exists" methods of the TCL interface so that they work in combination with the "profile" callback. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
d362ba157f993fc74a590cf15a9a2fa5 |
User & Date: | drh 2016-06-13 12:34:38 |
Context
2016-06-13
| ||
12:51 | Fix an incorrect assert() in the btree logic. (check-in: fcf6114b user: drh tags: trunk) | |
12:34 | Fix the "onecolumn" and "exists" methods of the TCL interface so that they work in combination with the "profile" callback. (check-in: d362ba15 user: drh tags: trunk) | |
2016-06-10
| ||
22:49 | Enhance "PRAGMA table_info" to that it provides information about eponymous virtual tables. (check-in: 53a1e5d5 user: drh tags: trunk) | |
Changes
Changes to src/tclsqlite.c.
︙ | ︙ | |||
2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 | ** $db onecolumn $sql ** ** The onecolumn method is the equivalent of: ** lindex [$db eval $sql] 0 */ case DB_EXISTS: case DB_ONECOLUMN: { DbEvalContext sEval; if( objc!=3 ){ Tcl_WrongNumArgs(interp, 2, objv, "SQL"); return TCL_ERROR; } dbEvalInit(&sEval, pDb, objv[2], 0); rc = dbEvalStep(&sEval); if( choice==DB_ONECOLUMN ){ if( rc==TCL_OK ){ | > | | > | 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 | ** $db onecolumn $sql ** ** The onecolumn method is the equivalent of: ** lindex [$db eval $sql] 0 */ case DB_EXISTS: case DB_ONECOLUMN: { Tcl_Obj *pResult = 0; DbEvalContext sEval; if( objc!=3 ){ Tcl_WrongNumArgs(interp, 2, objv, "SQL"); return TCL_ERROR; } dbEvalInit(&sEval, pDb, objv[2], 0); rc = dbEvalStep(&sEval); if( choice==DB_ONECOLUMN ){ if( rc==TCL_OK ){ pResult = dbEvalColumnValue(&sEval, 0); }else if( rc==TCL_BREAK ){ Tcl_ResetResult(interp); } }else if( rc==TCL_BREAK || rc==TCL_OK ){ pResult = Tcl_NewBooleanObj(rc==TCL_OK); } dbEvalFinalize(&sEval); if( pResult ) Tcl_SetObjResult(interp, pResult); if( rc==TCL_BREAK ){ rc = TCL_OK; } break; } |
︙ | ︙ |
Changes to test/tclsqlite.test.
︙ | ︙ | |||
630 631 632 633 634 635 636 637 638 639 640 | do_execsql_test tcl-14.1 { CREATE TABLE t6(x); INSERT INTO t6 VALUES(1); } do_test tcl-14.2 { db one {SELECT x FROM t6 WHERE xCall()!='value'} } {} finish_test | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 | do_execsql_test tcl-14.1 { CREATE TABLE t6(x); INSERT INTO t6 VALUES(1); } do_test tcl-14.2 { db one {SELECT x FROM t6 WHERE xCall()!='value'} } {} # Verify that the "exists" and "onecolumn" methods work when # a "profile" is registered. # catch {db close} sqlite3 db :memory: proc noop-profile {args} { return } do_test tcl-15.0 { db eval {CREATE TABLE t1(a); INSERT INTO t1 VALUES(1),(2),(3);} db onecolumn {SELECT a FROM t1 WHERE a>2} } {3} do_test tcl-15.1 { db exists {SELECT a FROM t1 WHERE a>2} } {1} do_test tcl-15.2 { db exists {SELECT a FROM t1 WHERE a>3} } {0} db profile noop-profile do_test tcl-15.3 { db onecolumn {SELECT a FROM t1 WHERE a>2} } {3} do_test tcl-15.4 { db exists {SELECT a FROM t1 WHERE a>2} } {1} do_test tcl-15.5 { db exists {SELECT a FROM t1 WHERE a>3} } {0} finish_test |