-C If\san\ssqlite3_mprintf()\scall\suses\sa\sdisallowed\sinternal-use-only\sconversion\ncharacter,\sthen\sabort\sthe\scall\swith\sa\s-1\serror\scode.\s\sTicket\s#1818.\s(CVS\s3187)
-D 2006-05-22T22:04:00
+C Fix\stype\scoercion\srules\sfor\sthe\sIN\soperator.\s\sTicket\s#1821.\s(CVS\s3188)
+D 2006-05-23T23:22:29
F Makefile.in 5d8dff443383918b700e495de42ec65bc1c8865b
F Makefile.linux-gcc 74ba0eadf88748a9ce3fd03d2a3ede2e6715baec
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
F src/date.c cd2bd5d1ebc6fa12d6312f69789ae5b0a2766f2e
F src/delete.c 2dea1a83e6ef534346e74fd03114d3a7b16f08fc
F src/experimental.c 1b2d1a6cd62ecc39610e97670332ca073c50792b
-F src/expr.c c85d7bee7d8e3184e00166c2c2ab6edd57b60486
+F src/expr.c f1ad18d0b7bb3abbf09cb30871ae6e7618447bc5
F src/func.c acbbf533b55221f26760798d99b37de3ac5678fe
F src/hash.c 449f3d6620193aa557f5d86cbc5cc6b87702b185
F src/hash.h 1b3f7e2609141fd571f62199fc38687d262e9564
F src/pager.h 43f32f3847421f7502cfbb66f4eb2302b8033818
F src/parse.y ee1887ce0e6eea15cc728913ad3462898f88e9b0
F src/pragma.c 27d5e395c5d950931c7ac4fe610e7c2993e2fa55
-F src/prepare.c 6afd730cc8851c0920b5f9050294646b1c2ab28c
+F src/prepare.c bbf12d3147116b284b157232efaef3bbe5df08fc
F src/printf.c 7029e5f7344a478394a02c52837ff296ee1ab240
F src/random.c d40f8d356cecbd351ccfab6eaedd7ec1b54f5261
F src/select.c 8daba07a04a6d41f5267ea8353324cbe5a210e14
F test/format4.test 9f31d41d4f926cab97b2ebe6be00a6ab12dece87
F test/func.test 27d02fd00b7c2a6b5c8c302d02f9f20876ce5cc8
F test/hook.test 7e7645fd9a033f79cce8fdff151e32715e7ec50a
-F test/in.test 40feeebc7e38576255051aad428322be1545e0f1
+F test/in.test ff339115cf02b302f05fb6495e74a1c544d85121
F test/index.test e65df12bed94b2903ee89987115e1578687e9266
F test/index2.test ee83c6b5e3173a3d7137140d945d9a5d4fdfb9d6
F test/index3.test f66718cd92ce1216819d47e6a156755e4b2c4ca1
F test/trigger7.test 0afa870be2ce1b132cdb85b17a4a4ef45aa8cece
F test/trigger8.test 3a09275aa2214fdff56f731b1e775d8dfee4408a
F test/types.test a74083427a73ff8af2723bae209d09cce5722c3a
-F test/types2.test 81dd1897be8ef4b5b73d0006e6076abe40610de3
+F test/types2.test 202b1afacdb80eddbb5fb5fab6207daaf5b4dfe1
F test/types3.test ea0ddf793ad5cd17c3b029dd8f48473059f873b6
F test/unique.test 0253c4227a5dc533e312202ce21ecfad18058d18
F test/update.test 7669ca789d62c258b678e8aa7a22a57eac10f2cf
F www/copyright-release.html 294e011760c439c44951a6bfecd4c81a1ae359e8
F www/copyright-release.pdf cfca3558fc97095e57c6117d08f1f5b80d95125a
F www/copyright.tcl 58b9586cac0d5914387cfc170bfd80f999dde469
-F www/datatype3.tcl 3216d4586d28c4f1f2d4fbb4c42f12e1d6bdd67e
+F www/datatype3.tcl cec3949b77a1593e89a43272a0a9cdcb1937045a
F www/datatypes.tcl 7c786d2e8ff434346764534ec015966d17efce60
F www/different.tcl 7d528e1371655f6fcd32e8354c5b49f8ede332e7
F www/direct1b.gif 32b48b764244817b6b591898dc52a04299a7b8a7
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
-P 249b579f83b2922e3e03037186a9402af951e6d1
-R a4cc6ce39f4291b2e5ea3f338666a67e
+P 9d7297b9ef6ca2f35116e37f993bb029cf03d4f0
+R f27fe774c169114ee2aa60038b33ea52
U drh
-Z b43f086e88f28ee93e96a6ef04d5296a
+Z 8380180038ff17613da9bacbf7554e8c
-9d7297b9ef6ca2f35116e37f993bb029cf03d4f0
\ No newline at end of file
+6e5a49762166a942e1b2c3beae8a30c07187eb10
\ No newline at end of file
** This file contains routines used for analyzing expressions and
** for generating VDBE code that evaluates expressions in SQLite.
**
-** $Id: expr.c,v 1.257 2006/03/17 13:56:34 drh Exp $
+** $Id: expr.c,v 1.258 2006/05/23 23:22:29 drh Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
struct ExprList_item *pItem;
if( !affinity ){
- affinity = SQLITE_AFF_NUMERIC;
+ affinity = SQLITE_AFF_NONE;
}
keyInfo.aColl[0] = pExpr->pLeft->pColl;
** interface, and routines that contribute to loading the database schema
** from disk.
**
-** $Id: prepare.c,v 1.33 2006/03/13 15:06:07 drh Exp $
+** $Id: prepare.c,v 1.34 2006/05/23 23:22:29 drh Exp $
*/
#include "sqliteInt.h"
#include "os.h"
** meta[1] File format of schema layer.
** meta[2] Size of the page cache.
** meta[3] Use freelist if 0. Autovacuum if greater than zero.
- ** meta[4] Db text encoding. 1:UTF-8 3:UTF-16 LE 4:UTF-16 BE
+ ** meta[4] Db text encoding. 1:UTF-8 2:UTF-16LE 3:UTF-16BE
** meta[5] The user cookie. Used by the application.
** meta[6]
** meta[7]
# This file implements regression tests for SQLite library. The
# focus of this file is testing the IN and BETWEEN operator.
#
-# $Id: in.test,v 1.15 2006/01/30 14:36:59 drh Exp $
+# $Id: in.test,v 1.16 2006/05/23 23:22:29 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
}
} {1 {constraint failed}}
+# Ticket #1821
+#
+# Type affinity applied to the right-hand side of an IN operator.
+#
+do_test in-11.1 {
+ execsql {
+ CREATE TABLE t6(a,b NUMERIC);
+ INSERT INTO t6 VALUES(1,2);
+ INSERT INTO t6 VALUES(2,3);
+ SELECT * FROM t6 WHERE b IN (2);
+ }
+} {1 2}
+do_test in-11.2 {
+ # The '2' should be coerced into 2 because t6.b is NUMERIC
+ execsql {
+ SELECT * FROM t6 WHERE b IN ('2');
+ }
+} {1 2}
+do_test in-11.3 {
+ # No coercion should occur here because of the unary + before b.
+ execsql {
+ SELECT * FROM t6 WHERE +b IN ('2');
+ }
+} {}
finish_test
# of this file is testing the interaction of manifest types, type affinity
# and comparison expressions.
#
-# $Id: types2.test,v 1.5 2005/01/21 03:12:16 danielk1977 Exp $
+# $Id: types2.test,v 1.6 2006/05/23 23:22:29 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
ifcapable subquery {
# types2-5.* - The 'IN (x, y....)' operator with no index.
#
- # Compare literals against literals (always a numeric comparison).
+ # Compare literals against literals (no affinity applied)
test_bool types2-5.1 {} {(NULL IN ('10.0', 20)) ISNULL} 1
- test_bool types2-5.2 {} {10 IN ('10.0', 20)} 1
- test_bool types2-5.3 {} {'10' IN ('10.0', 20)} 1
+ test_bool types2-5.2 {} {10 IN ('10.0', 20)} 0
+ test_bool types2-5.3 {} {'10' IN ('10.0', 20)} 0
test_bool types2-5.4 {} {10 IN (10.0, 20)} 1
test_bool types2-5.5 {} {'10.0' IN (10, 20)} 1
-set rcsid {$Id: datatype3.tcl,v 1.13 2006/04/01 14:38:41 drh Exp $}
+set rcsid {$Id: datatype3.tcl,v 1.14 2006/05/23 23:22:29 drh Exp $}
source common.tcl
header {Datatypes In SQLite Version 3}
puts {
<LI>TEXT</LI>
<LI>NUMERIC</LI>
<LI>INTEGER</LI>
+ <LI>REAL</li>
<LI>NONE</LI>
</UL>
inserted it is converted to an integer and stored using the INTEGER
storage class.</P>
+<P>A column with REAL affinity behaves like a column with NUMERIC
+affinity except that it forces integer values into floating point
+representation. (As an optimization, integer values are stored on
+disk as integers in order to take up less space and are only converted
+to floating point as the value is read out of the table.)</P>
+
<P>A column with affinity NONE does not prefer one storage class over
another. It makes no attempt to coerce data before
it is inserted.</P>
contains the string "BLOB" or if
no datatype is specified then the column has affinity NONE.</P>
+ <LI><P>If the datatype for a column
+ contains any of the strings "REAL", "FLOA",
+ or "DOUB" then the column has REAL affinity</P>
+
<LI><P>Otherwise, the affinity is NUMERIC.</P>
</OL>
affinity is applied to any values with storage class TEXT extracted
from the non-NUMERIC column.</P>
- <LI><P>When the results of two expressions are compared, the no
+ <LI><P>When the results of two expressions are compared, no
conversions occur. The results are compared as is. If a string
is compared to a number, the number will always be less than the
string.</P>