Fix a (harmless) assertion fault on nested views where the inner views
are compound selects. Ticket #2192. (CVS 3605) FossilOrigin-Name: 942e7193bbf1ffe9a703891d175e016631e2ad5c
This commit is contained in:
parent
e31a1fb018
commit
0ee5a1e763
13
manifest
13
manifest
@ -1,5 +1,5 @@
|
||||
C Make\ssure\sthe\sloadext.c\smodule\sworks\seven\sif\sall\sSQLITE_OMIT\smacros\sare\ndefined.\s\sTickets\s#2184\sand\s#2069.\s(CVS\s3604)
|
||||
D 2007-01-26T13:08:25
|
||||
C Fix\sa\s(harmless)\sassertion\sfault\son\snested\sviews\swhere\sthe\sinner\sviews\nare\scompound\sselects.\s\sTicket\s#2192.\s(CVS\s3605)
|
||||
D 2007-01-26T19:04:00
|
||||
F Makefile.in 7fa74bf4359aa899da5586e394d17735f221315f
|
||||
F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935
|
||||
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
|
||||
@ -92,7 +92,7 @@ F src/pragma.c fd4df6cf0857dd78a7cb5be5f9805419b53ae7a0
|
||||
F src/prepare.c 484389c6811415b8f23d259ac9c029613e1c72c3
|
||||
F src/printf.c b179b6ed12f793e028dd169e2e2e2b2a37eedc63
|
||||
F src/random.c 6119474a6f6917f708c1dee25b9a8e519a620e88
|
||||
F src/select.c 52f09127b53697b1a95835a9b0db9309cca8079f
|
||||
F src/select.c d46aceb4eb0c3e9ca7d6c9a2b65f4c19723f9763
|
||||
F src/server.c 087b92a39d883e3fa113cae259d64e4c7438bc96
|
||||
F src/shell.c d13ca007cd18192c07a668aeddcdd6a9fe639be9
|
||||
F src/sqlite.h.in 6b7383baf76070214f6381f603328ca9b22a7fae
|
||||
@ -321,6 +321,7 @@ F test/tkt1644.test 80b6a2bb17885f3cf1cb886d97cdad13232bb869
|
||||
F test/tkt1667.test ef52c857940755ea5eab24d68f808826e7dcdc94
|
||||
F test/tkt1873.test 7159a1c1bf627bbb03f11362e4ad4de11d6ff316
|
||||
F test/tkt2141.test 78fb8ea2e7e38f7e5b3e649ca9426928056ef55c
|
||||
F test/tkt2192.test 480d0e017ddb01a46ee20809427370f343bb3c03
|
||||
F test/trace.test 75ffc1b992c780d054748a656e3e7fd674f18567
|
||||
F test/trans.test 06bff0246886858793fca3748721936e2f65e3df
|
||||
F test/trigger1.test 2c79e2bf76350811e362814e98779c120b6a9421
|
||||
@ -427,7 +428,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9
|
||||
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
|
||||
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
|
||||
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
|
||||
P 31e8cf7f30afe14f0866ea71eebbda9755ddedf8
|
||||
R c4d7447c5dddc9c909ddd6d336d299b3
|
||||
P e1fae43c89253fe5ca85bd149cd7697234f9aa91
|
||||
R 740aa5a4d6cddbb1dfb22766971a0377
|
||||
U drh
|
||||
Z 3768f5eec85dfa8aa18c5475656cb57c
|
||||
Z 72ba24e0b38388758e3d22c3170f3238
|
||||
|
@ -1 +1 @@
|
||||
e1fae43c89253fe5ca85bd149cd7697234f9aa91
|
||||
942e7193bbf1ffe9a703891d175e016631e2ad5c
|
@ -12,7 +12,7 @@
|
||||
** This file contains C code routines that are called by the parser
|
||||
** to handle SELECT statements in SQLite.
|
||||
**
|
||||
** $Id: select.c,v 1.323 2006/12/16 16:25:15 drh Exp $
|
||||
** $Id: select.c,v 1.324 2007/01/26 19:04:00 drh Exp $
|
||||
*/
|
||||
#include "sqliteInt.h"
|
||||
|
||||
@ -1936,6 +1936,7 @@ static int multiSelect(
|
||||
}
|
||||
sqlite3VdbeChangeP2(v, addr, nCol);
|
||||
sqlite3VdbeChangeP3(v, addr, (char*)pKeyInfo, P3_KEYINFO);
|
||||
pLoop->addrOpenEphm[i] = -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
136
test/tkt2192.test
Normal file
136
test/tkt2192.test
Normal file
@ -0,0 +1,136 @@
|
||||
# 2007 January 26
|
||||
#
|
||||
# The author disclaims copyright to this source code. In place of
|
||||
# a legal notice, here is a blessing:
|
||||
#
|
||||
# May you do good and not evil.
|
||||
# May you find forgiveness for yourself and forgive others.
|
||||
# May you share freely, never taking more than you give.
|
||||
#
|
||||
#***********************************************************************
|
||||
# This file implements regression tests for SQLite library.
|
||||
#
|
||||
# This file implements tests to verify that ticket #2192 has been
|
||||
# fixed.
|
||||
#
|
||||
#
|
||||
# $Id: tkt2192.test,v 1.1 2007/01/26 19:04:00 drh Exp $
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
|
||||
|
||||
do_test tkt2191-1.1 {
|
||||
execsql {
|
||||
-- Raw data (RBS) --------
|
||||
|
||||
create table records (
|
||||
date real,
|
||||
type text,
|
||||
description text,
|
||||
value integer,
|
||||
acc_name text,
|
||||
acc_no text
|
||||
);
|
||||
|
||||
-- Direct Debits ----------------
|
||||
create view direct_debits as
|
||||
select * from records where type = 'D/D';
|
||||
|
||||
create view monthly_direct_debits as
|
||||
select strftime('%Y-%m', date) as date, (-1 * sum(value)) as value
|
||||
from direct_debits
|
||||
group by strftime('%Y-%m', date);
|
||||
|
||||
-- Expense Categories ---------------
|
||||
create view energy as
|
||||
select strftime('%Y-%m', date) as date, (-1 * sum(value)) as value
|
||||
from direct_debits
|
||||
where description like '%NPOWER%'
|
||||
group by strftime('%Y-%m', date);
|
||||
|
||||
create view phone_internet as
|
||||
select strftime('%Y-%m', date) as date, (-1 * sum(value)) as value
|
||||
from direct_debits
|
||||
where description like '%BT DIRECT%'
|
||||
or description like '%SUPANET%'
|
||||
or description like '%ORANGE%'
|
||||
group by strftime('%Y-%m', date);
|
||||
|
||||
create view credit_cards as
|
||||
select strftime('%Y-%m', date) as date, (-1 * sum(value)) as value
|
||||
from direct_debits where description like '%VISA%'
|
||||
group by strftime('%Y-%m', date);
|
||||
|
||||
-- Overview ---------------------
|
||||
|
||||
create view expense_overview as
|
||||
select 'Energy' as expense, date, value from energy
|
||||
union
|
||||
select 'Phone/Internet' as expense, date, value from phone_internet
|
||||
union
|
||||
select 'Credit Card' as expense, date, value from credit_cards;
|
||||
|
||||
create view jan as
|
||||
select 'jan', expense, value from expense_overview
|
||||
where date like '%-01';
|
||||
|
||||
create view nov as
|
||||
select 'nov', expense, value from expense_overview
|
||||
where date like '%-11';
|
||||
|
||||
create view summary as
|
||||
select * from jan join nov on (jan.expense = nov.expense);
|
||||
}
|
||||
} {}
|
||||
do_test tkt2192-1.2 {
|
||||
# set ::sqlite_addop_trace 1
|
||||
execsql {
|
||||
select * from summary;
|
||||
}
|
||||
} {}
|
||||
do_test tkt2192-2.1 {
|
||||
execsql {
|
||||
CREATE TABLE t1(a,b);
|
||||
CREATE VIEW v1 AS
|
||||
SELECT * FROM t1 WHERE b%7=0 UNION SELECT * FROM t1 WHERE b%5=0;
|
||||
INSERT INTO t1 VALUES(1,7);
|
||||
INSERT INTO t1 VALUES(2,10);
|
||||
INSERT INTO t1 VALUES(3,14);
|
||||
INSERT INTO t1 VALUES(4,15);
|
||||
INSERT INTO t1 VALUES(1,16);
|
||||
INSERT INTO t1 VALUES(2,17);
|
||||
INSERT INTO t1 VALUES(3,20);
|
||||
INSERT INTO t1 VALUES(4,21);
|
||||
INSERT INTO t1 VALUES(1,22);
|
||||
INSERT INTO t1 VALUES(2,24);
|
||||
INSERT INTO t1 VALUES(3,25);
|
||||
INSERT INTO t1 VALUES(4,26);
|
||||
INSERT INTO t1 VALUES(1,27);
|
||||
|
||||
SELECT b FROM v1 ORDER BY b;
|
||||
}
|
||||
} {7 10 14 15 20 21 25}
|
||||
do_test tkt2192-2.2 {
|
||||
execsql {
|
||||
SELECT * FROM v1 ORDER BY a, b;
|
||||
}
|
||||
} {1 7 2 10 3 14 3 20 3 25 4 15 4 21}
|
||||
do_test tkt2192-2.3 {
|
||||
execsql {
|
||||
SELECT x.a || '/' || x.b || '/' || y.b
|
||||
FROM v1 AS x JOIN v1 AS y ON x.a=y.a AND x.b<y.b
|
||||
ORDER BY x.a, x.b, y.b
|
||||
}
|
||||
} {3/14/20 3/14/25 3/20/25 4/15/21}
|
||||
do_test tkt2192-2.4 {
|
||||
execsql {
|
||||
CREATE VIEW v2 AS
|
||||
SELECT x.a || '/' || x.b || '/' || y.b AS z
|
||||
FROM v1 AS x JOIN v1 AS y ON x.a=y.a AND x.b<y.b
|
||||
ORDER BY x.a, x.b, y.b;
|
||||
SELECT * FROM v2;
|
||||
}
|
||||
} {3/14/20 3/14/25 3/20/25 4/15/21}
|
||||
|
||||
finish_test
|
Loading…
x
Reference in New Issue
Block a user