summaryrefslogtreecommitdiff
path: root/ext/sqlite/libsqlite/src/select.c
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2004-01-14 17:08:27 +0000
committerIlia Alshanetsky <iliaa@php.net>2004-01-14 17:08:27 +0000
commit6e350b553bedcfe4694a7118d8b44f80266201f4 (patch)
tree8be4ab1f00c7a24b19cacbd527d83b6ec61aa265 /ext/sqlite/libsqlite/src/select.c
parent49b698c67ed0f8408c54d0754672e552376b7554 (diff)
downloadphp-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.c13
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;