1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-14 00:22:38 +03:00

Fix a bug in LIMIT 0 for compound SELECT statement.

The problem was introduced by recent enhancements and has not appeared
in any release.

FossilOrigin-Name: c6ed7e2a73a7a65cfa914ffcad4f603b6b7a22a8
This commit is contained in:
drh
2009-11-20 16:13:15 +00:00
parent 3278315768
commit 456e4e4fba
3 changed files with 12 additions and 13 deletions

View File

@@ -1,8 +1,8 @@
-----BEGIN PGP SIGNED MESSAGE----- -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1 Hash: SHA1
C If\sthe\sroot\spages\snumbers\sof\sthe\sinternal\sschema\sare\sadjusted\sdue\sto\s\nautovacuum\son\sa\sDROP\sTABLE\sstatement\sand\sthat\sstatement\slater\saborts\s(for\nexample,\sdue\sto\san\sOOM\serror)\sthen\sreset\sthe\sinternal\sschema\sat\sthe\nconclusion\sof\sthe\sstatement.\nPartial\sfix\sfor\sticket\s[564d412f15a]. C Fix\sa\sbug\sin\sLIMIT\s0\sfor\scompound\sSELECT\sstatement.\nThe\sproblem\swas\sintroduced\sby\srecent\senhancements\sand\shas\snot\sappeared\nin\sany\srelease.
D 2009-11-20T15:02:34 D 2009-11-20T16:13:15
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in 7f6c6aa7feeeb5e26e01b344161d9aa1b5d64177 F Makefile.in 7f6c6aa7feeeb5e26e01b344161d9aa1b5d64177
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -165,7 +165,7 @@ F src/printf.c 03fabdd6112a0e23f78f8ac9a1396947ade0273b
F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50 F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
F src/resolve.c aa3cb21e1ecd905c071fce8fb64d1a166cefc239 F src/resolve.c aa3cb21e1ecd905c071fce8fb64d1a166cefc239
F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697 F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697
F src/select.c a727f61f3267bfa20ce1c3e85d38dc2132db1060 F src/select.c 2f9ed7482e7a25b0b127fc41693bbdbe1caf5647
F src/shell.c f4948cb6d30665d755a6b5e0ec313d1094aab828 F src/shell.c f4948cb6d30665d755a6b5e0ec313d1094aab828
F src/sqlite.h.in 4464e9772122f0447305d425e04d122b6f1bffec F src/sqlite.h.in 4464e9772122f0447305d425e04d122b6f1bffec
F src/sqlite3ext.h 69dfb8116af51b84a029cddb3b35062354270c89 F src/sqlite3ext.h 69dfb8116af51b84a029cddb3b35062354270c89
@@ -775,14 +775,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 9a429349ccc2fa9acd28365a86578f602e87dafb P e493b093f8ca722c3160b32a16fb615023978dc9
R 98fcdb3bebf5cd6b5539291ec5159fa2 R 5ec1b2582562a57f9f564d3489d61dc3
U drh U drh
Z d921d0e136eadcd906a3ecc76e7083b9 Z 1a324a1c90a5bbddcb009087c1541226
-----BEGIN PGP SIGNATURE----- -----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux) Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFLBq+NoxKgR168RlERAuHoAJ4xcaWqbV9st4vnlQ8SbWQTMKFcKACgiAlE iD8DBQFLBsAeoxKgR168RlERAjHuAJ9QJtWD6T56mccvLQ1ITcoNvvNpMwCfZr52
s6FOzlbJpHpo7yi7MLuMesw= Jqb5eUds3ueWwA0ZJsx59YQ=
=HELf =bz6Y
-----END PGP SIGNATURE----- -----END PGP SIGNATURE-----

View File

@@ -1 +1 @@
e493b093f8ca722c3160b32a16fb615023978dc9 c6ed7e2a73a7a65cfa914ffcad4f603b6b7a22a8

View File

@@ -1323,11 +1323,10 @@ static void computeLimitRegisters(Parse *pParse, Select *p, int iBreak){
v = sqlite3GetVdbe(pParse); v = sqlite3GetVdbe(pParse);
if( NEVER(v==0) ) return; /* VDBE should have already been allocated */ if( NEVER(v==0) ) return; /* VDBE should have already been allocated */
if( sqlite3ExprIsInteger(p->pLimit, &n) ){ if( sqlite3ExprIsInteger(p->pLimit, &n) ){
if( n==0 ){
sqlite3VdbeAddOp2(v, OP_Goto, 0, iBreak);
}else{
sqlite3VdbeAddOp2(v, OP_Integer, n, iLimit); sqlite3VdbeAddOp2(v, OP_Integer, n, iLimit);
VdbeComment((v, "LIMIT counter")); VdbeComment((v, "LIMIT counter"));
if( n==0 ){
sqlite3VdbeAddOp2(v, OP_Goto, 0, iBreak);
} }
}else{ }else{
sqlite3ExprCode(pParse, p->pLimit, iLimit); sqlite3ExprCode(pParse, p->pLimit, iLimit);