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