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