Documentation Source Text

Check-in [55fce17e3c]
Login

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

Overview
Comment:Document the SQLITE_QUERY_PLANNER_LIMIT and SQLITE_QUERY_PLANNER_LIMIT_INCR compile-time options.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 55fce17e3c1bc014657664e941ec8c996e5fd141e0864b67096e78c5aafe02b2
User & Date: drh 2018-09-24 12:40:44.866
Context
2018-09-26
15:19
Merge changes from the 3.25 branch. (check-in: 2e3a732177 user: drh tags: trunk)
2018-09-24
12:40
Document the SQLITE_QUERY_PLANNER_LIMIT and SQLITE_QUERY_PLANNER_LIMIT_INCR compile-time options. (check-in: 55fce17e3c user: drh tags: trunk)
2018-09-21
10:16
Fix a harmless typo in the json documentation. (check-in: 2bdb2d7e21 user: drh tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to pages/compile.in.
509
510
511
512
513
514
515




























516
517
518
519
520
521
522
  Setting SQLITE_POWERSAFE_OVERWRITE to 1 causes SQLite to assume that
  application-level writes cannot changes bytes outside the range of
  bytes written even if the write occurs just before a power loss.
  With SQLITE_POWERSAFE_OVERWRITE set to 0, SQLite assumes that other
  bytes in the same sector with a written byte might be changed or 
  damaged by a power loss.
}





























COMPILE_OPTION {SQLITE_REVERSE_UNORDERED_SELECTS} {
  This option causes the [PRAGMA reverse_unordered_selects] setting to be
  enabled by default.  When enabled, [SELECT] statements that lack an
  ORDER BY clause will run in reverse order.<p>
  This option is useful for detecting when applications (incorrectly)
  assume that the order of rows in a SELECT without an ORDER BY clause







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
  Setting SQLITE_POWERSAFE_OVERWRITE to 1 causes SQLite to assume that
  application-level writes cannot changes bytes outside the range of
  bytes written even if the write occurs just before a power loss.
  With SQLITE_POWERSAFE_OVERWRITE set to 0, SQLite assumes that other
  bytes in the same sector with a written byte might be changed or 
  damaged by a power loss.
}

COMPILE_OPTION {SQLITE_QUERY_PLANNER_LIMIT=<i>N</i>} {
  As part of the query planning process, SQLite enumerates all usable
  combinations of indexes and WHERE-clause constraints.  For certain
  pathological queries, the number of these index-and-constraint combinations
  can be very large, resulting in slow performance by the query planner.
  The SQLITE_QUERY_PLANNER_LIMIT value (in conjunction with the
  related [SQLITE_QUERY_PLANNER_LIMIT_INCR] setting) limits the number 
  of index-and-constraint combinations that the query planner will 
  consider, in order to prevent the query planner from using excess
  CPU time.  The default value for SQLITE_QUERY_PLANNER_LIMIT is set
  high enough so that is never reached for real-world queries.  The
  query planner search limit only applies to queries that are deliberately
  crafted to use excess planning time.
}

COMPILE_OPTION {SQLITE_QUERY_PLANNER_LIMIT_INCR=<i>N</i>} {
  The [SQLITE_QUERY_PLANNER_LIMIT] option sets an initial baseline value
  for the maximum number of index-and-constraint combinations that the
  query planner consider.  The baseline query planner limit is increased
  by SQLITE_QUERY_PLANNER_LIMIT_INCR prior to processing each table of a
  join so that each table is guaranteed to be able to propose at least
  some index-and-constraint combinations to the optimizer even if prior
  tables of the join have exhausted the baseline limit.  The default
  value for both this compile-time option and the
  [SQLITE_QUERY_PLANNER_LIMIT] option are set high enough so that they should
  never be reached for real-world queries.
}

COMPILE_OPTION {SQLITE_REVERSE_UNORDERED_SELECTS} {
  This option causes the [PRAGMA reverse_unordered_selects] setting to be
  enabled by default.  When enabled, [SELECT] statements that lack an
  ORDER BY clause will run in reverse order.<p>
  This option is useful for detecting when applications (incorrectly)
  assume that the order of rows in a SELECT without an ORDER BY clause