dan
660af939b0
Add new API function sqlite3_create_window_function(), for creating new
...
aggregate window functions.
FossilOrigin-Name: da03fb4318fd2613ec5c5b109a3974ac1120c19ed16bed4ca85bbdc4b35c998c
2018-06-18 16:55:22 +00:00
dan
9a94722d48
Fix problem with window functions min() and max() when used with a PARTITION
...
clause and a frame starting point other than "UNBOUNDED PRECEDING".
FossilOrigin-Name: 43eb1e75a4d7ac0973ed8589bbaf379c24cdc8eacc4e613610d2d4c24d385dc1
2018-06-14 19:06:36 +00:00
dan
09882a75c4
Merge latest trunk changes into this branch.
...
FossilOrigin-Name: 5cf5f1808a51f9c2cfc98dd49b4f1ce860b53e935287f89868ce2fdbace8eb06
2018-06-14 14:30:51 +00:00
dan
2a11bb23eb
Clarify the relationship between a Window object and its associated Expr.
...
FossilOrigin-Name: 0cd55e98a478740032f5569ddc00fa5b0e063e90db6e00ac7598c9b7c2fffeee
2018-06-11 20:50:25 +00:00
drh
299bf7c2f0
Add the OP_SetTabCol and OP_VerifyTabCol opcodes, only when compiling with
...
SQLITE_DEBUG, to do run-time verification of the column cache.
FossilOrigin-Name: b37614a3670770919a7c7f8157c5fd6578d736447998640b52e5cef8174cadc2
2018-06-11 17:35:02 +00:00
dan
96f55d0fa5
Merge recent trunk changes with this branch.
...
FossilOrigin-Name: c71f23590c25b4cecd27722e6c0fc8e3bf320d399c7d9398b7016dd5cf5b05eb
2018-06-09 18:09:44 +00:00
drh
1fe3ac7347
Compute the bitmask of indexed columns for each index once when the Index
...
objecct is constructed, instead of recomputing it every time it is needed.
FossilOrigin-Name: d735872ec383bbd220b08c61d25db9ff3675d2542b9e7867e7d6323a12e0cc23
2018-06-09 01:12:08 +00:00
dan
e3bf632cc2
Add support for the WINDOW clause.
...
FossilOrigin-Name: 19c983b511f1c823fdfb051713681b4c779f02fa83b41189afca0a9b8b72048d
2018-06-08 20:58:27 +00:00
dan
dacf1de95c
Do not flatten sub-queries that contain window functions.
...
FossilOrigin-Name: 236cb75bd1f0d5eb86aa5f52d8d548e7263c34633833dcea9dfc934f142113b8
2018-06-08 16:11:55 +00:00
dan
03854d2ecc
Fixes to allow group_concat() to be used as a window function.
...
FossilOrigin-Name: 89bbc9ba8f66853a7530453f146c9df1baacd8558468016cefa7602911f7578a
2018-06-08 11:45:28 +00:00
dan
2b1287cf44
Merge latest trunk changes into this branch.
...
FossilOrigin-Name: 83d6416a868fac81a78c9507185a48d00920e4322276245e285946f760915f4a
2018-06-04 08:28:18 +00:00
dan
dfa552f45b
Add support for window functions row_number(), rank(), dense_rank() and
...
percent_rank().
FossilOrigin-Name: 91c1cb7a217d0991a08256269f6c55ef185c25362d57b36bfbd2d85dab38e58f
2018-06-02 21:04:28 +00:00
dan
c9a8668ac7
Allow min() and max() to be used as window functions.
...
FossilOrigin-Name: c16125a884a9131b707ac20033968c4c3177ea79625a15efb64d754568c6c7a0
2018-05-30 20:44:58 +00:00
drh
9201184711
Store application-defined function names as lower-case to avoid the need
...
for case conversions before calling xFindFunction on virtual tables.
Avoid using lookaside to store the destructors for application defined
functions, as lookaside should be reserved for transient allocations.
FossilOrigin-Name: 777189ce88799f93f393fd14fd716111c85bcdcb23690fd561f78ea2bd2ce5da
2018-05-26 16:00:26 +00:00
dan
c3a20c19a8
Add support for "ROWS BETWEEN <expr> PRECEDING AND <expr> FOLLOWING" window
...
frames.
FossilOrigin-Name: 3a203660f1e4da3b8d2d605c494f4843f6e00752f28042b49e11d7d6550dd406
2018-05-23 20:55:37 +00:00
dan
f9eae18b56
Begin adding support for more esoteric window frames.
...
FossilOrigin-Name: bc4b81d60d40583de0f929730159011c1a7696802532ebd02220de3ace94a60d
2018-05-21 19:45:11 +00:00
dan
e2f781b9d1
Evaluate multiple window functions in a single pass if they use the same
...
window definition. Add xValue callbacks for other built-in aggregate
functions.
FossilOrigin-Name: c9f0f140941660ff368e5bb5752d54feb1964b7a9eac986d4bfb8f24a1c20d86
2018-05-17 19:24:08 +00:00
dan
86fb6e1738
Start of experimental implementation of SQL window functions. Does not yet
...
work.
FossilOrigin-Name: 3781e520854808fe02ad3fe77dd11fc917448c58ff1fd79123289dd91937decd
2018-05-16 20:58:07 +00:00
drh
0cdbe1aee0
Make the internal dynamic string interface available to extensions using
...
the new sqlite3_str object and its associated methods. This is mostly just
a renaming of internal objects and methods to use external names, through
there are a few small wrapper functions.
FossilOrigin-Name: 87f261f0cb800b06ad786f6df16f2c4dddd0d93dfdcc77b4a4eaa22920b56bf1
2018-05-09 13:46:26 +00:00
drh
4388522561
In ORDER BY LIMIT queries, try to evaluate the ORDER BY terms first, and it
...
it becomes clear that the row will not come in under the LIMIT, then skip
evaluation of the other columns.
FossilOrigin-Name: c381f0ea57002a264fd958b28e4921cb9c9e73a10fb592f6bb64e6bc9bd16d39
2018-05-03 23:20:06 +00:00
drh
4d79983ca5
Optimizations to the new EQP framework.
...
FossilOrigin-Name: 956fef361a795bd081d8e23ce4075dc8aafcee63ab7275d13b657b529d185b30
2018-05-03 19:47:14 +00:00
drh
03c3905f94
Fix a dangling-else problem that was causing recursive CTEs to malfunction.
...
Begin fixing test cases to work with the new EQP output.
FossilOrigin-Name: 82ca44b82fed6814c84440ba8bfaa019488ab956e84ac165180e2fcece6facb2
2018-05-02 14:24:34 +00:00
drh
e2ca99c907
Begin reengineering the EXPLAIN QUERY PLAN function to provide more
...
intuitive output.
FossilOrigin-Name: 70b48a7972dfbb44af3ccd8ccd830e984bec88d80a78b3566a5de86a16e7fc14
2018-05-02 00:33:43 +00:00
drh
bbd4ae5a2f
Defer loading result column values into registers on an ORDER BY LIMIT until
...
we know that the LIMIT does not exclude the current row.
FossilOrigin-Name: ce4ef46058f4aaea6623a41255a2e4b69bb24f16a287391df48f6bacdb4c4989
2018-04-30 19:32:49 +00:00
drh
0314cf3aa5
Add the "PRAGMA reset_database=ON|OFF" command. When on, it causes the
...
database to appear to be empty, causing the next transaction to reset it to
an empty database.
FossilOrigin-Name: 02e1a13c1f04bb72599b98f51240c78d0d050de264fef5808fd97db3f4c16dac
2018-04-28 01:27:09 +00:00
drh
b2c8559fad
Avoid many unnecessary calls to sqlite3ReadSchema() and sqlite3Init() when
...
the schema is known to be valid already.
FossilOrigin-Name: 58cf812fd81329e82b3fdd61b7ad2040c9b90d2d80f592b9231e0e1902c8d577
2018-04-25 12:01:45 +00:00
drh
f20609d107
The ".selecttrace 0x2000" command causes just the top-level parse tree to
...
be displayed, after all transformations, and showing the EQP iSelectId at
each level.
FossilOrigin-Name: ca34c2dd20ee071e6f8d60f91dbf474515a688ba57949143483da1641246cb25
2018-04-23 17:43:35 +00:00
drh
4751b87f19
Ensure that there are no bind-parameters or incorrect schema references in
...
the UPSERT portions of an INSERT within a TRIGGER.
FossilOrigin-Name: d47a6bdda0ce967a7b70bc6eb56278c8b79525622381ff4adcf04525eafc1461
2018-04-23 13:28:55 +00:00
drh
fb32c44e41
Add the %extra_context directive to lemon, as an alternative to %extra_argument.
...
Use this to improve the performance of the parser.
FossilOrigin-Name: be47a6f5262a43f477700579512fe7112a0872faedcbbe5c3383d13a08af6440
2018-04-21 13:51:42 +00:00
drh
7fc3aba862
Enhance UPSERT so that the UPDATE uses the same set of cursors as the INSERT.
...
FossilOrigin-Name: c37f39d18d41ae5ba6c4561d87cbbf71f3b6896b86cc5cff9cdf046b02dc521a
2018-04-20 13:18:51 +00:00
dan
dedff6be8a
Add the "sorter-reference" optimization, allowing SQLite to be configured so
...
that some required values may be loaded from the database after external
sorting occurs for SELECT statements with ORDER BY clauses that are not
satisfied by database indexes.
FossilOrigin-Name: ef74090a40ceaef2fd93a7613ec99a191ce986811c852e96f4a19719f18af4f0
2018-04-18 19:56:14 +00:00
drh
5412eb5106
Fix the build for SQLITE_OMIT_UPSERT
...
FossilOrigin-Name: 32956519173ee49ec9dd9aa7952278eb4effe567493c6cb304e16f887df6bafa
2018-04-18 15:33:21 +00:00
dan
2cc00423a0
Add some more simple test cases for UPSERT. And a minor fix.
...
FossilOrigin-Name: 27cd3b2fb2ad0cf2b36741bd1057cb7973954d40456e9db158261a38b049d2b5
2018-04-17 18:16:10 +00:00
dan
2e3a5a810a
Add SQLITE_CONFIG_SORTERREF_SIZE configuration option.
...
FossilOrigin-Name: b25a7bb769b8397a00736bd922bd24b1200b2f82d36d42ecb4c3eb17efb4b84d
2018-04-16 21:12:42 +00:00
drh
eac9fabbc9
Add support for the "excluded.*" names in the UPDATE clause of an upsert.
...
FossilOrigin-Name: 0203f34faae07fbea0bff2d23b81fb37df8854cded4cdadac5a034132a096b6d
2018-04-16 13:00:50 +00:00
drh
1d621f7f0d
Merge changes from trunk.
...
FossilOrigin-Name: 54d96772e78b7f57d5b590aebe34a139ade73629aebe16677372650b33513b1d
2018-04-16 10:47:38 +00:00
drh
25c3b8caf4
Reduce the size of the NameContext object by grouping seldom-used fields
...
into a union.
FossilOrigin-Name: dba3095feeeb55b5c0ebe33bdd4be8ba1f24478406685d3a042a69d9c380e742
2018-04-16 10:34:13 +00:00
dan
24e25d32ce
Experimental change to "SELECT * FROM ... ORDER BY" processing to load some
...
column values from the db after sorting.
FossilOrigin-Name: 9719cb46bbf501ce80f185159d594f593dd0b2639b9ef5a71a6c7b70046cb08d
2018-04-14 18:46:20 +00:00
drh
0b30a11645
First cut at logic to perform DO UPDATE for rowid tables.
...
FossilOrigin-Name: a9080bc8b8c5f3b399eb1819bb5009581f178d85bb2b2cca7bc16a7b81b06863
2018-04-13 21:55:22 +00:00
drh
9eddacade9
Add infrastructure for doing an UPDATE as part of an UPSERT. Still no actual
...
UPDATE code, however.
FossilOrigin-Name: 6d3017f92bce3e50a91fab2f605e2af8b913b1b374adbfd977299eb042683de8
2018-04-13 18:59:17 +00:00
drh
c8a0c90b62
Get the ON CONFLICT DO NOTHING form of upsert working by mapping it
...
into INSERT OR IGNORE.
FossilOrigin-Name: d07f05e98bb9ce0f9b46db159d9df161b7499d6face6a5299ecd2d00a94fb8d0
2018-04-13 15:14:33 +00:00
drh
e9c2e772f1
Back off of the extended upsert syntax that allows multiple ON CONFLICT
...
clauses. The syntax now is exactly as in PostgreSQL and MySQL. Add support
for WHERE clauses on the conflict-target phrase, for partial indexes.
FossilOrigin-Name: 2c1b1987d8de1efa8ed7e1f199710e32ff20edf8ceec570514fc63bb1ef264e0
2018-04-13 13:06:45 +00:00
drh
788d55aa77
Begin adding upsert logic. This is an incremental check-in.
...
FossilOrigin-Name: 809696434097e62e8ef486c7478b5eb62c0cf1342522a5584939fade82821410
2018-04-13 01:15:09 +00:00
drh
dab0eb58d7
Extend the upsert syntax to allow a WHERE clause on the UPDATE.
...
FossilOrigin-Name: e4396c540a22fbc087a01050a32bfad514259d700c2381d7ac912580d7dca00f
2018-04-12 17:28:06 +00:00
drh
6cd7d489db
Update the upsert parsing so that it accepts conflict-target labels using
...
the PostgreSQL syntax, and also accepts the MySQL "ON DUPLICATE KEY"
syntax.
FossilOrigin-Name: c48f64d8ae2625a19267b02e4a173a07766934235ad3052cd9d38f5ecbcbfbc3
2018-04-12 15:43:05 +00:00
drh
46d2e5c35a
Add the Upsert object for holding upsert clause information.
...
FossilOrigin-Name: d83eaed539b274c2abd650d07522f491865d4917acbb64d05d01b3ba5c3cd446
2018-04-12 13:15:43 +00:00
drh
2c2e844a36
More complete parsing of UPSERT, including UPSERT within a trigger.
...
The sqlite3Insert() logic to actually perform the UPSERT is not yet
implemented, however.
FossilOrigin-Name: 5cc2a5a315a2f26b392811de45b3dc352873a173c2c6c65f37ce2e5f88a71cd2
2018-04-07 15:04:05 +00:00
drh
f0119b2e1b
Add infrastructure to support for using F_SETLKW with a timeout on system
...
that support that functionality. Requires SQLITE_ENABLE_SETLK_TIMEOUT.
FossilOrigin-Name: 2e54a7433ece4eb27e71bda6f2d121d5aa46ddd5a481357d8543d1432aaad689
2018-03-26 17:40:53 +00:00
drh
80262896d6
Refactor some internal object element names used by the busy handler, to
...
simplify analysis.
FossilOrigin-Name: 6c40c5574f4ae9795a142d01a8f84afd1b72678ea5f6bfca14a8646c4e862605
2018-03-26 16:37:53 +00:00
drh
2589787c5a
If terms of the WHERE clause require that the right table in a LEFT JOIN
...
not be a null row, then simplify the LEFT JOIN into an ordinary JOIN.
FossilOrigin-Name: 5b7abecc7ab8ccbbb8cb5e0f672e67625c2555ad03442efbf34cb395f5bb71a8
2018-03-20 21:16:15 +00:00