Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Merge changes from the 3.25 branch. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
2e3a732177acb0835a75ca6c9d40a02f |
User & Date: | drh 2018-09-26 15:19:41.894 |
Context
2018-09-27
| ||
12:56 | Say that the recursive part of a CTE may not use aggregate or window functions. (check-in: aa1202143a user: drh tags: trunk) | |
2018-09-26
| ||
15:19 | Merge changes from the 3.25 branch. (check-in: 2e3a732177 user: drh tags: trunk) | |
2018-09-25
| ||
19:32 | Version 3.25.2 (check-in: 8c31c0cd8c user: drh tags: release, version-3.25.2, branch-3.25) | |
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) | |
Changes
Changes to common_links.tcl.
︙ | ︙ | |||
8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <li> <a href="chronology.html">Prior Releases</a> <li> <a href="lang.html">SQL Syntax</a> <ul> <li> <a href="pragma.html#toc">Pragmas</a> <li> <a href="lang_corefunc.html">SQL functions</a> <li> <a href="lang_datefunc.html">Date & time functions</a> <li> <a href="lang_aggfunc.html">Aggregate functions</a> <li> <a href="json1.html">JSON functions</a> </ul> </li> <li> <a href="c3ref/intro.html">C/C++ Interface Spec</a> <ul> <li> <a href="cintro.html">Introduction</a> <li> <a href="c3ref/funclist.html">List of C-language APIs</a> | > | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <li> <a href="chronology.html">Prior Releases</a> <li> <a href="lang.html">SQL Syntax</a> <ul> <li> <a href="pragma.html#toc">Pragmas</a> <li> <a href="lang_corefunc.html">SQL functions</a> <li> <a href="lang_datefunc.html">Date & time functions</a> <li> <a href="lang_aggfunc.html">Aggregate functions</a> <li> <a href="windowfunctions.html#biwinfunc">Window functions</a> <li> <a href="json1.html">JSON functions</a> </ul> </li> <li> <a href="c3ref/intro.html">C/C++ Interface Spec</a> <ul> <li> <a href="cintro.html">Introduction</a> <li> <a href="c3ref/funclist.html">List of C-language APIs</a> |
︙ | ︙ |
Changes to pages/changes.in.
︙ | ︙ | |||
17 18 19 20 21 22 23 24 25 26 27 28 29 30 | proc chng {date desc {options {}}} { global nChng aChng xrefChng set aChng($nChng) [list $date $desc $options] set xrefChng($date) $nChng incr nChng } chng {2018-09-18 (3.25.1)} { <li> Extra sanity checking added to ALTER TABLE in the 3.25.0 release sometimes raises a false-positive when the table being modified has a trigger that updates a virtual table. The false-positive caused the ALTER TABLE to rollback, thus leaving the schema unchanged. Ticket [https://sqlite.org/src/info/b41031ea2b537237|b41031ea2b537237]. | > > > > > > > > > > > > > > > > > | 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | proc chng {date desc {options {}}} { global nChng aChng xrefChng set aChng($nChng) [list $date $desc $options] set xrefChng($date) $nChng incr nChng } chng {2018-09-25 (3.25.2)} { <li> Add the [PRAGMA legacy_alter_table=ON] command that causes the "ALTER TABLE RENAME" command to behave as it did in SQLite versions 3.24.0 and earlier: references to the renamed table inside the bodies of triggers and views are not updated. This new pragma provides a compatibility work around for older programs that expected the older, wonky behavior of ALTER TABLE RENAME. <li> Fix a problem with the new [window functions] implementation that caused a malfunction when complicated expressions involving window functions were used inside of a view. <li> Fixes for various other compiler warnings and minor problems associated with obscure configurations. <p><b>Hashes:</b> <li>SQLITE_SOURCE_ID: "2018-09-25 19:08:10 fb90e7189ae6d62e77ba3a308ca5d683f90bbe633cf681865365b8e92792d1c7" <li>SHA3-256 for sqlite3.c: 34c23ff91631ae10354f8c9d62fd7d65732b3d7f3acfd0bbae31ff4a62fe28af } {patchagainst 1 patchagainst 2} chng {2018-09-18 (3.25.1)} { <li> Extra sanity checking added to ALTER TABLE in the 3.25.0 release sometimes raises a false-positive when the table being modified has a trigger that updates a virtual table. The false-positive caused the ALTER TABLE to rollback, thus leaving the schema unchanged. Ticket [https://sqlite.org/src/info/b41031ea2b537237|b41031ea2b537237]. |
︙ | ︙ |
Changes to pages/chronology.in.
︙ | ︙ | |||
24 25 26 27 28 29 30 31 32 33 34 35 36 37 | # ORDER BY mtime DESC; # # A small amount of manual editing and de-duplication followed. # # Manually edit the list for each subsequent release. # foreach line [split { 2ac9003de4|2018-09-18|Version 3.25.1 b63af6c3bd|2018-09-15|Version 3.25.0 c7ee083322|2018-06-04|Version 3.24.0 4bb2294022|2018-04-10|Version 3.23.1 736b53f57f|2018-04-02|Version 3.23.0 0c55d17973|2018-01-22|Version 3.22.0 1a584e4999|2017-10-24|Version 3.21.0 | > | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | # ORDER BY mtime DESC; # # A small amount of manual editing and de-duplication followed. # # Manually edit the list for each subsequent release. # foreach line [split { fb90e7189a|2018-09-25|Version 3.25.2 2ac9003de4|2018-09-18|Version 3.25.1 b63af6c3bd|2018-09-15|Version 3.25.0 c7ee083322|2018-06-04|Version 3.24.0 4bb2294022|2018-04-10|Version 3.23.1 736b53f57f|2018-04-02|Version 3.23.0 0c55d17973|2018-01-22|Version 3.22.0 1a584e4999|2017-10-24|Version 3.21.0 |
︙ | ︙ |
Changes to pages/index.in.
︙ | ︙ | |||
10 11 12 13 14 15 16 | [full-featured SQL|full-featured], [public-domain], SQL database engine. SQLite is the [most used] database engine in the world. <a class="button" href="about.html">More Info</a></p> <hr class="xhr"> <span class="hdrfont">Latest Release: </span> | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | [full-featured SQL|full-featured], [public-domain], SQL database engine. SQLite is the [most used] database engine in the world. <a class="button" href="about.html">More Info</a></p> <hr class="xhr"> <span class="hdrfont">Latest Release: </span> <a href="releaselog/3_25_2.html">Version 3.25.2</a> ([dateof:3.25.2]). <a class="button" href="download.html">Download</a> <a class="button" href="chronology.html">Prior Releases</a> <div class="mobileonly"> <hr class="xhr"> <h3>Common Links</h3> <tcl>common_links</tcl> |
︙ | ︙ |
Changes to pages/lang.in.
︙ | ︙ | |||
2386 2387 2388 2389 2390 2391 2392 | <p>The boolean identifiers TRUE and FALSE are usually just aliases for the integer values 1 and 0, respectively. However, if TRUE or FALSE occur on the right-hand side of an IS operator, then they form new unary postfix operators "IS TRUE" and "IS FALSE" which test the boolean value of the operand on the left. <h3>Functions</h3> | | > | > | 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 | <p>The boolean identifiers TRUE and FALSE are usually just aliases for the integer values 1 and 0, respectively. However, if TRUE or FALSE occur on the right-hand side of an IS operator, then they form new unary postfix operators "IS TRUE" and "IS FALSE" which test the boolean value of the operand on the left. <h3>Functions</h3> <p>SQLite supports many [corefunc|simple], [aggfunc|aggregate], and [window functions|window] SQL functions. For presentation purposes, simple functions are further subdivided into [corefunc | core functions], [datefunc|date-time functions], and [json1|JSON functions]. Applications can add new functions, written in C/C++, using the [sqlite3_create_function()] interface. </p> <p>^It is possible to have an aggregate function with the same name as a simple function, as long as the number of arguments for the two forms of the function are different. ^For example, the [agg_max|max()] function with a |
︙ | ︙ | |||
2440 2441 2442 2443 2444 2445 2446 | 2 arguments. } funcdef {glob(X,Y)} {} { ^The glob(X,Y) function is equivalent to the expression "<b>Y GLOB X</b>". Note that the X and Y arguments are reversed in the glob() function | | > > > > > | | 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 | 2 arguments. } funcdef {glob(X,Y)} {} { ^The glob(X,Y) function is equivalent to the expression "<b>Y GLOB X</b>". Note that the X and Y arguments are reversed in the glob() function relative to the infix [GLOB] operator. Y is the string and X is the pattern. So, for example, the following expressions are equivalent: <blockquote><pre> name LIKE '*helium*' glob('*helium*',name) </pre></blockquote> <p>^If the [sqlite3_create_function()] interface is used to override the glob(X,Y) function with an alternative implementation then the [GLOB] operator will invoke the alternative implementation. } funcdef {ifnull(X,Y)} {} { ^The ifnull() function returns a copy of its first non-NULL argument, or NULL if both arguments are NULL. ^Ifnull() must have exactly 2 arguments. |
︙ | ︙ | |||
2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 | funcdef {like(X,Y) like(X,Y,Z)} {} { ^The like() function is used to implement the "<b>Y LIKE X [ESCAPE Z]</b>" expression. ^If the optional ESCAPE clause is present, then the like() function is invoked with three arguments. ^Otherwise, it is invoked with two arguments only. Note that the X and Y parameters are reversed in the like() function relative to the infix [LIKE] operator. ^The [sqlite3_create_function()] interface can be used to override the like() function and thereby change the operation of the [LIKE] operator. When overriding the like() function, it may be important to override both the two and three argument versions of the like() function. Otherwise, different code may be called to implement the [LIKE] operator depending on whether or not an ESCAPE clause was specified. | > > > > > > | 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 | funcdef {like(X,Y) like(X,Y,Z)} {} { ^The like() function is used to implement the "<b>Y LIKE X [ESCAPE Z]</b>" expression. ^If the optional ESCAPE clause is present, then the like() function is invoked with three arguments. ^Otherwise, it is invoked with two arguments only. Note that the X and Y parameters are reversed in the like() function relative to the infix [LIKE] operator. X is the pattern and Y is the string to match against that pattern. Hence, the following expressions are equivalent: <blockquote><pre> name LIKE '%neon%' like('%neon%',name) </pre></blockquote> ^The [sqlite3_create_function()] interface can be used to override the like() function and thereby change the operation of the [LIKE] operator. When overriding the like() function, it may be important to override both the two and three argument versions of the like() function. Otherwise, different code may be called to implement the [LIKE] operator depending on whether or not an ESCAPE clause was specified. |
︙ | ︙ | |||
2785 2786 2787 2788 2789 2790 2791 | ^This SQL function is implemented using the [sqlite3_result_zeroblob()] routine from the C/C++ interface. } </tcl> <p>The core functions shown below are available by default. [datefunc | Date & Time functions], | | > | 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 | ^This SQL function is implemented using the [sqlite3_result_zeroblob()] routine from the C/C++ interface. } </tcl> <p>The core functions shown below are available by default. [datefunc | Date & Time functions], [aggfunc | aggregate functions], [builtin window functions|window functions], and [json1 | JSON functions] are documented separately. An application may define additional functions written in C and added to the database engine using the [sqlite3_create_function()] API.</p> <tcl> set lx {} |
︙ | ︙ | |||
3010 3011 3012 3013 3014 3015 3016 | so the date is normalized to 2001-05-01. ^A similar effect occurs when the original date is February 29 of a leapyear and the modifier is ±N years where N is not a multiple of four.</p> <p>^The "start of" modifiers (7 through 9) shift the date backwards to the beginning of the current month, year or day.</p> | | | > > > | 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 | so the date is normalized to 2001-05-01. ^A similar effect occurs when the original date is February 29 of a leapyear and the modifier is ±N years where N is not a multiple of four.</p> <p>^The "start of" modifiers (7 through 9) shift the date backwards to the beginning of the current month, year or day.</p> <p>^The "weekday" modifier advances the date forward, if necessary, to the next date where the weekday number is N. Sunday is 0, Monday is 1, and so forth. ^If the date is already on the desired weekday, the "weekday" modifier leaves the date unchanged. </p> <p>^The "unixepoch" modifier (11) only works if it immediately follows a timestring in the DDDDDDDDDD format. ^This modifier causes the DDDDDDDDDD to be interpreted not as a Julian day number as it normally would be, but as [http://en.wikipedia.org/wiki/Unix_time | Unix Time] - the number of seconds since 1970. If the "unixepoch" modifier does not |
︙ | ︙ |
Changes to pages/news.in.
︙ | ︙ | |||
14 15 16 17 18 19 20 21 22 23 24 25 26 27 | hd_puts "<h3>$date - $title</h3>" regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt regsub -all {[Tt]icket #(\d+)} $txt \ {<a href="http://www.sqlite.org/cvstrac/tktview?tn=\1">\0</a>} txt hd_resolve "<blockquote>$txt</blockquote>" hd_puts "<hr width=\"50%\">" } newsitem {2018-09-18} {Release 3.25.1} { SQLite [version 3.25.1] is a patch against version 3.25.0 that contains two one-line fixes for bug that were introduced in version 3.25.0. See the change log for details. Upgrading from 3.25.0 is recommended. } | > > > > > > > > > > > > > > > > | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | hd_puts "<h3>$date - $title</h3>" regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt regsub -all {[Tt]icket #(\d+)} $txt \ {<a href="http://www.sqlite.org/cvstrac/tktview?tn=\1">\0</a>} txt hd_resolve "<blockquote>$txt</blockquote>" hd_puts "<hr width=\"50%\">" } newsitem {2018-09-25} {Release 3.25.2} { SQLite [version 3.25.2] is another patch against 3.25.0 that fixes still more problems associated with the new [window function] feature and the [ALTER TABLE] enhancements. Of particular note is the new [PRAGMA legacy_alter_table=ON] command, which causes the ALTER TABLE RENAME command to behave in the same goofy way that it did before the enhancements found in version 3.25.0 → references to renamed tables that are inside the bodies of triggers and views are not updated. The legacy behavior is arguably a bug, but some programs depend on the older buggy behavior. The 3.25.2 release also contains a fix to [window function] processing for VIEWs. There also a slew of other minor fixes that affect obscure compile-time options. See the [https://sqlite.org/src/timeline?r=branch-3.25|Fossil Timeline] for details. } newsitem {2018-09-18} {Release 3.25.1} { SQLite [version 3.25.1] is a patch against version 3.25.0 that contains two one-line fixes for bug that were introduced in version 3.25.0. See the change log for details. Upgrading from 3.25.0 is recommended. } |
︙ | ︙ |
Changes to pages/pragma.in.
︙ | ︙ | |||
766 767 768 769 770 771 772 773 774 775 776 777 778 779 | <p>^This pragma only operates on the single database specified prior to the pragma name (or on the "main" database if no database is specified.) There is no way to change the journal size limit on all attached databases using a single PRAGMA statement. The size limit must be set separately for each attached database. } Pragma legacy_file_format { <p>^(<b>PRAGMA legacy_file_format; <br>PRAGMA legacy_file_format = <i>boolean</i></b></p> <p>This pragma sets or queries the value of the legacy_file_format flag.)^ ^(When this flag is on, new SQLite databases are created in a file format that is readable and writable by all versions of | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 | <p>^This pragma only operates on the single database specified prior to the pragma name (or on the "main" database if no database is specified.) There is no way to change the journal size limit on all attached databases using a single PRAGMA statement. The size limit must be set separately for each attached database. } Pragma legacy_alter_table { <p>^(<b>PRAGMA legacy_alter_table; <br>PRAGMA legacy_alter_table = <i>boolean</i></b></p> <p>This pragma sets or queries the value of the legacy_alter_table flag.)^ ^(When this flag is on, the ALTER TABLE RENAME command (for changing the name of a table) works as it did in SQLite 3.24.0 ([dateof:3.24.0]) and earlier.)^ More specifically, when this flag is on the ALTER TABLE RENAME command only rewrites the initial occurrence of the table name in its CREATE TABLE statement and in any associated CREATE INDEX and CREATE TRIGGER statements. Other references to the table are unmodifed, including: <ul> <li> References to the table within the bodies of triggers and views. <li> References to the table within CHECK constraints in the original CREATE TABLE statement. <li> References to the table within the WHERE clauses of [partial indexes]. </ul> The default setting for this pragma is OFF, which means that all references to the table anywhere in the schema are converted to the new name. <p>This pragma is provided as a work-around for older programs that contain code that expect the incomplete behavior of ALTER TABLE RENAME found in older versions of SQLite. New applications should leave this flag turned off. <p>For compability with older [virtual table] implementations, this flag is turned on temporarily while the [sqlite3_module.xRename] method is being run. The value of this flag is restore after the [sqlite3_module.xRename] method finishes. } Pragma legacy_file_format { <p>^(<b>PRAGMA legacy_file_format; <br>PRAGMA legacy_file_format = <i>boolean</i></b></p> <p>This pragma sets or queries the value of the legacy_file_format flag.)^ ^(When this flag is on, new SQLite databases are created in a file format that is readable and writable by all versions of |
︙ | ︙ |
Changes to pages/vtab.in.
︙ | ︙ | |||
1373 1374 1375 1376 1377 1378 1379 | </codeblock> <p>This method provides notification that the virtual table implementation that the virtual table will be given a new name. If this method returns [SQLITE_OK] then SQLite renames the table. If this method returns an [error code] then the renaming is prevented. | | > > > > > > > > > | 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 | </codeblock> <p>This method provides notification that the virtual table implementation that the virtual table will be given a new name. If this method returns [SQLITE_OK] then SQLite renames the table. If this method returns an [error code] then the renaming is prevented. <p>The xRename method is optional. If omitted, then the virtual table may not be renamed using the ALTER TABLE RENAME command. <p>The [PRAGMA legacy_alter_table] setting is enabled prior to invoking this method, and the value for legacy_alter_table is restored after this method finishes. This is necessary for the correct operation of virtual tables that make use of [shadow tables] where the shadow tables must be renamed to match the new virtual table name. If the legacy_alter_format is off, then the xConnect method will be invoked for the virtual table every time the xRename method tries to change the name of the shadow table. <tcl>############################################################# xSavepoint hd_fragment xsavepoint {sqlite3_module.xSavepoint} {xSavepoint}\ xRelease xRollbackTo</tcl> <h2>The xSavepoint, xRelease, and xRollbackTo Methods</h2> <codeblock> |
︙ | ︙ |
Changes to pages/windowfunctions.in.
|
| | | 1 2 3 4 5 6 7 8 | <tcl>hd_keywords {window functions} {window function}</tcl> <title>Window Functions</title> <table_of_contents> <h1>Introduction to Window Functions</h1> <p>A window function is a special SQL function where the input |
︙ | ︙ | |||
313 314 315 316 317 318 319 320 321 322 323 324 325 326 | for all ORDER BY expressions are considered peers regardless of the frame type. <p> Most built-in window functions ignore the <yynonterm>frame-spec</yynonterm>, the exceptions being first_value(), last_value() and nth_value(). It is a syntax error to specify a FILTER clause as part of a built-in window function invocation. <p> SQLite supports the following 11 built-in window functions: <dl> <dt><p><b>row_number()</b> <dd><p> The number of the row within the current partition. Rows are numbered starting from 1 in the order defined by the ORDER BY clause in the window definition, or in arbitrary order otherwise. | > | 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 | for all ORDER BY expressions are considered peers regardless of the frame type. <p> Most built-in window functions ignore the <yynonterm>frame-spec</yynonterm>, the exceptions being first_value(), last_value() and nth_value(). It is a syntax error to specify a FILTER clause as part of a built-in window function invocation. <tcl>hd_fragment biwinfunc {builtin window functions}</tcl> <p> SQLite supports the following 11 built-in window functions: <dl> <dt><p><b>row_number()</b> <dd><p> The number of the row within the current partition. Rows are numbered starting from 1 in the order defined by the ORDER BY clause in the window definition, or in arbitrary order otherwise. |
︙ | ︙ |