mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-14 00:22:38 +03:00
Fix an assertion fault that occurs when two different virtual tables are
used in a single UPDATE statement. Ticket [d2f02d37f52b]. FossilOrigin-Name: ff61e0fd802c46c2d84c4b0c0bc8a0f34959bb25
This commit is contained in:
20
manifest
20
manifest
@@ -1,8 +1,8 @@
|
|||||||
-----BEGIN PGP SIGNED MESSAGE-----
|
-----BEGIN PGP SIGNED MESSAGE-----
|
||||||
Hash: SHA1
|
Hash: SHA1
|
||||||
|
|
||||||
C Fix\sthe\sstmt.test\stest\sscript\sso\sthat\sit\sworks\swith\sSQLITE_TEMP_STORE=3.
|
C Fix\san\sassertion\sfault\sthat\soccurs\swhen\stwo\sdifferent\svirtual\stables\sare\nused\sin\sa\ssingle\sUPDATE\sstatement.\nTicket\s[d2f02d37f52b].
|
||||||
D 2010-02-23T21:08:41
|
D 2010-02-24T15:10:14
|
||||||
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
||||||
F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b
|
F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b
|
||||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||||
@@ -167,7 +167,7 @@ F src/printf.c f5c160b471e4a4dd22b756cb4ffe0c6979fd6d24
|
|||||||
F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
|
F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
|
||||||
F src/resolve.c a1648d98e869937b29f4f697461fe4d60f220a7b
|
F src/resolve.c a1648d98e869937b29f4f697461fe4d60f220a7b
|
||||||
F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697
|
F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697
|
||||||
F src/select.c 0109b993c360d649857523abb72919e1794f9b45
|
F src/select.c 4113ef360430ed4e7533690ef46d06c20204adce
|
||||||
F src/shell.c 31cd555125a1fda4a6d8dce019690f043a8e5d75
|
F src/shell.c 31cd555125a1fda4a6d8dce019690f043a8e5d75
|
||||||
F src/sqlite.h.in a9f51302109f32e3048358122d1e38fd3ead593f
|
F src/sqlite.h.in a9f51302109f32e3048358122d1e38fd3ead593f
|
||||||
F src/sqlite3ext.h 69dfb8116af51b84a029cddb3b35062354270c89
|
F src/sqlite3ext.h 69dfb8116af51b84a029cddb3b35062354270c89
|
||||||
@@ -743,7 +743,7 @@ F test/vtab6.test c7f290d172609d636fbfc58166eadcb55d5c117c
|
|||||||
F test/vtab7.test a8c3c3cb3eb60be364991bd714e4927e26c4cd85
|
F test/vtab7.test a8c3c3cb3eb60be364991bd714e4927e26c4cd85
|
||||||
F test/vtab8.test e19fa4a538fcd1bb66c22825fa8f71618fb13583
|
F test/vtab8.test e19fa4a538fcd1bb66c22825fa8f71618fb13583
|
||||||
F test/vtab9.test ea58d2b95d61955f87226381716b2d0b1d4e4f9b
|
F test/vtab9.test ea58d2b95d61955f87226381716b2d0b1d4e4f9b
|
||||||
F test/vtabA.test 0dcd4c81ffb56649f47d1b5fb9c5ae807ccf41f7
|
F test/vtabA.test c86e1990b7e1e2bb34602a06fffa4c69f2b516dc
|
||||||
F test/vtabB.test 04df5dc531b9f44d9ca65b9c1b79f12b5922a796
|
F test/vtabB.test 04df5dc531b9f44d9ca65b9c1b79f12b5922a796
|
||||||
F test/vtabC.test 1cf7896ab6859bfe3074244b2b0e12de5cbdd766
|
F test/vtabC.test 1cf7896ab6859bfe3074244b2b0e12de5cbdd766
|
||||||
F test/vtabD.test 74167b1578e5886fe4c886d6bef2fd1406444c42
|
F test/vtabD.test 74167b1578e5886fe4c886d6bef2fd1406444c42
|
||||||
@@ -794,14 +794,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
|||||||
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
||||||
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
||||||
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
||||||
P 9f429434c0404f03a3e5c6741b769afe98a5c6c9
|
P 8bf710ce6dfab0e6fd4de7d6d3157008cc70d192
|
||||||
R bde76a4d1143f986e520d9d13648dec0
|
R bebac69f9e91e2bdba37c73f6ba495f8
|
||||||
U drh
|
U drh
|
||||||
Z 0edbafdd674ccf625fff856abe89b43e
|
Z 0be4993a1f8e20282f72f2cbfcc52d54
|
||||||
-----BEGIN PGP SIGNATURE-----
|
-----BEGIN PGP SIGNATURE-----
|
||||||
Version: GnuPG v1.4.6 (GNU/Linux)
|
Version: GnuPG v1.4.6 (GNU/Linux)
|
||||||
|
|
||||||
iD8DBQFLhEPdoxKgR168RlERAtn2AJ9MgEQumymw12j/wVK7twO3+yl+LACfcJCz
|
iD8DBQFLhUFaoxKgR168RlERAp+bAJ9aIMVDQ8Dp1bj/Ib3bZe0DoRm3AACgiGAa
|
||||||
zJFAoZng83uA0nnQGrI10GM=
|
9wkaSzZ50yED/siF1Ki8y5I=
|
||||||
=jzra
|
=FpV3
|
||||||
-----END PGP SIGNATURE-----
|
-----END PGP SIGNATURE-----
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
8bf710ce6dfab0e6fd4de7d6d3157008cc70d192
|
ff61e0fd802c46c2d84c4b0c0bc8a0f34959bb25
|
||||||
@@ -3327,7 +3327,7 @@ static int selectAddSubqueryTypeInfo(Walker *pWalker, Select *p){
|
|||||||
struct SrcList_item *pFrom;
|
struct SrcList_item *pFrom;
|
||||||
|
|
||||||
assert( p->selFlags & SF_Resolved );
|
assert( p->selFlags & SF_Resolved );
|
||||||
assert( (p->selFlags & SF_HasTypeInfo)==0 );
|
if( (p->selFlags & SF_HasTypeInfo)==0 ){
|
||||||
p->selFlags |= SF_HasTypeInfo;
|
p->selFlags |= SF_HasTypeInfo;
|
||||||
pParse = pWalker->pParse;
|
pParse = pWalker->pParse;
|
||||||
pTabList = p->pSrc;
|
pTabList = p->pSrc;
|
||||||
@@ -3341,6 +3341,7 @@ static int selectAddSubqueryTypeInfo(Walker *pWalker, Select *p){
|
|||||||
selectAddColumnTypeAndCollation(pParse, pTab->nCol, pTab->aCol, pSel);
|
selectAddColumnTypeAndCollation(pParse, pTab->nCol, pTab->aCol, pSel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return WRC_Continue;
|
return WRC_Continue;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -131,4 +131,23 @@ do_test vtabA-2.4 {
|
|||||||
analyse_parse {(a whatelse can i hidden test, b HIDDEN hidden)} {a b}
|
analyse_parse {(a whatelse can i hidden test, b HIDDEN hidden)} {a b}
|
||||||
} {{} {whatelse can i test} hidden}
|
} {{} {whatelse can i test} hidden}
|
||||||
|
|
||||||
|
|
||||||
|
# Ticket [d2f02d37f52bfe23e421f2c60fbb8586ac76ff01]:
|
||||||
|
# assertion failure on an UPDATE involving two virtual tables.
|
||||||
|
#
|
||||||
|
do_test vtabA-3.1 {
|
||||||
|
db eval {
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
DROP TABLE IF EXISTS t2;
|
||||||
|
CREATE TABLE t1(a,b);
|
||||||
|
INSERT INTO t1 VALUES(1,2);
|
||||||
|
CREATE TABLE t2(x,y);
|
||||||
|
INSERT INTO t2 VALUES(3,4);
|
||||||
|
CREATE VIRTUAL TABLE vt1 USING echo(t1);
|
||||||
|
CREATE VIRTUAL TABLE vt2 USING echo(t2);
|
||||||
|
UPDATE vt2 SET x=(SELECT a FROM vt1 WHERE b=2) WHERE y=4;
|
||||||
|
SELECT * FROM t2;
|
||||||
|
}
|
||||||
|
} {1 4}
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
|||||||
Reference in New Issue
Block a user