mirror of
https://github.com/tursodatabase/libsql.git
synced 2025-03-14 20:38:04 +00:00
Additional coverage testing in the new name resolver module. (CVS 5608)
FossilOrigin-Name: 0d61960afd35721d6d07acd75288c20d2cd6fda1
This commit is contained in:
18
manifest
18
manifest
@ -1,5 +1,5 @@
|
||||
C Two\sif\sstatements\sshould\sbe\sasserts.\s\sGCC\swas\ssilently\signoring\sthem,\r\nhence\sthe\sproblem\sdid\snot\sshow\sup\sin\scoverage\stesting.\r\nTicket\s#3333.\s(CVS\s5607)
|
||||
D 2008-08-25T12:08:22
|
||||
C Additional\scoverage\stesting\sin\sthe\snew\sname\sresolver\smodule.\s(CVS\s5608)
|
||||
D 2008-08-25T12:14:09
|
||||
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
||||
F Makefile.in 689e14735f862a5553bceef206d8c13e29504e44
|
||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||
@ -144,7 +144,7 @@ F src/pragma.c f5b271b090af7fcedd308d7c5807a5503f7a853d
|
||||
F src/prepare.c c197041e0c4770672cda75e6bfe10242f885e510
|
||||
F src/printf.c 785f87120589c1db672e37c6eb1087c456e6f84d
|
||||
F src/random.c 5c754319d38abdd6acd74601ee0105504adc508a
|
||||
F src/resolve.c 3c9c04095fbf8a7f9be9fe71a07576d411c67f40
|
||||
F src/resolve.c f279cfe052c3f91457de2512fa2510e4ea86b0cc
|
||||
F src/select.c 3db954ccabee38995b16013a390f15c3b07e1265
|
||||
F src/shell.c d83b578a8ccdd3e0e7fef4388a0887ce9f810967
|
||||
F src/sqlite.h.in 2373d1d70664f7fcd78e79af3c51792bb0a0753e
|
||||
@ -242,13 +242,13 @@ F test/collate4.test 4545554388daaa604e5b3def3aa2f7ed6d56e8da
|
||||
F test/collate5.test e54df13eb9e1140273680b3153c6e19b39e59888
|
||||
F test/collate6.test 8be65a182abaac8011a622131486dafb8076e907
|
||||
F test/collate7.test fac8db7aac3978466c04ae892cc74dcf2bc031aa
|
||||
F test/collate8.test 7ed2461305ac959886a064dc1e3cf15e155a183f
|
||||
F test/collate8.test df26649cfcbddf109c04122b340301616d3a88f6
|
||||
F test/collate9.test 3adcc799229545940df2f25308dd1ad65869145a
|
||||
F test/collateA.test b8218ab90d1fa5c59dcf156efabb1b2599c580d6
|
||||
F test/colmeta.test 087c42997754b8c648819832241daf724f813322
|
||||
F test/colname.test bc396d99a11a855370010c7e95187177592b1dfe
|
||||
F test/conflict.test bb29b052c60a1f7eb6382be77902061d1f305318
|
||||
F test/corrupt.test af069d971853dbe12af936910bfa49d92f7b16e9
|
||||
F test/corrupt.test 5bcf7a986358123b8055dfa64b45fc2fb54dcaa9
|
||||
F test/corrupt2.test a6b9051516f7d417e76b6953cc02f568a6e1cbf0
|
||||
F test/corrupt3.test 263e8bb04e2728df832fddf6973cf54c91db0c32
|
||||
F test/corrupt4.test acdb01afaedf529004b70e55de1a6f5a05ae7fff
|
||||
@ -564,7 +564,7 @@ F test/trigger7.test 72feaf8dbc52cea84de0c3e6ce7559ff19c479af
|
||||
F test/trigger8.test 3a09275aa2214fdff56f731b1e775d8dfee4408a
|
||||
F test/trigger9.test e6e8dbab673666b3c0a63f0fefcff2329fe6bba8
|
||||
F test/triggerA.test 208dbda4d2f7c918b02f8a0dfa3acd2a0fe00691
|
||||
F test/triggerB.test 9a4d9d98e2f6c5730841c4b55a6152822f986e02
|
||||
F test/triggerB.test 56780c031b454abac2340dbb3b71ac5c56c3d7fe
|
||||
F test/types.test 98e7a631bddf0806204358b452b02d0e319318a6
|
||||
F test/types2.test 3555aacf8ed8dc883356e59efc314707e6247a84
|
||||
F test/types3.test a0f66bf12f80fad89493535474f7a6d16fa58150
|
||||
@ -623,7 +623,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
|
||||
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
||||
F tool/speedtest8.c 1dbced29de5f59ba2ebf877edcadf171540374d1
|
||||
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
||||
P eae959ede1b2b50190c60de9249cf141c3031ce2
|
||||
R e151136f3c0921b50d046c381c57bb8f
|
||||
P 635933b1cae6c43656260555089952e2925c3292
|
||||
R 425df6baa72dc44cb2b3af4ba0d5d71f
|
||||
U drh
|
||||
Z 577af3d40ea26b9ad4601f25255d4181
|
||||
Z 402656fa4c5ab25e1bc6c1040a95ee16
|
||||
|
@ -1 +1 @@
|
||||
635933b1cae6c43656260555089952e2925c3292
|
||||
0d61960afd35721d6d07acd75288c20d2cd6fda1
|
@ -14,7 +14,7 @@
|
||||
** resolve all identifiers by associating them with a particular
|
||||
** table and column.
|
||||
**
|
||||
** $Id: resolve.c,v 1.2 2008/08/22 17:34:45 drh Exp $
|
||||
** $Id: resolve.c,v 1.3 2008/08/25 12:14:09 drh Exp $
|
||||
*/
|
||||
#include "sqliteInt.h"
|
||||
#include <stdlib.h>
|
||||
@ -93,7 +93,7 @@ static int lookupName(
|
||||
Column *pCol;
|
||||
|
||||
pTab = pItem->pTab;
|
||||
assert( pTab!=0 );
|
||||
assert( pTab!=0 && pTab->zName!=0 );
|
||||
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
|
||||
assert( pTab->nCol>0 );
|
||||
if( zTab ){
|
||||
@ -346,7 +346,6 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
|
||||
NameContext *pNC;
|
||||
Parse *pParse;
|
||||
|
||||
if( pExpr==0 ) return WRC_Continue;
|
||||
pNC = pWalker->u.pNC;
|
||||
assert( pNC!=0 );
|
||||
pParse = pNC->pParse;
|
||||
|
@ -13,7 +13,7 @@
|
||||
# focus of this script is making sure collations pass through the
|
||||
# unary + operator.
|
||||
#
|
||||
# $Id: collate8.test,v 1.1 2007/06/20 16:13:23 drh Exp $
|
||||
# $Id: collate8.test,v 1.2 2008/08/25 12:14:09 drh Exp $
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
@ -48,5 +48,78 @@ do_test collate8-1.5 {
|
||||
SELECT a FROM t1 ORDER BY +a
|
||||
}
|
||||
} {aaa BBB ccc DDD}
|
||||
do_test collate8-1.11 {
|
||||
execsql {
|
||||
SELECT a AS x FROM t1 ORDER BY "x";
|
||||
}
|
||||
} {aaa BBB ccc DDD}
|
||||
do_test collate8-1.12 {
|
||||
execsql {
|
||||
SELECT a AS x FROM t1 WHERE x<'ccc' ORDER BY 1
|
||||
}
|
||||
} {aaa BBB}
|
||||
do_test collate8-1.13 {
|
||||
execsql {
|
||||
SELECT a AS x FROM t1 WHERE x<'ccc' COLLATE binary ORDER BY [x]
|
||||
}
|
||||
} {aaa BBB DDD}
|
||||
do_test collate8-1.14 {
|
||||
execsql {
|
||||
SELECT a AS x FROM t1 WHERE +x<'ccc' ORDER BY 1
|
||||
}
|
||||
} {aaa BBB}
|
||||
do_test collate8-1.15 {
|
||||
execsql {
|
||||
SELECT a AS x FROM t1 ORDER BY +x
|
||||
}
|
||||
} {aaa BBB ccc DDD}
|
||||
|
||||
|
||||
# When a result-set column is aliased into a WHERE clause, make sure the
|
||||
# collating sequence logic works correctly.
|
||||
#
|
||||
do_test collate8-2.1 {
|
||||
execsql {
|
||||
CREATE TABLE t2(a);
|
||||
INSERT INTO t2 VALUES('abc');
|
||||
INSERT INTO t2 VALUES('ABC');
|
||||
SELECT a AS x FROM t2 WHERE x='abc';
|
||||
}
|
||||
} {abc}
|
||||
do_test collate8-2.2 {
|
||||
execsql {
|
||||
SELECT a AS x FROM t2 WHERE x='abc' COLLATE nocase;
|
||||
}
|
||||
} {abc ABC}
|
||||
do_test collate8-2.3 {
|
||||
execsql {
|
||||
SELECT a AS x FROM t2 WHERE (x COLLATE nocase)='abc';
|
||||
}
|
||||
} {abc ABC}
|
||||
do_test collate8-2.4 {
|
||||
execsql {
|
||||
SELECT a COLLATE nocase AS x FROM t2 WHERE x='abc';
|
||||
}
|
||||
} {abc ABC}
|
||||
do_test collate8-2.5 {
|
||||
execsql {
|
||||
SELECT a COLLATE nocase AS x FROM t2 WHERE (x COLLATE binary)='abc';
|
||||
}
|
||||
} {abc}
|
||||
do_test collate8-2.6 {
|
||||
execsql {
|
||||
SELECT a COLLATE nocase AS x FROM t2 WHERE x='abc' COLLATE binary;
|
||||
}
|
||||
} {abc ABC}
|
||||
do_test collate8-2.7 {
|
||||
execsql {
|
||||
SELECT * FROM t2 WHERE (a COLLATE nocase)='abc' COLLATE binary;
|
||||
}
|
||||
} {abc ABC}
|
||||
do_test collate8-2.8 {
|
||||
execsql {
|
||||
SELECT a COLLATE nocase AS x FROM t2 WHERE 'abc'=x COLLATE binary;
|
||||
}
|
||||
} {abc}
|
||||
|
||||
finish_test
|
||||
|
@ -13,10 +13,9 @@
|
||||
# This file implements tests to make sure SQLite does not crash or
|
||||
# segfault if it sees a corrupt database file.
|
||||
#
|
||||
# $Id: corrupt.test,v 1.9 2008/05/05 12:09:33 danielk1977 Exp $
|
||||
# $Id: corrupt.test,v 1.10 2008/08/25 12:14:09 drh Exp $
|
||||
|
||||
catch {file delete -force test.db}
|
||||
catch {file delete -force test.db-journal}
|
||||
catch {file delete -force test.db test.db-journal test.bu}
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
|
@ -1,7 +1,7 @@
|
||||
# 2008 April 15
|
||||
#
|
||||
# The author disclaims copyright to this source code. In place of
|
||||
# a legal notice, here is a blessing:
|
||||
# a legal notice', here is a blessing:
|
||||
#
|
||||
# May you do good and not evil.
|
||||
# May you find forgiveness for yourself and forgive others.
|
||||
@ -41,4 +41,113 @@ do_test triggerB-1.2 {
|
||||
}
|
||||
} {1 0 0 2 0 0}
|
||||
|
||||
# Added 2008-08-22:
|
||||
#
|
||||
# Name resolution within triggers.
|
||||
#
|
||||
do_test triggerB-2.1 {
|
||||
catchsql {
|
||||
CREATE TRIGGER ty AFTER INSERT ON x BEGIN
|
||||
SELECT wen.x; -- Unrecognized name
|
||||
END;
|
||||
INSERT INTO x VALUES(1,2);
|
||||
}
|
||||
} {1 {no such column: wen.x}}
|
||||
do_test triggerB-2.2 {
|
||||
catchsql {
|
||||
CREATE TRIGGER tz AFTER UPDATE ON x BEGIN
|
||||
SELECT dlo.x; -- Unrecognized name
|
||||
END;
|
||||
UPDATE x SET y=y+1;
|
||||
}
|
||||
} {1 {no such column: dlo.x}}
|
||||
|
||||
do_test triggerB-2.3 {
|
||||
execsql {
|
||||
CREATE TABLE t2(a INTEGER PRIMARY KEY, b);
|
||||
INSERT INTO t2 VALUES(1,2);
|
||||
CREATE TABLE changes(x,y);
|
||||
CREATE TRIGGER r1t2 AFTER UPDATE ON t2 BEGIN
|
||||
INSERT INTO changes VALUES(new.a, new.b);
|
||||
END;
|
||||
}
|
||||
execsql {
|
||||
UPDATE t2 SET a=a+10;
|
||||
SELECT * FROM changes;
|
||||
}
|
||||
} {11 2}
|
||||
do_test triggerB-2.4 {
|
||||
execsql {
|
||||
CREATE TRIGGER r2t2 AFTER DELETE ON t2 BEGIN
|
||||
INSERT INTO changes VALUES(old.a, old.c);
|
||||
END;
|
||||
}
|
||||
catchsql {
|
||||
DELETE FROM t2;
|
||||
}
|
||||
} {1 {no such column: old.c}}
|
||||
|
||||
# Triggers maintain a mask of columns from the invoking table that are
|
||||
# used in the trigger body as NEW.column or OLD.column. That mask is then
|
||||
# used to reduce the amount of information that needs to be loaded into
|
||||
# the NEW and OLD pseudo-tables at run-time.
|
||||
#
|
||||
# These tests cases check the logic for when there are many columns - more
|
||||
# than will fit in a bitmask.
|
||||
#
|
||||
do_test triggerB-3.1 {
|
||||
execsql {
|
||||
CREATE TABLE t3(
|
||||
c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,
|
||||
c10, c11, c12, c13, c14, c15, c16, c17, c18, c19,
|
||||
c20, c21, c22, c23, c24, c25, c26, c27, c28, c29,
|
||||
c30, c31, c32, c33, c34, c35, c36, c37, c38, c39,
|
||||
c40, c41, c42, c43, c44, c45, c46, c47, c48, c49,
|
||||
c50, c51, c52, c53, c54, c55, c56, c57, c58, c59,
|
||||
c60, c61, c62, c63, c64, c65
|
||||
);
|
||||
CREATE TABLE t3_changes(colnum, oldval, newval);
|
||||
INSERT INTO t3 VALUES(
|
||||
'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9',
|
||||
'a10','a11','a12','a13','a14','a15','a16','a17','a18','a19',
|
||||
'a20','a21','a22','a23','a24','a25','a26','a27','a28','a29',
|
||||
'a30','a31','a32','a33','a34','a35','a36','a37','a38','a39',
|
||||
'a40','a41','a42','a43','a44','a45','a46','a47','a48','a49',
|
||||
'a50','a51','a52','a53','a54','a55','a56','a57','a58','a59',
|
||||
'a60','a61','a62','a63','a64','a65'
|
||||
);
|
||||
}
|
||||
for {set i 0} {$i<=65} {incr i} {
|
||||
set sql [subst {
|
||||
CREATE TRIGGER t3c$i AFTER UPDATE ON t3
|
||||
WHEN old.c$i!=new.c$i BEGIN
|
||||
INSERT INTO t3_changes VALUES($i, old.c$i, new.c$i);
|
||||
END
|
||||
}]
|
||||
db eval $sql
|
||||
}
|
||||
execsql {
|
||||
SELECT * FROM t3_changes
|
||||
}
|
||||
} {}
|
||||
for {set i 0} {$i<=64} {incr i} {
|
||||
do_test triggerB-3.2.$i.1 [subst {
|
||||
execsql {
|
||||
UPDATE t3 SET c$i='b$i';
|
||||
SELECT * FROM t3_changes ORDER BY rowid DESC LIMIT 1;
|
||||
}
|
||||
}] [subst {$i a$i b$i}]
|
||||
do_test triggerB-3.2.$i.2 [subst {
|
||||
execsql {
|
||||
SELECT count(*) FROM t3_changes
|
||||
}
|
||||
}] [expr {$i+1}]
|
||||
do_test triggerB-3.2.$i.2 [subst {
|
||||
execsql {
|
||||
SELECT * FROM t3_changes WHERE colnum=$i
|
||||
}
|
||||
}] [subst {$i a$i b$i}]
|
||||
}
|
||||
|
||||
|
||||
finish_test
|
||||
|
Reference in New Issue
Block a user