diff options
author | Ilia Alshanetsky <iliaa@php.net> | 2004-01-14 17:08:27 +0000 |
---|---|---|
committer | Ilia Alshanetsky <iliaa@php.net> | 2004-01-14 17:08:27 +0000 |
commit | 6e350b553bedcfe4694a7118d8b44f80266201f4 (patch) | |
tree | 8be4ab1f00c7a24b19cacbd527d83b6ec61aa265 /ext/sqlite/libsqlite/src/select.c | |
parent | 49b698c67ed0f8408c54d0754672e552376b7554 (diff) | |
download | php-git-6e350b553bedcfe4694a7118d8b44f80266201f4.tar.gz |
Upgraded bundled libsqlite to 2.8.11 (fixed critical bug of *NIX systems).
Diffstat (limited to 'ext/sqlite/libsqlite/src/select.c')
-rw-r--r-- | ext/sqlite/libsqlite/src/select.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/ext/sqlite/libsqlite/src/select.c b/ext/sqlite/libsqlite/src/select.c index c0aa4ecfeb..c7525b3b6b 100644 --- a/ext/sqlite/libsqlite/src/select.c +++ b/ext/sqlite/libsqlite/src/select.c @@ -479,16 +479,19 @@ static int selectInnerLoop( ** item into the set table with bogus data. */ case SRT_Set: { - int lbl = sqliteVdbeMakeLabel(v); + int addr1 = sqliteVdbeCurrentAddr(v); + int addr2; assert( nColumn==1 ); - sqliteVdbeAddOp(v, OP_IsNull, -1, lbl); + sqliteVdbeAddOp(v, OP_NotNull, -1, addr1+3); + sqliteVdbeAddOp(v, OP_Pop, 1, 0); + addr2 = sqliteVdbeAddOp(v, OP_Goto, 0, 0); if( pOrderBy ){ pushOntoSorter(pParse, v, pOrderBy); }else{ sqliteVdbeAddOp(v, OP_String, 0, 0); sqliteVdbeAddOp(v, OP_PutStrKey, iParm, 0); } - sqliteVdbeResolveLabel(v, lbl); + sqliteVdbeChangeP2(v, addr2, sqliteVdbeCurrentAddr(v)); break; } @@ -588,7 +591,9 @@ static void generateSortTail( } case SRT_Set: { assert( nColumn==1 ); - sqliteVdbeAddOp(v, OP_IsNull, -1, sqliteVdbeCurrentAddr(v)+3); + sqliteVdbeAddOp(v, OP_NotNull, -1, sqliteVdbeCurrentAddr(v)+3); + sqliteVdbeAddOp(v, OP_Pop, 1, 0); + sqliteVdbeAddOp(v, OP_Goto, 0, sqliteVdbeCurrentAddr(v)+3); sqliteVdbeAddOp(v, OP_String, 0, 0); sqliteVdbeAddOp(v, OP_PutStrKey, iParm, 0); break; |