Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Including the phrase EXCLUDE NO OTHERS in the frame-spec of a window function (which is the default setting for EXCLUDE) silently disables the xInverse optimization. This is a feature, but we will keep it undocumented for now in case we later decide it is a bad idea. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
10aedce3dd2c0c9f0ee9e0aefd0b4d2c |
User & Date: | drh 2019-04-02 17:45:01.994 |
Context
2019-04-02
| ||
17:45 | Use a separate bit on db->dbOptFlags to disable the xInverse optimization on window functions, rather than reusing the query-flattener disable bit. (check-in: bc0fb1c324 user: drh tags: trunk) | |
17:45 | Including the phrase EXCLUDE NO OTHERS in the frame-spec of a window function (which is the default setting for EXCLUDE) silently disables the xInverse optimization. This is a feature, but we will keep it undocumented for now in case we later decide it is a bad idea. (check-in: 10aedce3dd user: drh tags: trunk) | |
13:10 | Put the list of keywords in mkkeywordhash.c into alphabetical order. (check-in: ac98b23b34 user: drh tags: trunk) | |
Changes
Changes to src/parse.y.
︙ | ︙ | |||
1713 1714 1715 1716 1717 1718 1719 | frame_bound(A) ::= expr(X) FOLLOWING. { A.eType = TK_FOLLOWING; A.pExpr = X; } %type frame_exclude_opt {u8} frame_exclude_opt(A) ::= . { A = 0; } frame_exclude_opt(A) ::= EXCLUDE frame_exclude(X). { A = X; } %type frame_exclude {u8} | | | 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 | frame_bound(A) ::= expr(X) FOLLOWING. { A.eType = TK_FOLLOWING; A.pExpr = X; } %type frame_exclude_opt {u8} frame_exclude_opt(A) ::= . { A = 0; } frame_exclude_opt(A) ::= EXCLUDE frame_exclude(X). { A = X; } %type frame_exclude {u8} frame_exclude(A) ::= NO OTHERS. { A = TK_NO; } frame_exclude(A) ::= CURRENT ROW. { A = TK_CURRENT; } frame_exclude(A) ::= GROUP. { A = TK_GROUP; } frame_exclude(A) ::= TIES. { A = TK_TIES; } %type window_clause {Window*} %destructor window_clause {sqlite3WindowListDelete(pParse->db, $$);} |
︙ | ︙ |