xref: /sqlite-3.40.0/test/bindxfer.test (revision 382ffd9e)
1f8db1bc0Sdrh# 2005 April 21
2f8db1bc0Sdrh#
3f8db1bc0Sdrh# The author disclaims copyright to this source code.  In place of
4f8db1bc0Sdrh# a legal notice, here is a blessing:
5f8db1bc0Sdrh#
6f8db1bc0Sdrh#    May you do good and not evil.
7f8db1bc0Sdrh#    May you find forgiveness for yourself and forgive others.
8f8db1bc0Sdrh#    May you share freely, never taking more than you give.
9f8db1bc0Sdrh#
10f8db1bc0Sdrh#***********************************************************************
11f8db1bc0Sdrh# This file implements regression tests for SQLite library.  The
12f8db1bc0Sdrh# focus of this script testing the sqlite_transfer_bindings() API.
13f8db1bc0Sdrh#
14*382ffd9eSdrh# $Id: bindxfer.test,v 1.9 2009/04/17 11:56:28 drh Exp $
15f8db1bc0Sdrh#
16f8db1bc0Sdrh
17f8db1bc0Sdrhset testdir [file dirname $argv0]
18f8db1bc0Sdrhsource $testdir/tester.tcl
19f8db1bc0Sdrh
20f8db1bc0Sdrhproc sqlite_step {stmt VALS COLS} {
21f8db1bc0Sdrh  upvar #0 $VALS vals
22f8db1bc0Sdrh  upvar #0 $COLS cols
23f8db1bc0Sdrh  set vals [list]
24f8db1bc0Sdrh  set cols [list]
25f8db1bc0Sdrh
26f8db1bc0Sdrh  set rc [sqlite3_step $stmt]
27f8db1bc0Sdrh  for {set i 0} {$i < [sqlite3_column_count $stmt]} {incr i} {
28f8db1bc0Sdrh    lappend cols [sqlite3_column_name $stmt $i]
29f8db1bc0Sdrh  }
30f8db1bc0Sdrh  for {set i 0} {$i < [sqlite3_data_count $stmt]} {incr i} {
31f8db1bc0Sdrh    lappend vals [sqlite3_column_text $stmt $i]
32f8db1bc0Sdrh  }
33f8db1bc0Sdrh
34f8db1bc0Sdrh  return $rc
35f8db1bc0Sdrh}
36f8db1bc0Sdrh
37f8db1bc0Sdrhdo_test bindxfer-1.1 {
38dddca286Sdrh  set DB [sqlite3_connection_pointer db]
39f8db1bc0Sdrh  execsql {CREATE TABLE t1(a,b,c);}
40f8db1bc0Sdrh  set VM1 [sqlite3_prepare $DB {SELECT ?, ?, ?} -1 TAIL]
41f8db1bc0Sdrh  set TAIL
42f8db1bc0Sdrh} {}
43f8db1bc0Sdrhdo_test bindxfer-1.2 {
44f8db1bc0Sdrh  sqlite3_bind_parameter_count $VM1
45f8db1bc0Sdrh} 3
46f8db1bc0Sdrhdo_test bindxfer-1.3 {
47f8db1bc0Sdrh  set VM2 [sqlite3_prepare $DB {SELECT ?, ?, ?} -1 TAIL]
48f8db1bc0Sdrh  set TAIL
49f8db1bc0Sdrh} {}
50f8db1bc0Sdrhdo_test bindxfer-1.4 {
51f8db1bc0Sdrh  sqlite3_bind_parameter_count $VM2
52f8db1bc0Sdrh} 3
53eec556d3Sshaneifcapable deprecated {
54f8db1bc0Sdrh  do_test bindxfer-1.5 {
55f8db1bc0Sdrh    sqlite_bind $VM1 1 one normal
56f8db1bc0Sdrh    set sqlite_static_bind_value two
57f8db1bc0Sdrh    sqlite_bind $VM1 2 {} static
58f8db1bc0Sdrh    sqlite_bind $VM1 3 {} null
59f8db1bc0Sdrh    sqlite3_transfer_bindings $VM1 $VM2
60f8db1bc0Sdrh    sqlite_step $VM1 VALUES COLNAMES
61f8db1bc0Sdrh  } SQLITE_ROW
62f8db1bc0Sdrh  do_test bindxfer-1.6 {
63f8db1bc0Sdrh    set VALUES
64f8db1bc0Sdrh  } {{} {} {}}
65f8db1bc0Sdrh  do_test bindxfer-1.7 {
66f8db1bc0Sdrh    sqlite_step $VM2 VALUES COLNAMES
67f8db1bc0Sdrh  } SQLITE_ROW
68f8db1bc0Sdrh  do_test bindxfer-1.8 {
69f8db1bc0Sdrh    set VALUES
70f8db1bc0Sdrh  } {one two {}}
71eec556d3Sshane}
727c4ac0c5Sdrhcatch {sqlite3_finalize $VM1}
737c4ac0c5Sdrhcatch {sqlite3_finalize $VM2}
745f9c1a2cSdrh
75f8db1bc0Sdrh
76f8db1bc0Sdrhfinish_test
77