xref: /sqlite-3.40.0/test/bind2.test (revision fa3ee3b1)
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