diff options
Diffstat (limited to 'third_party/sqlite/test/capi3c.test')
-rw-r--r-- | third_party/sqlite/test/capi3c.test | 165 |
1 files changed, 111 insertions, 54 deletions
diff --git a/third_party/sqlite/test/capi3c.test b/third_party/sqlite/test/capi3c.test index cf1a6a9..1bcc437 100644 --- a/third_party/sqlite/test/capi3c.test +++ b/third_party/sqlite/test/capi3c.test @@ -13,7 +13,7 @@ # This is a copy of the capi3.test file that has been adapted to # test the new sqlite3_prepare_v2 interface. # -# $Id: capi3c.test,v 1.19 2008/05/05 16:56:35 drh Exp $ +# $Id: capi3c.test,v 1.23 2009/07/22 07:27:57 danielk1977 Exp $ # set testdir [file dirname $argv0] @@ -63,9 +63,12 @@ do_test capi3c-1.1 { sqlite3_finalize $STMT set TAIL } {} -do_test capi3c-1.2 { +do_test capi3c-1.2.1 { sqlite3_errcode $DB } {SQLITE_OK} +do_test capi3c-1.2.2 { + sqlite3_extended_errcode $DB +} {SQLITE_OK} do_test capi3c-1.3 { sqlite3_errmsg $DB } {not an error} @@ -81,9 +84,12 @@ do_test capi3c-1.5 { set STMT [sqlite3_prepare_v2 $DB $sql -1 TAIL] } } {1} -do_test capi3c-1.6 { +do_test capi3c-1.6.1 { sqlite3_errcode $DB } {SQLITE_ERROR} +do_test capi3c-1.6.2 { + sqlite3_extended_errcode $DB +} {SQLITE_ERROR} do_test capi3c-1.7 { sqlite3_errmsg $DB } {no such column: namex} @@ -108,9 +114,12 @@ ifcapable {utf16} { set STMT [sqlite3_prepare16_v2 $DB $sql -1 TAIL] } } {1} - do_test capi3c-2.4 { + do_test capi3c-2.4.1 { sqlite3_errcode $DB } {SQLITE_ERROR} + do_test capi3c-2.4.2 { + sqlite3_extended_errcode $DB + } {SQLITE_ERROR} do_test capi3c-2.5 { sqlite3_errmsg $DB } {no such column: namex} @@ -779,14 +788,25 @@ do_test capi3c-11.2 { set STMT [sqlite3_prepare_v2 $DB "SELECT func(b, a) FROM t1" -1 TAIL] sqlite3_step $STMT } {SQLITE_ROW} -do_test capi3c-11.3 { + +# As of 3.6.5 a COMMIT is OK during while a query is still running - +# as long as it is a read-only query and not an incremental BLOB write. +# +do_test capi3-11.3.1 { catchsql { COMMIT; } -} {1 {cannot commit transaction - SQL statements in progress}} -do_test capi3c-11.3.1 { +} {0 {}} +do_test capi3-11.3.2 { + sqlite3_extended_errcode $DB +} {SQLITE_OK} +do_test capi3-11.3.3 { sqlite3_get_autocommit $DB -} 0 +} 1 +do_test capi3-11.3.4 { + db eval {PRAGMA lock_status} +} {main shared temp closed} + do_test capi3c-11.4 { sqlite3_step $STMT } {SQLITE_ERROR} @@ -798,15 +818,7 @@ do_test capi3c-11.6 { SELECT * FROM t1; } } {0 {1 int 2 notatype}} -do_test capi3c-11.6.1 { - sqlite3_get_autocommit $DB -} 0 do_test capi3c-11.7 { - catchsql { - COMMIT; - } -} {0 {}} -do_test capi3c-11.7.1 { sqlite3_get_autocommit $DB } 1 do_test capi3c-11.8 { @@ -893,13 +905,13 @@ do_test capi3c-11.20 { BEGIN; COMMIT; } -} {1 {cannot commit transaction - SQL statements in progress}} +} {0 {}} do_test capi3c-11.20 { sqlite3_reset $STMT catchsql { COMMIT; } -} {0 {}} +} {1 {cannot commit - no transaction is active}} do_test capi3c-11.21 { sqlite3_finalize $STMT } {SQLITE_OK} @@ -1168,15 +1180,19 @@ do_test capi3c-19.4 { do_test capi3c-19.4.1 { sqlite3_errmsg $DB } {no such table: t3} -do_test capi3c-19.4.2 { - sqlite3_expired $STMT -} 1 +ifcapable deprecated { + do_test capi3c-19.4.2 { + sqlite3_expired $STMT + } 1 +} do_test capi3c-19.4.3 { sqlite3_errmsg $DB } {no such table: t3} -do_test capi3c-19.4.4 { - sqlite3_expired 0 -} 1 +ifcapable deprecated { + do_test capi3c-19.4.4 { + sqlite3_expired 0 + } 1 +} do_test capi3c-19.5 { sqlite3_reset $STMT db eval { @@ -1185,9 +1201,11 @@ do_test capi3c-19.5 { } sqlite3_step $STMT } SQLITE_ROW -do_test capi3c-19.5.2 { - sqlite3_expired $STMT -} 0 +ifcapable deprecated { + do_test capi3c-19.5.2 { + sqlite3_expired $STMT + } 0 +} do_test capi3c-19.6 { sqlite3_column_int $STMT 1 } 2 @@ -1225,7 +1243,7 @@ ifcapable progress { sqlite3_step $STMT } {SQLITE_INTERRUPT} do_test capi3c-21.2 { - sqlite3_errcode $DB + sqlite3_extended_errcode $DB } {SQLITE_INTERRUPT} do_test capi3c-21.3 { sqlite3_finalize $STMT @@ -1244,6 +1262,9 @@ ifcapable progress { do_test capi3c-21.7 { sqlite3_errcode $DB } {SQLITE_INTERRUPT} + do_test capi3c-21.8 { + sqlite3_extended_errcode $DB + } {SQLITE_INTERRUPT} } # Make sure sqlite3_result_error_code() returns the correct error code. @@ -1271,31 +1292,67 @@ sqlite3_finalize $STMT # conversion (or vice versa) on one column does not change the value of # the second. # -do_test capi3c-23.1 { - set STMT [sqlite3_prepare_v2 db {SELECT b,b,b,b FROM t1} -1 TAIL] - sqlite3_step $STMT -} {SQLITE_ROW} -do_test capi3c-23.2 { - sqlite3_column_text16 $STMT 0 - sqlite3_column_text $STMT 1 -} {one} -do_test capi3c-23.3 { - sqlite3_column_text16 $STMT 2 - sqlite3_column_text $STMT 3 -} {one} -sqlite3_finalize $STMT -do_test capi3c-23.4 { - set STMT [sqlite3_prepare_v2 db {SELECT b||'x',b,b,b FROM t1} -1 TAIL] - sqlite3_step $STMT -} {SQLITE_ROW} -do_test capi3c-23.5 { - sqlite3_column_text16 $STMT 0 - sqlite3_column_text $STMT 1 -} {one} -do_test capi3c-23.6 { - sqlite3_column_text16 $STMT 2 - sqlite3_column_text $STMT 3 -} {one} -sqlite3_finalize $STMT +ifcapable utf16 { + do_test capi3c-23.1 { + set STMT [sqlite3_prepare_v2 db {SELECT b,b,b,b FROM t1} -1 TAIL] + sqlite3_step $STMT + } {SQLITE_ROW} + do_test capi3c-23.2 { + sqlite3_column_text16 $STMT 0 + sqlite3_column_text $STMT 1 + } {one} + do_test capi3c-23.3 { + sqlite3_column_text16 $STMT 2 + sqlite3_column_text $STMT 3 + } {one} + sqlite3_finalize $STMT + do_test capi3c-23.4 { + set STMT [sqlite3_prepare_v2 db {SELECT b||'x',b,b,b FROM t1} -1 TAIL] + sqlite3_step $STMT + } {SQLITE_ROW} + do_test capi3c-23.5 { + sqlite3_column_text16 $STMT 0 + sqlite3_column_text $STMT 1 + } {one} + do_test capi3c-23.6 { + sqlite3_column_text16 $STMT 2 + sqlite3_column_text $STMT 3 + } {one} + sqlite3_finalize $STMT +} + +# Test decltype on some SELECT statements that contain sub-selects. +# +proc decltype {zSql} { + set ret [list] + set STMT [sqlite3_prepare_v2 db $zSql -1 TAIL] + for {set i 0} {$i < [sqlite3_column_count $STMT]} {incr i} { + lappend ret [sqlite3_column_decltype $STMT $i] + } + sqlite3_finalize $STMT + return $ret +} +do_test capi3c-24.1 { + execsql { CREATE TABLE t5(a INTEGER, b STRING, c DATETIME) } + decltype {SELECT * FROM t5} +} {INTEGER STRING DATETIME} +do_test capi3c-24.2 { + decltype {SELECT (SELECT c) FROM t5} +} {DATETIME} +do_test capi3c-24.3 { + decltype {SELECT (SELECT * FROM (SELECT c)) FROM t5} +} {DATETIME} +do_test capi3c-24.4 { + decltype {SELECT * FROM (SELECT * FROM t5 ORDER BY c LIMIT 1) ORDER BY b} +} {INTEGER STRING DATETIME} +do_test capi3c-24.5 { + decltype { + SELECT (SELECT x FROM (SELECT c AS x)) + FROM (SELECT * FROM t5 ORDER BY c LIMIT 1) ORDER BY b + } +} {DATETIME} +do_test capi3c-24.3 { + decltype {SELECT (SELECT x FROM (SELECT t5.a AS x)) FROM t5} +} {INTEGER} finish_test |