Pekka Enberg
c6ef19396d
Merge 'Add support for pragma table-valued functions' from Piotr Rżysko
...
This PR adds support for table-valued functions for PRAGMAs (see the
[PRAGMA functions section](https://www.sqlite.org/pragma.html )).
Additionally, it introduces built-in table-valued functions. I
considered using extensions for this, but there are several reasons in
favor of a dedicated mechanism:
* It simplifies the use of internal functions, structs, etc. For
example, when implementing `json_each` and `json_tree`, direct access to
internals was necessary:
https://github.com/tursodatabase/limbo/pull/1088
* It avoids FFI overhead. [Benchmarks](https://github.com/piotrrzysko/li
mbo/blob/pragma_vtabs_bench/core/benches/pragma_benchmarks.rs) on my
hardware show that `pragma_table_info()` implemented as an extension is
2.5× slower than the built-in version.
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>
Closes #1642
2025-06-04 09:08:10 +03:00
Jussi Saurio
06626f72eb
Fix cursors not being opened for indexes in DELETE
2025-06-03 14:45:01 +03:00
Piotr Rzysko
d1d8ead475
Add support for pragma table-valued functions
2025-06-01 10:25:42 +02:00
pedrocarlo
39434fd20f
return_io when restoring context
2025-06-01 03:07:16 -03:00
pedrocarlo
2ddbb7eeed
adjust move_to and seek functions to make them truly reentrant + adding return_if_locked_maybe_load in some places so that we read loaded pages
2025-06-01 01:01:35 -03:00
pedrocarlo
d688cfd547
make find_cell and process_overflow_page reentrant
2025-05-31 23:31:59 -03:00
pedrocarlo
e97227ccb9
added delete operations to blobs in memory and write tests
2025-05-31 14:47:49 -03:00
Pere Diaz Bou
da4190a23e
Convert u64 rowid to i64
...
Rowids can be negative, therefore let's swap to i64
2025-05-30 13:07:31 +02:00
Jussi Saurio
d52a9a635c
fix: use tempfile as db path in constraint.py
2025-05-29 21:03:10 +03:00
Jussi Saurio
d18ab34193
Fix: dont pollute testing.db in insert tests
2025-05-29 20:51:29 +03:00
Pekka Enberg
1653bfb2b3
Merge 'Fix stress test to ignore unique constraint violation' from krishna sindhur
...
This should ignore unique constraint violation errors during the stress
test.
Closes #1606
2025-05-29 14:59:34 +03:00
krishna sindhur
4b66bcb2a7
fix: stress test will ignore unique constraint violation
2025-05-29 15:11:43 +05:30
Jussi Saurio
3d42f85c98
tests/python/writes: use tempfile instead of permanent file
2025-05-29 11:23:50 +03:00
meteorgan
86249d9c28
add more tests for pragma user_version
2025-05-28 00:47:09 +08:00
Jussi Saurio
b843ad0a58
Add INSERT INTO ... SELECT * FROM generate_series() regression test
2025-05-27 10:54:55 +03:00
pedrocarlo
1410e57112
correct union result_row or yield emission + test
2025-05-26 01:06:26 -03:00
pedrocarlo
ee93316c46
fix num_values detection + emitting correct column for temp_table + tests
2025-05-25 19:15:28 -03:00
pedrocarlo
90e3c8483d
tests with compound select
2025-05-25 19:15:28 -03:00
pedrocarlo
c86e7542ec
simple smoke tests
2025-05-25 19:13:40 -03:00
Jussi Saurio
d893a55c55
UNION
2025-05-25 21:23:04 +03:00
PThorpe92
c5d364064a
Add python tests for xConnect behavior and testing extension
2025-05-24 14:49:59 -04:00
PThorpe92
687edefcdf
Add option to py tests to create temporary db with clone of testing.db
2025-05-24 14:49:59 -04:00
Jussi Saurio
08bda9cc58
UNION ALL
2025-05-24 13:12:41 +03:00
Jussi Saurio
70433e100d
Merge 'btree: fix infinite looping in backwards iteration of btree table' from Jussi Saurio
...
Closes #1562
Existing "fuzz test" (not really fuzz, but kinda) didn't catch this due
to `LIMIT 3` clause
Closes #1563
2025-05-23 21:46:16 +03:00
Jussi Saurio
1a937462b3
Merge 'core/pragma: Add support for update user_version' from Diego Reis
...
It also changes the type from u32 to i32 since
sqlite supports negative values
Closes #1559
2025-05-23 17:00:55 +03:00
Jussi Saurio
517c795f15
Add another test
2025-05-23 14:33:55 +03:00
Jussi Saurio
cbb56a182e
Fix bug: backwards iteration of table btree hangs
2025-05-23 14:23:18 +03:00
meteorgan
01c8a4ca63
simpify values when it's subquery
2025-05-23 17:45:56 +08:00
Diego Reis
bfe4f5acef
pragma/user_version: Add test and update docs
2025-05-22 20:42:08 -03:00
meteorgan
34e05ef974
make values work in subquery
2025-05-23 00:30:04 +08:00
Jussi Saurio
afc94cd3be
Add basic select distinct TCL test
2025-05-22 16:51:03 +03:00
Piotr Rzysko
ad9d044a04
Add CSV extension
2025-05-21 09:22:59 +02:00
PThorpe92
c62d3e464f
Output rust backtrace in python tests
2025-05-20 09:20:59 -04:00
Pekka Enberg
e102cd0be5
Merge 'Add support for DISTINCT aggregate functions' from Jussi Saurio
...
Reviewable commit by commit. CI failures are not related.
Adds support for e.g. `select first_name, sum(distinct age),
count(distinct age), avg(distinct age) from users group by 1`
Implementation details:
- Creates an ephemeral index per distinct aggregate, and jumps over the
accumulation step if a duplicate is found
Closes #1507
2025-05-20 13:58:57 +03:00
pedrocarlo
52533cab40
only pass collations for index in cursor + adhere to order of columns in index
2025-05-19 15:22:55 -03:00
pedrocarlo
819fd0f496
use any error method instead, as limbo and sqlite error message differ slightly
2025-05-19 15:22:55 -03:00
pedrocarlo
5b15d6aa32
Get the table correctly from the connection instead of table_references + test to confirm unique constraint
2025-05-19 15:22:55 -03:00
pedrocarlo
5bd47d7462
post rebase adjustments to accomodate new instructions that were created before the merge conflicts
2025-05-19 15:22:15 -03:00
pedrocarlo
cc86c789d6
Correct Rtrim
2025-05-19 15:22:15 -03:00
pedrocarlo
6d7a73fd60
More tests
2025-05-19 15:22:15 -03:00
pedrocarlo
bf1fe9e0b3
Actually fixed group by and order by collation
2025-05-19 15:22:15 -03:00
pedrocarlo
0df6c87f07
Fixed Group By collation
2025-05-19 15:22:14 -03:00
pedrocarlo
bba9689674
Fixed matching bug for defining collation context to use
2025-05-19 15:22:14 -03:00
pedrocarlo
a818b6924c
Removed repeated binary expression translation. Adjusted the set_collation to capture additional context of whether it was set by a Collate expression or not. Added some tests to prove those modifications were necessary.
2025-05-19 15:22:14 -03:00
pedrocarlo
f8854f180a
Added collation to create table columns
2025-05-19 15:22:14 -03:00
pedrocarlo
d0a63429a6
Naive implementation of collate for queries. Not implemented for column constraints
2025-05-19 15:22:14 -03:00
Jussi Saurio
372850756d
Merge 'Fix updating single value' from Pedro Muniz
...
Closes #1482 . I needed to change the `key_exists_in_index` function
because it zips the values from the records it is comparing, but if one
of the records is empty or not of the same length, the `all` function
could return true incorrectly.
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>
Closes #1514
2025-05-18 22:51:11 +03:00
pedrocarlo
c8b768f1ea
add tests
2025-05-18 12:43:11 -03:00
pedrocarlo
af1f9492ef
fix updating single value
2025-05-17 19:43:24 -03:00
Jussi Saurio
51c75c6014
Support distinct aggregates in GROUP BY
2025-05-17 15:33:55 +03:00