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