Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch vdbe_cycle_limit Excluding Merge-Ins
This is equivalent to a diff from 1589db01 to 9626b41e
2017-02-21
| ||
15:27 | Very small enhancement to dispatch speed for SQL functions. (check-in: 3c3228ed 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: 7a62fc6a 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: 9626b41e user: drh tags: vdbe_cycle_limit) | |
2017-02-20
| ||
23:32 | Correct a harmless typo in the previous check-in. (check-in: 1589db01 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: 96b6a98e user: mistachkin tags: trunk) | |
Changes to src/pragma.c.
︙ | |||
290 291 292 293 294 295 296 297 298 299 300 301 302 303 | 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 | + + + + + + + + | upr = mid - 1; }else{ lwr = mid + 1; } } return lwr>upr ? 0 : &aPragmaName[mid]; } /* ** A progress handler callback that interrupts. */ static int interruptProgressHandler(void *pDb){ sqlite3_interrupt((sqlite3*)pDb); return 1; } /* ** Process a pragma statement. ** ** Pragmas are of this form: ** ** PRAGMA [schema.]id [= value] |
︙ | |||
731 732 733 734 735 736 737 738 739 740 741 742 743 744 | 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 | + + + + + + + + + + + + + + + + + | sqlite3VdbeAddOp1(v, OP_ResultRow, 1); sqlite3VdbeAddOp2(v, OP_AddImm, 1, -1); sqlite3VdbeAddOp2(v, OP_IfPos, 1, addr); VdbeCoverage(v); sqlite3VdbeJumpHere(v, addr); break; } #endif /* ** PRAGMA vdbe_cycle_limit=N ** ** Arrange to interrupt any SQL statement that runs for more than N ** virtual machine instructions. If N is zero, allow virtual machines ** to run indefinitely. */ case PragTyp_VDBE_CYCLE_LIMIT: { assert( sqlite3SchemaMutexHeld(db, iDb, 0) ); if( zRight ){ int N = sqlite3Atoi(zRight); sqlite3_progress_handler(db, N, N>0 ? interruptProgressHandler : 0, db); } break; } #ifndef SQLITE_OMIT_PAGER_PRAGMAS /* ** PRAGMA [schema.]cache_size ** PRAGMA [schema.]cache_size=N ** ** The first form reports the current local setting for the |
︙ |
Changes to src/pragma.h.
︙ | |||
36 37 38 39 40 41 42 | 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | + - - - - - - - - + + + + + + + + | #define PragTyp_SOFT_HEAP_LIMIT 28 #define PragTyp_STATS 29 #define PragTyp_SYNCHRONOUS 30 #define PragTyp_TABLE_INFO 31 #define PragTyp_TEMP_STORE 32 #define PragTyp_TEMP_STORE_DIRECTORY 33 #define PragTyp_THREADS 34 #define PragTyp_VDBE_CYCLE_LIMIT 35 |
︙ | |||
558 559 560 561 562 563 564 565 566 567 568 569 570 571 | 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 | + + + + + + + + + | #if !defined(SQLITE_OMIT_FLAG_PRAGMAS) #if defined(SQLITE_DEBUG) {/* zName: */ "vdbe_addoptrace", /* ePragTyp: */ PragTyp_FLAG, /* ePragFlg: */ PragFlg_Result0|PragFlg_NoColumns1, /* ColNames: */ 0, 0, /* iArg: */ SQLITE_VdbeAddopTrace }, #endif #endif {/* zName: */ "vdbe_cycle_limit", /* ePragTyp: */ PragTyp_VDBE_CYCLE_LIMIT, /* ePragFlg: */ PragFlg_NoColumns, /* ColNames: */ 0, 0, /* iArg: */ 0 }, #if !defined(SQLITE_OMIT_FLAG_PRAGMAS) #if defined(SQLITE_DEBUG) {/* zName: */ "vdbe_debug", /* ePragTyp: */ PragTyp_FLAG, /* ePragFlg: */ PragFlg_Result0|PragFlg_NoColumns1, /* ColNames: */ 0, 0, /* iArg: */ SQLITE_SqlTrace|SQLITE_VdbeListing|SQLITE_VdbeTrace }, {/* zName: */ "vdbe_eqp", /* ePragTyp: */ PragTyp_FLAG, |
︙ | |||
600 601 602 603 604 605 606 | 610 611 612 613 614 615 616 617 | - + | {/* zName: */ "writable_schema", /* ePragTyp: */ PragTyp_FLAG, /* ePragFlg: */ PragFlg_Result0|PragFlg_NoColumns1, /* ColNames: */ 0, 0, /* iArg: */ SQLITE_WriteSchema|SQLITE_RecoveryMode }, #endif }; |
Changes to tool/mkpragmatab.tcl.
︙ | |||
326 327 328 329 330 331 332 333 334 335 336 337 338 339 | 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 | + + + | IF: !defined(SQLITE_OMIT_WAL) NAME: wal_autocheckpoint IF: !defined(SQLITE_OMIT_WAL) NAME: shrink_memory FLAG: NoColumns NAME: vdbe_cycle_limit FLAG: NoColumns NAME: busy_timeout FLAG: Result0 COLS: timeout NAME: lock_status FLAG: Result0 |
︙ |