1f2b32e89Sdan# 2021 February 15 2f2b32e89Sdan# 3f2b32e89Sdan# The author disclaims copyright to this source code. In place of 4f2b32e89Sdan# a legal notice, here is a blessing: 5f2b32e89Sdan# 6f2b32e89Sdan# May you do good and not evil. 7f2b32e89Sdan# May you find forgiveness for yourself and forgive others. 8f2b32e89Sdan# May you share freely, never taking more than you give. 9f2b32e89Sdan# 10f2b32e89Sdan#*********************************************************************** 11f2b32e89Sdan# This file implements regression tests for SQLite library. The 12f2b32e89Sdan# focus of this file is testing the sqlite3_column_count() API. 13f2b32e89Sdan# 14f2b32e89Sdan 15f2b32e89Sdanset testdir [file dirname $argv0] 16f2b32e89Sdansource $testdir/tester.tcl 17f2b32e89Sdanset testprefix columncount 18f2b32e89Sdan 19*37f3ac8fSdan# If SQLITE_OMIT_ALTERTABLE is defined, omit this file. 20*37f3ac8fSdanifcapable !altertable { 21*37f3ac8fSdan finish_test 22*37f3ac8fSdan return 23*37f3ac8fSdan} 24*37f3ac8fSdan 25f2b32e89Sdanproc do_ccsql_test {tn sql res} { 26f2b32e89Sdan 27f2b32e89Sdan uplevel [list do_test $tn [subst -nocommands { 28f2b32e89Sdan set stmt [sqlite3_prepare_v2 db {$sql} -1 dummy] 29f2b32e89Sdan set res [sqlite3_column_count [set stmt]] 30f2b32e89Sdan while {[sqlite3_step [set stmt]]=="SQLITE_ROW"} { 31f2b32e89Sdan for {set i 0} {[set i] < [sqlite3_data_count [set stmt]]} {incr i} { 32f2b32e89Sdan lappend res [sqlite3_column_text [set stmt] [set i]] 33f2b32e89Sdan } 34f2b32e89Sdan } 35f2b32e89Sdan 36f2b32e89Sdan set rc [sqlite3_finalize [set stmt]] 37f2b32e89Sdan if {[set rc]!="SQLITE_OK"} { 38f2b32e89Sdan error [sqlite3_errmsg db] 39f2b32e89Sdan } 40f2b32e89Sdan 41f2b32e89Sdan set res 42f2b32e89Sdan }] [list {*}$res]] 43f2b32e89Sdan 44f2b32e89Sdan} 45f2b32e89Sdan 46f2b32e89Sdando_execsql_test 1.0 { 47f2b32e89Sdan CREATE TABLE t1(x, y, z); 48f2b32e89Sdan INSERT INTO t1 VALUES('a', 'b', 'c'); 49f2b32e89Sdan} 50f2b32e89Sdan 51f2b32e89Sdando_ccsql_test 1.1 { SELECT * FROM t1 } {3 a b c} 52f2b32e89Sdando_ccsql_test 1.2 { CREATE TABLE t2(a, b) } {0} 53f2b32e89Sdan 54f2b32e89Sdando_ccsql_test 1.3 { ALTER TABLE t2 RENAME TO t3 } {0} 55f2b32e89Sdando_ccsql_test 1.4 { ALTER TABLE t3 RENAME b TO ccc } {0} 56f2b32e89Sdando_ccsql_test 1.5 { ALTER TABLE t3 ADD COLUMN d } {0} 57f2b32e89Sdan 58f2b32e89Sdando_ccsql_test 1.6 { DROP TABLE t3 } {0} 59f2b32e89Sdan 60f2b32e89Sdan 61f2b32e89Sdan 62f2b32e89Sdanfinish_test 63