]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Eliminate obsolete code associated with the older callback functionality. (CVS 1243)
authordrh <drh@noemail.net>
Sat, 14 Feb 2004 23:59:57 +0000 (23:59 +0000)
committerdrh <drh@noemail.net>
Sat, 14 Feb 2004 23:59:57 +0000 (23:59 +0000)
FossilOrigin-Name: 2dbc4593ca5c1cf75039c8b4471b1e47faa849f0

12 files changed:
manifest
manifest.uuid
src/build.c
src/main.c
src/parse.y
src/select.c
src/sqliteInt.h
src/tokenize.c
src/vdbe.c
src/vdbe.h
src/vdbeInt.h
src/vdbeaux.c

index 0d4669e26fa2de6106f4cd3bc49436655b930824..185188b907ccc1f17c93eca602890c7ed01b1aa4 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Eliminate\sthe\suse\sof\scallbacks\sduring\sschema\sinitialization.\s(CVS\s1242)
-D 2004-02-14T23:05:53
+C Eliminate\sobsolete\scode\sassociated\swith\sthe\solder\scallback\sfunctionality.\s(CVS\s1243)
+D 2004-02-14T23:59:57
 F Makefile.in cfd75c46b335881999333a9e4b982fa8491f200b
 F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
@@ -26,7 +26,7 @@ F src/auth.c c59ad0dab501888f8b1fccc25e2f5965d2265116
 F src/btree.c 0a40efb01fa3a431a16d8604f603431d8c9cebfa
 F src/btree.h 41cb3ff6ebc3f6da2d0a074e39ff8c7a2287469f
 F src/btree_rb.c 32b2cb4285c0fbd53b89de021637b63d52257e54
-F src/build.c f8cef53c4e11a102a0d33000ba5f108a1fb48ac9
+F src/build.c e6d71a3babd1f523abdd806555be3430adbd69eb
 F src/copy.c 9e47975ea96751c658bcf1a0c4f0bb7c6ee61e73
 F src/date.c c9d2bfd40b1c95f8f97d53a5eba981d7167c7b61
 F src/delete.c 0778fe05df0a1d62ac27fd1a3dba237c186ff4d1
@@ -36,35 +36,35 @@ F src/func.c cbc5edd10c82a5193b9ca0726873328be445e6c1
 F src/hash.c 9b56ef3b291e25168f630d5643a4264ec011c70e
 F src/hash.h 3247573ab95b9dd90bcca0307a75d9a16da1ccc7
 F src/insert.c 01f66866f35c986eab4a57373ca689a3255ef2df
-F src/main.c e803d6cc6d57e85e12e61a04768f14ff644a4180
+F src/main.c bb7cd00ac7551b542c8e54296ecec19d9732ef4e
 F src/md5.c fe4f9c9c6f71dfc26af8da63e4d04489b1430565
 F src/os.c f5fc4954725b2fcd852979f2746085fe8ca27710
 F src/os.h 250a3789be609adfee5c5aa20137ce8683276f24
 F src/pager.c 29ddad4dd454f0aaa98e2bcd327710ab9f02f833
 F src/pager.h 82332878799280145639a48d88cdb4058925e3f6
-F src/parse.y 1e311dc6aae9261f8641abca9328dd6193083753
+F src/parse.y 226bbdba2dee362d4b1cacc424bd82f7740071ee
 F src/pragma.c 89d62c31c6f0a43376fe8d20549b87a6d30c467a
 F src/printf.c 84e4ea4ba49cbbf930e95e82295127ad5843ae1f
 F src/random.c 775913e0b7fbd6295d21f12a7bd35b46387c44b2
-F src/select.c 7cbd9cca5294399657da9e2d6c441add4610fb18
+F src/select.c 330166e328d7c8c737547b9d9a5bbe00431f9aed
 F src/shell.c c3d3404fa82bb0808444fda9884d1bb572fd18b9
 F src/sqlite.h.in 64f016cd5ce190643a0f47760188fdf4e0b2227e
-F src/sqliteInt.h 3b64ff750133c656badcedd7cf7e1e425e4aa693
+F src/sqliteInt.h 2b5e327ba20a864a95ff12e0d243dabfbc37d613
 F src/table.c d845cb101b5afc1f7fea083c99e3d2fa7998d895
 F src/tclsqlite.c b84dafe3a8532ff534c36e96bd38880e4b9cedf3
 F src/test1.c 56e9a156df3ad5e4e98df776776e963effc727f7
 F src/test2.c 75819b0f2c63c6a0fd6995445881f2eb94036996
 F src/test3.c 30985ebdfaf3ee1462a9b0652d3efbdc8d9798f5
 F src/test4.c dcbbbb382626fd466a7c46907f74db35fc8bad64
-F src/tokenize.c 8c95dcd2620b18dc0db1cdc97f9e111d11e55fe0
+F src/tokenize.c 6676b946fd8825b67ab52140af4fdc57a70bda48
 F src/trigger.c c647a442427fb8c1cd761eb03b1710c9d5675a8b
 F src/update.c 24260b4fda00c9726d27699a0561d53c0dccc397
 F src/util.c 64995b5949a5d377629ffd2598747bc771cade1e
 F src/vacuum.c d9e80c2b36ee1f623dbf1bdf3cedad24a23f87ac
-F src/vdbe.c b3f7cfecd9fe91c862bc589c35d32c409cc2a254
-F src/vdbe.h 3957844e46fea71fd030e78f6a3bd2f7e320fb43
-F src/vdbeInt.h 8a3baf749115cba81a810b7a52208aef055eda7b
-F src/vdbeaux.c e7dabd709bfe356df3257491a52835e80eaaa598
+F src/vdbe.c 90debe895f49342179f9670ee84da4c0a48cec19
+F src/vdbe.h b9f6f1b5f9d1bfceb8bda5e396877ba584c4519c
+F src/vdbeInt.h af83bd700b1cc10b9cad2af146002927e0d421c9
+F src/vdbeaux.c 11f1fa94869870ebd8338ada489e64647414268b
 F src/where.c 1302d728bd338c237e6a8282e4e3eadbbdf11e45
 F test/all.test 569a92a8ee88f5300c057cc4a8f50fbbc69a3242
 F test/attach.test ba8261d38da6b6a7d4f78ec543c548c4418582ef
@@ -184,7 +184,7 @@ F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604
 F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da
 F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1
 F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
-P 398bc294c839368e7fa75a97ba8cc8d1639f9436
-R 2c93489f2ccfbeec94078a6113e1dd06
+P af5c2be4aed1c50f69eb9634cf051a26263dcf51
+R 95d34ebfa714eff82ca160ac5c46d401
 U drh
-Z 914d3c303ed4bd19601ee7fa1346d33f
+Z 7d29870d7ab5460e1dbcbf55076eba4b
index 0af5d2c15f505a1a5c4cfac24b85024e2dbb09f9..dafa02d0745f25c1e10667e382e8a7ef1ee09b24 100644 (file)
@@ -1 +1 @@
-af5c2be4aed1c50f69eb9634cf051a26263dcf51
\ No newline at end of file
+2dbc4593ca5c1cf75039c8b4471b1e47faa849f0
\ No newline at end of file
index 5683a261d6e2f146c50cd5374244db04fb03e9bc..4845004e36597216aef8e885ac94d9eeae922bfa 100644 (file)
@@ -23,7 +23,7 @@
 **     ROLLBACK
 **     PRAGMA
 **
-** $Id: build.c,v 1.169 2004/02/14 23:05:53 drh Exp $
+** $Id: build.c,v 1.170 2004/02/14 23:59:57 drh Exp $
 */
 #include "sqliteInt.h"
 #include <ctype.h>
@@ -54,17 +54,6 @@ void sqliteBeginParse(Parse *pParse, int explainFlag){
   pParse->nVar = 0;
 }
 
-/*
-** This is a fake callback procedure used when sqlite_exec() is
-** invoked with a NULL callback pointer.  If we pass a NULL callback
-** pointer into sqliteVdbeExec() it will return at every OP_Callback,
-** which we do not want it to do.  So we substitute a pointer to this
-** procedure in place of the NULL.
-*/
-static int fakeCallback(void *NotUsed, int n, char **az1, char **az2){
-  return 0;
-}
-
 /*
 ** This routine is called after a single SQL statement has been
 ** parsed and we want to execute the VDBE code to implement 
@@ -76,43 +65,20 @@ static int fakeCallback(void *NotUsed, int n, char **az1, char **az2){
 ** no VDBE code was generated.
 */
 void sqliteExec(Parse *pParse){
-  int rc = SQLITE_OK;
   sqlite *db = pParse->db;
   Vdbe *v = pParse->pVdbe;
-  int (*xCallback)(void*,int,char**,char**);
 
-  if( sqlite_malloc_failed ) return;
-  xCallback = pParse->xCallback;
-  if( xCallback==0 ){
-    if( pParse->useCallback ){
-      xCallback = fakeCallback;
-    }else if( v==0 ){
-      v = sqliteGetVdbe(pParse);
-      sqliteVdbeAddOp(v, OP_Halt, 0, 0);
-    }
+  if( v==0 && (v = sqliteGetVdbe(pParse))!=0 ){
+    sqliteVdbeAddOp(v, OP_Halt, 0, 0);
   }
+  if( sqlite_malloc_failed ) return;
   if( v && pParse->nErr==0 ){
     FILE *trace = (db->flags & SQLITE_VdbeTrace)!=0 ? stdout : 0;
     sqliteVdbeTrace(v, trace);
-    sqliteVdbeMakeReady(v, pParse->nVar, xCallback, pParse->pArg,
-                        pParse->explain);
-    if( pParse->useCallback ){
-      if( pParse->explain ){
-        rc = sqliteVdbeList(v);
-        db->next_cookie = db->aDb[0].schema_cookie;
-      }else{
-        sqliteVdbeExec(v);
-      }
-      rc = sqliteVdbeFinalize(v, &pParse->zErrMsg);
-      if( rc ) pParse->nErr++;
-      pParse->pVdbe = 0;
-      pParse->rc = rc;
-      if( rc ) pParse->nErr++;
-    }else{
-      pParse->rc = pParse->nErr ? SQLITE_ERROR : SQLITE_DONE;
-    }
+    sqliteVdbeMakeReady(v, pParse->nVar, pParse->explain);
+    pParse->rc = pParse->nErr ? SQLITE_ERROR : SQLITE_DONE;
     pParse->colNamesSet = 0;
-  }else if( pParse->useCallback==0 && pParse->rc==SQLITE_OK ){
+  }else if( pParse->rc==SQLITE_OK ){
     pParse->rc = SQLITE_ERROR;
   }
   pParse->nTab = 0;
index 9cc621d51e4fc9b0b2aa4b655819dd35910c862d..7f1386108fdc82713bd53b52f570591234a534ad 100644 (file)
@@ -14,7 +14,7 @@
 ** other files are for internal use by SQLite and should not be
 ** accessed by users of the library.
 **
-** $Id: main.c,v 1.154 2004/02/14 23:05:53 drh Exp $
+** $Id: main.c,v 1.155 2004/02/14 23:59:57 drh Exp $
 */
 #include "sqliteInt.h"
 #include "os.h"
@@ -700,7 +700,6 @@ int sqlite_compile(
   if( db->pVdbe==0 ){ db->nChange = 0; }
   memset(&sParse, 0, sizeof(sParse));
   sParse.db = db;
-  sParse.useCallback = 0;
   if( db->xTrace ) db->xTrace(db->pTraceArg, zSql);
   sqliteRunParser(&sParse, zSql, pzErrMsg);
   if( sqlite_malloc_failed ){
@@ -766,7 +765,7 @@ int sqlite_reset(
   char **pzErrMsg            /* OUT: Write error messages here */
 ){
   int rc = sqliteVdbeReset((Vdbe*)pVm, pzErrMsg);
-  sqliteVdbeMakeReady((Vdbe*)pVm, -1, 0, 0, 0);
+  sqliteVdbeMakeReady((Vdbe*)pVm, -1, 0);
   sqliteStrRealloc(pzErrMsg);
   return rc;
 }
index a604eab688d6a07efc7634f62dd1f1344a78a74f..f640a20f62e21261a4a9c5e3136e902a15bae3c6 100644 (file)
@@ -14,7 +14,7 @@
 ** the parser.  Lemon will also generate a header file containing
 ** numeric codes for all of the tokens.
 **
-** @(#) $Id: parse.y,v 1.109 2004/02/12 18:46:39 drh Exp $
+** @(#) $Id: parse.y,v 1.110 2004/02/14 23:59:57 drh Exp $
 */
 %token_prefix TK_
 %token_type {Token}
@@ -65,13 +65,10 @@ struct TrigEvent { int a; IdList * b; };
 %nonassoc END_OF_FILE ILLEGAL SPACE UNCLOSED_STRING COMMENT FUNCTION
           COLUMN AGG_FUNCTION.
 
-// Input is zero or more commands.
+// Input is a single SQL command
 input ::= cmdlist.
-
-// A list of commands is zero or more commands
-//
-cmdlist ::= ecmd.
 cmdlist ::= cmdlist ecmd.
+cmdlist ::= ecmd.
 ecmd ::= explain cmdx SEMI.
 ecmd ::= SEMI.
 cmdx ::= cmd.           { sqliteExec(pParse); }
index e063b78596841751d1e4abe056896492586c1cf5..55c9812a8dc4ca7129349bac0e5f17da6a752169 100644 (file)
@@ -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.154 2004/02/14 16:31:04 drh Exp $
+** $Id: select.c,v 1.155 2004/02/14 23:59:58 drh Exp $
 */
 #include "sqliteInt.h"
 
@@ -648,9 +648,6 @@ static void generateColumnTypes(
 ){
   Vdbe *v = pParse->pVdbe;
   int i, j;
-  if( pParse->useCallback && (pParse->db->flags & SQLITE_ReportTypes)==0 ){
-    return;
-  }
   for(i=0; i<pEList->nExpr; i++){
     Expr *p = pEList->a[i].pExpr;
     char *zType = 0;
@@ -1502,9 +1499,7 @@ static int multiSelect(Parse *pParse, Select *p, int eDest, int iParm){
 
   /* Issue a null callback if that is what the user wants.
   */
-  if( eDest==SRT_Callback /* &&
-    (pParse->useCallback==0 || (pParse->db->flags & SQLITE_NullCallback)!=0) */
-  ){
+  if( eDest==SRT_Callback ){
     sqliteVdbeAddOp(v, OP_NullCallback, p->pEList->nExpr, 0);
   }
   return 0;
@@ -2402,9 +2397,7 @@ int sqliteSelect(
 
   /* Issue a null callback if that is what the user wants.
   */
-  if( eDest==SRT_Callback /* &&
-    (pParse->useCallback==0 || (pParse->db->flags & SQLITE_NullCallback)!=0) */
-  ){
+  if( eDest==SRT_Callback ){
     sqliteVdbeAddOp(v, OP_NullCallback, pEList->nExpr, 0);
   }
 
index 30e74e3e23b74f40abfec9f905dfe4cfaa66c74e..dfdfef37bef5532143de618750f3f4dd12c1afdb 100644 (file)
@@ -11,7 +11,7 @@
 *************************************************************************
 ** Internal interface definitions for SQLite.
 **
-** @(#) $Id: sqliteInt.h,v 1.212 2004/02/14 23:05:53 drh Exp $
+** @(#) $Id: sqliteInt.h,v 1.213 2004/02/14 23:59:58 drh Exp $
 */
 #include "config.h"
 #include "sqlite.h"
@@ -872,8 +872,6 @@ struct AggExpr {
 struct Parse {
   sqlite *db;          /* The main database structure */
   int rc;              /* Return code from execution */
-  sqlite_callback xCallback;  /* The callback function */
-  void *pArg;          /* First argument to the callback function */
   char *zErrMsg;       /* An error message */
   Token sErrToken;     /* The token at which the error occurred */
   Token sFirstToken;   /* The first token parsed */
@@ -886,7 +884,6 @@ struct Parse {
   u8 nameClash;        /* A permanent table name clashes with temp table name */
   u8 useAgg;           /* If true, extract field values from the aggregator
                        ** while generating expressions.  Normally false */
-  u8 useCallback;      /* True if callbacks should be used to report results */
   int nErr;            /* Number of errors seen */
   int nTab;            /* Number of previously allocated VDBE cursors */
   int nMem;            /* Number of memory cells used so far */
index b2373b368cc728e066c6a6912ede8b5c18ea2d94..d0a34fed2a81b75bd317a92f2bc5aee7bf620c3c 100644 (file)
@@ -15,7 +15,7 @@
 ** individual tokens and sends those tokens one-by-one over to the
 ** parser for analysis.
 **
-** $Id: tokenize.c,v 1.67 2004/01/08 02:17:33 drh Exp $
+** $Id: tokenize.c,v 1.68 2004/02/14 23:59:58 drh Exp $
 */
 #include "sqliteInt.h"
 #include "os.h"
@@ -474,7 +474,7 @@ abort_parse:
     pParse->zErrMsg = 0;
     if( !nErr ) nErr++;
   }
-  if( pParse->pVdbe && (pParse->useCallback || pParse->nErr>0) ){
+  if( pParse->pVdbe && pParse->nErr>0 ){
     sqliteVdbeDelete(pParse->pVdbe);
     pParse->pVdbe = 0;
   }
index caabeefd0d7b57eb267963b3108362a47445b934..74c8ed1e4debad7bdf71c980e8e49674bd4958e0 100644 (file)
@@ -43,7 +43,7 @@
 ** in this file for details.  If in doubt, do not deviate from existing
 ** commenting and indentation practices when changing or adding code.
 **
-** $Id: vdbe.c,v 1.263 2004/02/14 17:35:07 drh Exp $
+** $Id: vdbe.c,v 1.264 2004/02/14 23:59:58 drh Exp $
 */
 #include "sqliteInt.h"
 #include "os.h"
@@ -872,23 +872,12 @@ case OP_Callback: {
   }
   azArgv[i] = 0;
   p->nCallback++;
-  if( p->xCallback==0 ){
-    p->azResColumn = azArgv;
-    p->nResColumn = pOp->p1;
-    p->popStack = pOp->p1;
-    p->pc = pc + 1;
-    p->pTos = pTos;
-    return SQLITE_ROW;
-  }
-  if( sqliteSafetyOff(db) ) goto abort_due_to_misuse; 
-  if( p->xCallback(p->pCbArg, pOp->p1, azArgv, p->azColName)!=0 ){
-    rc = SQLITE_ABORT;
-  }
-  if( sqliteSafetyOn(db) ) goto abort_due_to_misuse;
-  popStack(&pTos, pOp->p1);
-  assert( pTos>=&p->aStack[-1] );
-  if( sqlite_malloc_failed ) goto no_mem;
-  break;
+  p->azResColumn = azArgv;
+  p->nResColumn = pOp->p1;
+  p->popStack = pOp->p1;
+  p->pc = pc + 1;
+  p->pTos = pTos;
+  return SQLITE_ROW;
 }
 
 /* Opcode: NullCallback P1 * *
@@ -908,25 +897,15 @@ case OP_Callback: {
 ** in cases where the result set is empty.
 */
 case OP_NullCallback: {
+  p->nResColumn = pOp->p1;
   if( p->nCallback==0 && (db->flags & SQLITE_NullCallback)!=0 ){
-    if( p->xCallback!=0 ){
-      if( sqliteSafetyOff(db) ) goto abort_due_to_misuse; 
-      if( p->xCallback(p->pCbArg, pOp->p1, 0, p->azColName)!=0 ){
-        rc = SQLITE_ABORT;
-      }
-      if( sqliteSafetyOn(db) ) goto abort_due_to_misuse;
-      if( sqlite_malloc_failed ) goto no_mem;
-    }else{
-      p->azResColumn = 0;
-      p->nResColumn = pOp->p1;
-      p->popStack = 0;
-      p->pc = pc + 1;
-      p->pTos = pTos;
-      return SQLITE_ROW;
-    }
+    p->azResColumn = 0;
+    p->popStack = 0;
+    p->pc = pc + 1;
+    p->pTos = pTos;
     p->nCallback++;
+    return SQLITE_ROW;
   }
-  p->nResColumn = pOp->p1;
   break;
 }
 
@@ -4095,24 +4074,12 @@ case OP_SortCallback: {
   assert( pTos>=p->aStack );
   assert( pTos->flags & MEM_Str );
   p->nCallback++;
-  if( p->xCallback==0 ){
-    p->pc = pc+1;
-    p->azResColumn = (char**)pTos->z;
-    p->nResColumn = pOp->p1;
-    p->popStack = 1;
-    p->pTos = pTos;
-    return SQLITE_ROW;
-  }else{
-    if( sqliteSafetyOff(db) ) goto abort_due_to_misuse;
-    if( p->xCallback(p->pCbArg, pOp->p1, (char**)pTos->z, p->azColName)!=0){
-      rc = SQLITE_ABORT;
-    }
-    if( sqliteSafetyOn(db) ) goto abort_due_to_misuse;
-  }
-  Release(pTos);
-  pTos--;
-  if( sqlite_malloc_failed ) goto no_mem;
-  break;
+  p->pc = pc+1;
+  p->azResColumn = (char**)pTos->z;
+  p->nResColumn = pOp->p1;
+  p->popStack = 1;
+  p->pTos = pTos;
+  return SQLITE_ROW;
 }
 
 /* Opcode: SortReset * * *
index 87fea2517f48b9fa7bd29a74573a49f83dc79852..3535f91465d35048ca20459053d2b5f1900b1714 100644 (file)
@@ -15,7 +15,7 @@
 ** or VDBE.  The VDBE implements an abstract machine that runs a
 ** simple program to access and modify the underlying database.
 **
-** $Id: vdbe.h,v 1.68 2003/09/06 22:18:08 drh Exp $
+** $Id: vdbe.h,v 1.69 2004/02/14 23:59:58 drh Exp $
 */
 #ifndef _SQLITE_VDBE_H_
 #define _SQLITE_VDBE_H_
@@ -84,7 +84,7 @@ int sqliteVdbeFindOp(Vdbe*, int, int);
 VdbeOp *sqliteVdbeGetOp(Vdbe*, int);
 int sqliteVdbeMakeLabel(Vdbe*);
 void sqliteVdbeDelete(Vdbe*);
-void sqliteVdbeMakeReady(Vdbe*,int,sqlite_callback,void*,int);
+void sqliteVdbeMakeReady(Vdbe*,int,int);
 int sqliteVdbeExec(Vdbe*);
 int sqliteVdbeList(Vdbe*);
 int sqliteVdbeFinalize(Vdbe*,char**);
index 28f658a7efba6917890555f48bdb9161feeeef56..2fcd0a448457b89535db96436d95632a62e8ca9d 100644 (file)
@@ -259,9 +259,7 @@ struct Vdbe {
   int returnStack[100];   /* Return address stack for OP_Gosub & OP_Return */
   int returnDepth;        /* Next unused element in returnStack[] */
   int nResColumn;         /* Number of columns in one row of the result set */
-  char **azResColumn;                        /* Values for one row of result */ 
-  int (*xCallback)(void*,int,char**,char**); /* Callback for SELECT results */
-  void *pCbArg;                              /* First argument to xCallback() */
+  char **azResColumn;     /* Values for one row of result */ 
   int popStack;           /* Pop the stack this much on entry to VdbeExec() */
   char *zErrMsg;          /* Error message written here */
   u8 explain;             /* True if EXPLAIN present on SQL command */
index ddfd12efe6af925c4e0ddc9907157bcf8db4ac8d..93b95766ac039aec454fe84c65619744f3e6f930 100644 (file)
@@ -500,6 +500,7 @@ int sqliteVdbeList(
 ){
   sqlite *db = p->db;
   int i;
+  int rc = SQLITE_OK;
   static char *azColumnNames[] = {
      "addr", "opcode", "p1",  "p2",  "p3", 
      "int",  "text",   "int", "int", "text",
@@ -511,18 +512,20 @@ int sqliteVdbeList(
   p->azColName = azColumnNames;
   p->azResColumn = p->zArgv;
   for(i=0; i<5; i++) p->zArgv[i] = p->aStack[i].zShort;
-  p->rc = SQLITE_OK;
-  for(i=p->pc; p->rc==SQLITE_OK && i<p->nOp; i++){
-    if( db->flags & SQLITE_Interrupt ){
-      db->flags &= ~SQLITE_Interrupt;
-      if( db->magic!=SQLITE_MAGIC_BUSY ){
-        p->rc = SQLITE_MISUSE;
-      }else{
-        p->rc = SQLITE_INTERRUPT;
-      }
-      sqliteSetString(&p->zErrMsg, sqlite_error_string(p->rc), (char*)0);
-      break;
+  i = p->pc;
+  if( i>=p->nOp ){
+    p->rc = SQLITE_OK;
+    rc = SQLITE_DONE;
+  }else if( db->flags & SQLITE_Interrupt ){
+    db->flags &= ~SQLITE_Interrupt;
+    if( db->magic!=SQLITE_MAGIC_BUSY ){
+      p->rc = SQLITE_MISUSE;
+    }else{
+      p->rc = SQLITE_INTERRUPT;
     }
+    rc = SQLITE_ERROR;
+    sqliteSetString(&p->zErrMsg, sqlite_error_string(p->rc), (char*)0);
+  }else{
     sprintf(p->zArgv[0],"%d",i);
     sprintf(p->zArgv[2],"%d", p->aOp[i].p1);
     sprintf(p->zArgv[3],"%d", p->aOp[i].p2);
@@ -533,24 +536,13 @@ int sqliteVdbeList(
       p->zArgv[4] = p->aOp[i].p3;
     }
     p->zArgv[1] = sqliteOpcodeNames[p->aOp[i].opcode];
-    if( p->xCallback==0 ){
-      p->pc = i+1;
-      p->azResColumn = p->zArgv;
-      p->nResColumn = 5;
-      return SQLITE_ROW;
-    }
-    if( sqliteSafetyOff(db) ){
-      p->rc = SQLITE_MISUSE;
-      break;
-    }
-    if( p->xCallback(p->pCbArg, 5, p->zArgv, p->azColName) ){
-      p->rc = SQLITE_ABORT;
-    }
-    if( sqliteSafetyOn(db) ){
-      p->rc = SQLITE_MISUSE;
-    }
+    p->pc = i+1;
+    p->azResColumn = p->zArgv;
+    p->nResColumn = 5;
+    p->rc = SQLITE_OK;
+    rc = SQLITE_ROW;
   }
-  return p->rc==SQLITE_OK ? SQLITE_DONE : SQLITE_ERROR;
+  return rc;
 }
 
 /*
@@ -558,20 +550,10 @@ int sqliteVdbeList(
 ** as allocating stack space and initializing the program counter.
 ** After the VDBE has be prepped, it can be executed by one or more
 ** calls to sqliteVdbeExec().  
-**
-** The behavior of sqliteVdbeExec() is influenced by the parameters to
-** this routine.  If xCallback is NULL, then sqliteVdbeExec() will return
-** with SQLITE_ROW whenever there is a row of the result set ready
-** to be delivered.  p->azResColumn will point to the row and 
-** p->nResColumn gives the number of columns in the row.  If xCallback
-** is not NULL, then the xCallback() routine is invoked to process each
-** row in the result set.
 */
 void sqliteVdbeMakeReady(
   Vdbe *p,                       /* The VDBE */
   int nVar,                      /* Number of '?' see in the SQL statement */
-  sqlite_callback xCallback,     /* Result callback */
-  void *pCallbackArg,            /* 1st argument to xCallback() */
   int isExplain                  /* True if the EXPLAIN keywords is present */
 ){
   int n;
@@ -621,8 +603,6 @@ void sqliteVdbeMakeReady(
   p->returnDepth = 0;
   p->errorAction = OE_Abort;
   p->undoTransOnError = 0;
-  p->xCallback = xCallback;
-  p->pCbArg = pCallbackArg;
   p->popStack =  0;
   p->explain |= isExplain;
   p->magic = VDBE_MAGIC_RUN;