xref: /sqlite-3.40.0/test/columncount.test (revision 37f3ac8f)
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