1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

Fix problems with types and the recognition of BLOB as having no affinity. (CVS 1418)

FossilOrigin-Name: 8411718f0ac17e9c2376fdf8b5fa0cc5fc88be9b
This commit is contained in:
drh
2004-05-20 12:41:19 +00:00
parent 1ad3b9e61a
commit e2ea40d36d
6 changed files with 34 additions and 45 deletions

View File

@ -1,5 +1,5 @@
C Default\stype\saffinity\sis\snow\sNUMERIC.\s\sThe\saffinity.html\sfile\schecked\sinto\nthe\sdoc\sdirectory.\s(CVS\s1417)
D 2004-05-20T12:10:20
C Fix\sproblems\swith\stypes\sand\sthe\srecognition\sof\sBLOB\sas\shaving\sno\saffinity.\s(CVS\s1418)
D 2004-05-20T12:41:20
F Makefile.in ab7b0d5118e2da97bac66be8684a1034e3500f5a
F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
@ -27,7 +27,7 @@ F src/auth.c 5c2f0bea4729c98c2be3b69d6b466fc51448fe79
F src/btree.c 7abf1261c204e23aeeef12ec1bf75f5eca57d469
F src/btree.h b65140b5ae891f30d2a39e64b9f0343225553545
F src/btree_rb.c 9d7973e266ee6f9c61ce592f68742ce9cd5b10e5
F src/build.c c3e7b98a5b4de896fdb6cfe749518902baed66fe
F src/build.c 7310eb68de59281c6dbfe49b728200e3d89b91dd
F src/copy.c 4d2038602fd0549d80c59bda27d96f13ea9b5e29
F src/date.c 0eb0a89960bb45c7f7e768748605a7a97b0c8064
F src/delete.c 2e1dda38345416a1ea1c0a6468589a7472334dac
@ -43,7 +43,7 @@ F src/os.c ddcda92f7fd71b4513c57c1ec797917f206d504e
F src/os.h 6e446a17cbeb6c2ce470683a0bb8d9c63abe8607
F src/pager.c 6ff6b906427d4824099140776cb8768f922f3dc5
F src/pager.h 78a00ac280899bcba1a89dc51585dcae6b7b3253
F src/parse.y d2e226650738931c047c2562326ed05882af2330
F src/parse.y 4ed66f12583796dd4d5fff6860dc7e16f1d15cae
F src/pragma.c 2332e7fa9d7cd4b21f30583a696bee36628404ca
F src/printf.c ef750e8e2398ca7e8b58be991075f08c6a7f0e53
F src/random.c eff68e3f257e05e81eae6c4d50a51eb88beb4ff3
@ -146,8 +146,8 @@ F test/trigger1.test 4538c1c7d6bbca5dfe619ea6e1682b07ece95b21
F test/trigger2.test 0767ab30cb5a2c8402c8524f3d566b410b6f5263
F test/trigger3.test a95ccace88291449f5eae7139ec438a42f90654d
F test/trigger4.test 542afce45774e8f8e1130b96b8675f414d6e4bd8
F test/types.test a16dad25e2a7591ddbca206b465a963953f5e10f
F test/types2.test b9b528e5ec6c5d8ee149ff27d48a23ce3f6075d9
F test/types.test e1e0d71c8e65f8aa5d9a36751f4c8cbce6f01f7a
F test/types2.test 5d725fcb68dbd032c6d4950d568d75fa33872687
F test/unique.test 0e38d4cc7affeef2527720d1dafd1f6870f02f2b
F test/update.test b29bd9061a1150426dab6959806fcc73a41b1217
F test/vacuum.test a2a44544df719666efb51afbfeb6062fd59a672a
@ -195,7 +195,7 @@ F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604
F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da
F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1
F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
P 2821767b947ae1a70e98dd7f47d69e424c37947f
R 47e063b297603452597f44008f0d5f06
P 948307f07d6f8cc1cc186167ff7aaa5dfd5d8a2e
R 59f05a5952887901890856f7cd04108e
U drh
Z f81faf25453e97891fc89436b647ef37
Z 90bb81f98be65daf25dbb23b209b7296

View File

@ -1 +1 @@
948307f07d6f8cc1cc186167ff7aaa5dfd5d8a2e
8411718f0ac17e9c2376fdf8b5fa0cc5fc88be9b

View File

@ -23,7 +23,7 @@
** ROLLBACK
** PRAGMA
**
** $Id: build.c,v 1.188 2004/05/20 12:10:20 drh Exp $
** $Id: build.c,v 1.189 2004/05/20 12:41:20 drh Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
@ -587,10 +587,10 @@ void sqlite3AddColumn(Parse *pParse, Token *pName){
pCol->zName = z;
/* If there is no type specified, columns have the default affinity
** 'NONE'. If there is a type specified, then sqlite3AddColumnType()
** 'NUMERIC'. If there is a type specified, then sqlite3AddColumnType()
** will be called next to set pCol->affinity correctly.
*/
pCol->affinity = SQLITE_AFF_NONE;
pCol->affinity = SQLITE_AFF_NUMERIC;
p->nCol++;
}

View File

@ -14,7 +14,7 @@
** the parser. Lemon will also generate a header file containing
** numeric codes for all of the tokens.
**
** @(#) $Id: parse.y,v 1.114 2004/05/18 10:06:25 danielk1977 Exp $
** @(#) $Id: parse.y,v 1.115 2004/05/20 12:41:20 drh Exp $
*/
%token_prefix TK_
%token_type {Token}
@ -162,8 +162,8 @@ type ::= typename(X) LP signed RP(Y). {sqlite3AddColumnType(pParse,&X,&Y);}
type ::= typename(X) LP signed COMMA signed RP(Y).
{sqlite3AddColumnType(pParse,&X,&Y);}
%type typename {Token}
typename(A) ::= ids(X). {A = X;}
typename(A) ::= typename(X) ids. {A = X;}
typename(A) ::= ids(X). {A = X;}
typename(A) ::= typename(X) ids(Y). {A.z=X.z; A.n=X.n+Addr(Y.z)-Addr(X.z);}
%type signed {int}
signed(A) ::= INTEGER(X). { A = atoi(X.z); }
signed(A) ::= PLUS INTEGER(X). { A = atoi(X.z); }
@ -895,6 +895,3 @@ database_kw_opt ::= .
cmd ::= DETACH database_kw_opt nm(D). {
sqlite3Detach(pParse, &D);
}

View File

@ -12,7 +12,7 @@
# it tests that the different storage classes (integer, real, text etc.)
# all work correctly.
#
# $Id: types.test,v 1.4 2004/05/18 10:06:26 danielk1977 Exp $
# $Id: types.test,v 1.5 2004/05/20 12:41:20 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -41,7 +41,7 @@ source $testdir/tester.tcl
# Create a table with one column for each type of affinity
do_test types-1.1.0 {
execsql {
CREATE TABLE t1(i integer, n numeric, t text, o);
CREATE TABLE t1(i integer, n numeric, t text, o blob);
}
} {}
@ -51,16 +51,16 @@ do_test types-1.1.0 {
# four value are the storage classes that would be used if the
# literal were inserted into a column with affinity INTEGER, NUMERIC, TEXT
# or NONE, respectively.
set values [list \
[list 5.0 INTEGER REAL TEXT REAL] \
[list 5 INTEGER INTEGER TEXT INTEGER] \
[list '5.0' INTEGER REAL TEXT TEXT] \
[list '-5.0' INTEGER REAL TEXT TEXT] \
[list '-5.0' INTEGER REAL TEXT TEXT] \
[list '5' INTEGER INTEGER TEXT TEXT] \
[list 'abc' TEXT TEXT TEXT TEXT] \
[list NULL NULL NULL NULL NULL] \
]
set values {
{ 5.0 INTEGER REAL TEXT REAL }
{ 5 INTEGER INTEGER TEXT INTEGER }
{ '5.0' INTEGER REAL TEXT TEXT }
{ '-5.0' INTEGER REAL TEXT TEXT }
{ '-5.0' INTEGER REAL TEXT TEXT }
{ '5' INTEGER INTEGER TEXT TEXT }
{ 'abc' TEXT TEXT TEXT TEXT }
{ NULL NULL NULL NULL NULL }
}
# This code tests that the storage classes specified above (in the $values
# table) are correctly assigned when values are inserted using a statement
@ -291,4 +291,3 @@ do_test types-2.5.3 {
} [list {} $string10 4000 $string500 4000 {} 4000 {} $string500000]
finish_test

View File

@ -12,7 +12,7 @@
# of this file is testing the interaction of manifest types, type affinity
# and comparison expressions.
#
# $Id: types2.test,v 1.2 2004/05/17 10:48:58 danielk1977 Exp $
# $Id: types2.test,v 1.3 2004/05/20 12:41:20 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -40,8 +40,8 @@ execsql {
n2 NUMERIC,
t1 TEXT,
t2 TEXT,
o1,
o2
o1 BLOB,
o2 BLOB
);
INSERT INTO t1 VALUES(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
}
@ -99,7 +99,7 @@ set vals [list 10 10.0 '10' '10.0' 20 20.0 '20' '20.0' 30 30.0 '30' '30.0']
# 1 2 3 4 5 6 7 8 9 10 11 12
execsql {
CREATE TABLE t2(i INTEGER, n NUMERIC, t TEXT, o);
CREATE TABLE t2(i INTEGER, n NUMERIC, t TEXT, o XBLOBY);
CREATE INDEX t2i1 ON t2(i);
CREATE INDEX t2i2 ON t2(n);
CREATE INDEX t2i3 ON t2(t);
@ -247,7 +247,7 @@ test_boolset types2-6.9 {rowid IN (1, 6, 10)} {1 6 10}
# Tests types2-7.* concentrate on expressions of the form
# "x IN (SELECT...)" with no index.
execsql {
CREATE TABLE t3(i INTEGER, n NUMERIC, t TEXT, o);
CREATE TABLE t3(i INTEGER, n NUMERIC, t TEXT, o BLOB);
INSERT INTO t3 VALUES(1, 1, 1, 1);
INSERT INTO t3 VALUES(2, 2, 2, 2);
INSERT INTO t3 VALUES(3, 3, 3, 3);
@ -282,7 +282,7 @@ test_bool types2-7.15 {o1='2'} {o1 IN (SELECT o||'' FROM t3)} 1
# set vals [list 10 10.0 '10' '10.0' 20 20.0 '20' '20.0' 30 30.0 '30' '30.0']
# 1 2 3 4 5 6 7 8 9 10 11 12
execsql {
CREATE TABLE t4(i INTEGER, n NUMERIC, t TEXT, o);
CREATE TABLE t4(i INTEGER, n NUMERIC, t VARCHAR(20), o LARGE BLOB);
INSERT INTO t4 VALUES(10, 20, 20, 30);
}
test_boolset types2-8.1 {i IN (SELECT i FROM t4)} {1 2 3 4}
@ -299,10 +299,3 @@ test_boolset types2-8.7 {t IN (SELECT o FROM t4)} {9 11}
test_boolset types2-8.8 {o IN (SELECT o FROM t4)} {9 10}
finish_test