Hello!
I find some incorrect types casting for constants in all SQLite versions.
================= test script =================
#!/usr/bin/tclsh8.5
package require sqlite3
sqlite3 db :memory:
db eval {
create table test(a int);
insert into test values (1);
}
proc test {label sql} {
global i
puts -nonewline $label\t
puts [db eval $sql]
}
set i 1
test 1.1 {select * from test where a=$i}
test 1.2 {select * from test where 1=$i} ;# it doesn't work
test 1.3 {select a from test where a IN (cast($i AS INT), 160)}
test 1.4 {select a from test where 1 IN (cast($i AS INT), 160)}
set i [db onecolumn {select quote($i)}]
test 2.1 "select * from test where a=$i"
test 2.2 "select * from test where 1=$i" ;# it doesn't work
test 2.3 "select a from test where a IN ($i, 160)"
test 2.4 "select a from test where 1 IN ($i, 160)" ;# it doesn't work
test 3.1 "create view view_test1 as select * from test where a=$i;select * from
view_test1"
test 3.2 "create view view_test2 as select * from test where 1=$i;select * from
view_test2" ;# it doesn't work
test 3.3 "create view view_test3 as select * from test where a IN ($i);select *
from view_test3"
test 3.4 "create view view_test4 as select * from test where 1 IN ($i);select *
from view_test4" ;# it doesn't work
======================================
================= result =================
1.1 1
1.2
1.3 1
1.4 1
2.1 1
2.2
2.3 1
2.4
3.1 1
3.2
3.3 1
3.4
======================================
Of cource results of tests 1.1 and 1.2, 2.1 and 2.2, etc. must be equal.
I sqlite3 shell all work correct.
============== sqlite3 shell ================
sqlite> select * from test where 1=1;
1
sqlite> select * from test where 1=quote(1);
1
sqlite> select a from test where a IN (1, 160);
1
sqlite> select a from test where 1 IN (1, 160);
1
sqlite> select a from test where 1 IN (quote(1), 160);
1
sqlite> select a from test where a IN (quote(1), 160);
1
======================================
P.S. I did report about this problem some times ago...
Best regards, Alexey Pechnikov.
http://pechnikov.tel/
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users