/ Changes On Branch cumulative-progress-count
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch cumulative-progress-count Excluding Merge-Ins

This is equivalent to a diff from 1589db012e to 7a62fc6abc

2017-02-21
15:27
Very small enhancement to dispatch speed for SQL functions. (check-in: 3c3228ed16 user: drh tags: trunk)
14:04
The VDBE cycle counts for the sqlite3_progress_handler() callback are now cumulative. Leftovers from the previous statement are applied to the next statement. (Leaf check-in: 7a62fc6abc user: drh tags: cumulative-progress-count)
13:29
Proof of concept for a "PRAGMA vdbe_cycle_limit=N" command. When N>0, invoke sqlite3_interrupt() whenever any byte code program uses more than N virtual machine cycles. (Leaf check-in: 9626b41e6e user: drh tags: vdbe_cycle_limit)
2017-02-20
23:32
Correct a harmless typo in the previous check-in. (check-in: 1589db012e user: mistachkin tags: trunk)
19:13
Avoid unsigned integer overflows for SQLITE_WIN32_HEAP_INIT_SIZE when the Win32 heap subsystem is used with very large values of SQLITE_DEFAULT_CACHE_SIZE and/or SQLITE_DEFAULT_PAGE_SIZE. (check-in: 96b6a98e5e user: mistachkin tags: trunk)

Changes to src/sqliteInt.h.

  1387   1387     sqlite3_xauth xAuth;          /* Access authorization function */
  1388   1388     void *pAuthArg;               /* 1st argument to the access auth function */
  1389   1389   #endif
  1390   1390   #ifndef SQLITE_OMIT_PROGRESS_CALLBACK
  1391   1391     int (*xProgress)(void *);     /* The progress callback */
  1392   1392     void *pProgressArg;           /* Argument to the progress callback */
  1393   1393     unsigned nProgressOps;        /* Number of opcodes for progress callback */
         1394  +  unsigned iProgressCnt;        /* Current progress counter value */
  1394   1395   #endif
  1395   1396   #ifndef SQLITE_OMIT_VIRTUALTABLE
  1396   1397     int nVTrans;                  /* Allocated size of aVTrans */
  1397   1398     Hash aModule;                 /* populated by sqlite3_create_module() */
  1398   1399     VtabCtx *pVtabCtx;            /* Context for active vtab connect/create */
  1399   1400     VTable **aVTrans;             /* Virtual tables with open transactions */
  1400   1401     VTable *pDisconnect;    /* Disconnect these in next sqlite3_prepare() */

Changes to src/vdbe.c.

   601    601     assert( p->explain==0 );
   602    602     p->pResultSet = 0;
   603    603     db->busyHandler.nBusy = 0;
   604    604     if( db->u1.isInterrupted ) goto abort_due_to_interrupt;
   605    605     sqlite3VdbeIOTraceSql(p);
   606    606   #ifndef SQLITE_OMIT_PROGRESS_CALLBACK
   607    607     if( db->xProgress ){
   608         -    u32 iPrior = p->aCounter[SQLITE_STMTSTATUS_VM_STEP];
          608  +    u32 iPrior;
          609  +    if( p->pc==0 && db->nVdbeActive==1 ) db->iProgressCnt = 0;
          610  +    iPrior = db->iProgressCnt;
   609    611       assert( 0 < db->nProgressOps );
   610    612       nProgressLimit = db->nProgressOps - (iPrior % db->nProgressOps);
   611    613     }
   612    614   #endif
   613    615   #ifdef SQLITE_DEBUG
   614    616     sqlite3BeginBenignMalloc();
   615    617     if( p->pc==0
................................................................................
  7044   7046   
  7045   7047     /* This is the only way out of this procedure.  We have to
  7046   7048     ** release the mutexes on btrees that were acquired at the
  7047   7049     ** top. */
  7048   7050   vdbe_return:
  7049   7051     testcase( nVmStep>0 );
  7050   7052     p->aCounter[SQLITE_STMTSTATUS_VM_STEP] += (int)nVmStep;
         7053  +#ifndef SQLITE_OMIT_PROGRESS_CALLBACK
         7054  +  db->iProgressCnt += (int)nVmStep;
         7055  +#endif
  7051   7056     sqlite3VdbeLeave(p);
  7052   7057     assert( rc!=SQLITE_OK || nExtraDelete==0 
  7053   7058          || sqlite3_strlike("DELETE%",p->zSql,0)!=0 
  7054   7059     );
  7055   7060     return rc;
  7056   7061   
  7057   7062     /* Jump to here if a string or blob larger than SQLITE_MAX_LENGTH