Commit Graph

4756 Commits

Author SHA1 Message Date
Diego Reis
b012d07aa3 bind/js: Apply pluck's logic to all methods 2025-05-26 17:14:33 -03:00
Diego Reis
b60fd81995 bind/js: Reduce boilerplate of binding variables and checking
Statement's state
2025-05-26 17:00:55 -03:00
Diego Reis
799f4149c5 bind/js: Add bind method 2025-05-26 16:52:48 -03:00
Diego Reis
bce4ac45db bind/js: Remove broken try/catch 2025-05-26 12:49:47 -03:00
Diego Reis
c2efab35e0 bind/js: Refactor tests 2025-05-26 12:48:51 -03:00
Diego Reis
7dc69c9c39 bindings/js: Add extension loading 2025-05-26 12:25:43 -03:00
Diego Reis
dd029b3d37 fix clippy 2025-05-25 16:34:31 -03:00
Diego Reis
60b78b3566 bind/js: Partially implements pragma
Some pragmas may return more than one value, which would
break the current logic. So this cause should be handled in the future
2025-05-25 15:56:28 -03:00
Diego Reis
1ff454853b bind/js: Add close metho to Database 2025-05-25 14:47:04 -03:00
Diego Reis
f1018d97a4 bind/js: Add source attribute to Statement 2025-05-25 14:43:58 -03:00
Diego Reis
376adbb10a bind/js: Add support to variadic functions 2025-05-25 12:22:46 -03:00
Diego Reis
e463def54d wip: first wrapper version 2025-05-25 12:22:46 -03:00
Jussi Saurio
f388bc571e Merge 'xConnect for virtual tables to query core db connection' from Preston Thorpe
Re-Opening #1076 because it had bit-rotted to a point of no return.
However it has improved. Now with Weak references and no incrementing Rc
strong counts.
This also includes a better test extension that returns info about the
other tables in the schema.
![image](https://github.com/user-
attachments/assets/4292dc9c-121e-4ba2-8a51-4533bbcf2afd)
(theme doesn't show rows column)

Closes #1366
2025-05-25 14:37:38 +03:00
Jussi Saurio
621ae60ab5 Merge 'Reconstruct WAL frame cache when WAL is opened' from Jussi Saurio
Fixes #1567
Probably also fixes #1485
Currently we are simply unable to read any WAL frames from disk once a
fresh process w/ Limbo is opened, since we never try to read anything
from disk unless we already have it in our in-memory frame cache.
This commit implements a crude way of reading entire WAL into memory as
a single buffer and reconstructing the frame cache.

Reviewed-by: Pere Diaz Bou <pere-altea@homail.com>

Closes #1570
2025-05-25 14:35:47 +03:00
Jussi Saurio
385c0d8987 clippy stfu part 2: electric boogaloo 2025-05-25 10:32:23 +03:00
Jussi Saurio
2df01f0b6f clippy stfu 2025-05-25 10:29:30 +03:00
Jussi Saurio
6254246541 use tempfile in test 2025-05-25 10:25:52 +03:00
Jussi Saurio
64ef3f1343 simplify condition 2025-05-25 10:22:46 +03:00
Jussi Saurio
20e65c0125 bump max_loops to 100k 2025-05-25 10:21:41 +03:00
Pere Diaz Bou
a91f8aee78 Merge 'set non-shared cache by default' from Pere Diaz Bou
Shared cache requires more locking mechasnisms. We still have multi
threading issues not related to shared cache so it is wise to first fix
those and then once they are fixed, we can incrementally add shared
cache back with locking in place.

Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>

Closes #1568
2025-05-25 08:50:21 +02:00
PThorpe92
954df3f837 Fix csv test assertion 2025-05-24 17:33:01 -04:00
PThorpe92
98e1c0ddd4 Remove unused method for converting from ext type without ownership 2025-05-24 17:22:12 -04:00
PThorpe92
e53e30e06d Fix tests in csv extension to adapt to new API 2025-05-24 17:16:45 -04:00
PThorpe92
ef28906be3 Update extensions README with example for xConnect 2025-05-24 17:10:26 -04:00
PThorpe92
cf163f2dc0 Prevent double free in ext connection 2025-05-24 16:49:52 -04:00
PThorpe92
1cacbf1f0d Close statements in extension tests, and use mut pointers for stmt 2025-05-24 16:45:25 -04:00
PThorpe92
d63f9d8cff Make sure all resources are cleaned up properly in xconnect 2025-05-24 16:38:33 -04:00
PThorpe92
a4ed464ec4 Add some traces for errors in xconnect 2025-05-24 15:44:06 -04:00
PThorpe92
0decafbbc1 Use transparent struct in public api wrapper for vtab connect 2025-05-24 15:32:14 -04:00
PThorpe92
2e4343402e Add null checks to prevent double frees in vtab connections 2025-05-24 15:20:09 -04:00
PThorpe92
999205f896 Add documentation for connection api 2025-05-24 15:19:37 -04:00
Jussi Saurio
09df7e0c48 Merge 'TPC-H with criterion and nyrkio' from Pedro Muniz
Added a benchmark to bench TPC-H with criterion and have it uploaded to
Nyrkio. I did not delete the other tpc-h job because maybe someone uses
it and I'm not aware of it.

Closes #1560
2025-05-24 21:54:48 +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
PThorpe92
faa12987b4 Add test case to table stats extension 2025-05-24 14:49:59 -04:00
PThorpe92
4142d813c0 Change method name to bind_at to better reflect args in ext Statement 2025-05-24 14:49:58 -04:00
PThorpe92
a2f8b2dfea Fix add check for invalid argv index for vtab constraints in main loop 2025-05-24 14:49:58 -04:00
PThorpe92
58e1d5a4f8 Add additional test vtable extension for querying core 2025-05-24 14:49:58 -04:00
PThorpe92
d11ef6b9c5 Add execute method to xConnect db interface for vtables 2025-05-24 14:49:58 -04:00
PThorpe92
c2ec6caae1 Finish integrating xConnect into vtable open api 2025-05-24 14:49:58 -04:00
PThorpe92
cbd7245677 Update Vtable open method to accept core db connection 2025-05-24 14:49:58 -04:00
PThorpe92
2c784070f1 Impl Default for ext Value 2025-05-24 14:49:58 -04:00
PThorpe92
f61ccc78e8 Add from_ffi_ptr method to create OwnedValue from Ext type without taking ownership 2025-05-24 14:49:58 -04:00
PThorpe92
d51614a4fd Create extern functions to support vtab xConnect in core/ext 2025-05-24 14:49:57 -04:00
Jussi Saurio
208639c5ee clippy 2025-05-24 21:01:13 +03:00
Jussi Saurio
67359dc17b Add another persistence test and also assert that the data was in the WAL, not the main db 2025-05-24 20:44:47 +03:00
Jussi Saurio
1baa9c7038 Add regression test for being able to read WAL from disk 2025-05-24 18:35:53 +03:00
Jussi Saurio
fc45e0ec0d Reconstruct WAL frame cache when WAL is opened
Currently we are simply unable to read any WAL frames from disk
once a fresh process w/ Limbo is opened, since we never try to read
anything from disk unless we already have it in our in-memory
frame cache.

This commit implements a crude way of reading entire WAL into memory
as a single buffer and reconstructing the frame cache.
2025-05-24 18:29:44 +03:00
Jussi Saurio
02e7726249 Merge 'UNION ALL' from Jussi Saurio
Adds support for `UNION ALL` and introduces `Plan::CompoundSelect` so
that it can be extended to support `UNION/EXCEPT/INTERSECT` as well
```sql
do_execsql_test_on_specific_db {:memory:} select-union-all-1 {
  CREATE TABLE t1(x INTEGER);
  CREATE TABLE t2(x INTEGER);
  CREATE TABLE t3(x INTEGER);

  INSERT INTO t1 VALUES(1),(2),(3);
  INSERT INTO t2 VALUES(4),(5),(6);
  INSERT INTO t3 VALUES(7),(8),(9);

  SELECT x FROM t1
  UNION ALL
  SELECT x FROM t2
  UNION ALL
  SELECT x FROM t3;
} {1
2
3
4
5
6
7
8
9}

do_execsql_test_on_specific_db {:memory:} select-union-all-with-filters {
  CREATE TABLE t4(x INTEGER);
  CREATE TABLE t5(x INTEGER);
  CREATE TABLE t6(x INTEGER);

  INSERT INTO t4 VALUES(1),(2),(3),(4);
  INSERT INTO t5 VALUES(5),(6),(7),(8);
  INSERT INTO t6 VALUES(9),(10),(11),(12);

  SELECT x FROM t4 WHERE x > 2
  UNION ALL
  SELECT x FROM t5 WHERE x < 7
  UNION ALL
  SELECT x FROM t6 WHERE x = 10;
} {3
4
5
6
10}
```
Supports LIMIT. Currently does not support `WITH()`, `OFFSET` or `ORDER
BY` and explicitly returns a parse error if those are present.

Closes #1541
2025-05-24 13:41:57 +03:00
Jussi Saurio
8ed5334ca7 tests/fuzz: add compound_select_fuzz() 2025-05-24 13:12:41 +03:00