1252fe67bSdan# 2022 Feb 10 2252fe67bSdan# 3252fe67bSdan# The author disclaims copyright to this source code. In place of 4252fe67bSdan# a legal notice, here is a blessing: 5252fe67bSdan# 6252fe67bSdan# May you do good and not evil. 7252fe67bSdan# May you find forgiveness for yourself and forgive others. 8252fe67bSdan# May you share freely, never taking more than you give. 9252fe67bSdan# 10252fe67bSdan#*********************************************************************** 11252fe67bSdan# 12252fe67bSdan 13252fe67bSdanset testdir [file dirname $argv0] 14252fe67bSdansource $testdir/tester.tcl 15252fe67bSdanset testprefix bind2 16252fe67bSdan 17252fe67bSdan 18252fe67bSdan# Test that using bind_value() on a REAL sqlite3_value that was stored 19252fe67bSdan# as an INTEGER works properly. 20252fe67bSdan# 21252fe67bSdan# 1.1: An IntReal value read from a table, 22252fe67bSdan# 1.2: IntReal values obtained via the sqlite3_preupdate_old|new() 23252fe67bSdan# interfaces. 24252fe67bSdan# 25252fe67bSdando_execsql_test 1.0 { 26252fe67bSdan CREATE TABLE t1(a REAL); 27252fe67bSdan INSERT INTO t1 VALUES(42.0); 28252fe67bSdan SELECT * FROM t1; 29252fe67bSdan} {42.0} 30252fe67bSdan 31252fe67bSdando_test 1.1 { 32252fe67bSdan set stmt [sqlite3_prepare db "SELECT ?" -1 tail] 33252fe67bSdan sqlite3_bind_value_from_select $stmt 1 "SELECT a FROM t1" 34252fe67bSdan sqlite3_step $stmt 35252fe67bSdan sqlite3_column_text $stmt 0 36252fe67bSdan} {42.0} 37252fe67bSdansqlite3_finalize $stmt 38252fe67bSdan 39*fa3ee3b1Sdrhifcapable !preupdate { 40*fa3ee3b1Sdrh finish_test 41*fa3ee3b1Sdrh return 42*fa3ee3b1Sdrh} 43*fa3ee3b1Sdrh 44252fe67bSdanproc preup {args} { 45252fe67bSdan set stmt [sqlite3_prepare db "SELECT ?" -1 tail] 46252fe67bSdan sqlite3_bind_value_from_preupdate $stmt 1 old 0 47252fe67bSdan sqlite3_step $stmt 48252fe67bSdan lappend ::reslist [sqlite3_column_text $stmt 0] 49252fe67bSdan sqlite3_reset $stmt 50252fe67bSdan sqlite3_bind_value_from_preupdate $stmt 1 new 0 51252fe67bSdan sqlite3_step $stmt 52252fe67bSdan lappend ::reslist [sqlite3_column_text $stmt 0] 53252fe67bSdan sqlite3_finalize $stmt 54252fe67bSdan} 55252fe67bSdandb preupdate hook preup 56252fe67bSdan 57252fe67bSdando_test 1.2 { 58252fe67bSdan set ::reslist [list] 59252fe67bSdan execsql { UPDATE t1 SET a=43; } 60252fe67bSdan set ::reslist 61252fe67bSdan} {42.0 43.0} 62252fe67bSdan 63252fe67bSdanfinish_test 64