limbo/testing
Preston Thorpe d6ceda8dcb
Merge 'fix(core/translate): apply affinity conversion to hash join build and probe keys' from Nuno Gonçalves
## Description
This PR adds missing affinity conversion to hash joins by applying
affinity conversion to build and probe keys before hashing.
```
turso> CREATE TABLE x(a INTEGER);
turso> CREATE TABLE y(b TEXT);
turso> INSERT INTO x VALUES (2),(3);
turso> INSERT INTO y VALUES ('02'),('2'),('2.0'),('3x'),('3.5');
turso> SELECT a, b
  FROM x JOIN y ON a = b
  ORDER BY a, b;
┌───┬─────┐
│ a │ b   │
├───┼─────┤
│ 2 │ 02  │
├───┼─────┤
│ 2 │ 2   │
├───┼─────┤
│ 2 │ 2.0 │
└───┴─────┘
```
## Motivation and context
Fixes #3482.
Currently, Turso returns an empty result set:
```
turso> CREATE TABLE x(a INTEGER);
turso> CREATE TABLE y(b TEXT);
turso> INSERT INTO x VALUES (2),(3);
turso> INSERT INTO y VALUES ('02'),('2'),('2.0'),('3x'),('3.5');
turso> SELECT a, b
  FROM x JOIN y ON a = b
  ORDER BY a, b;
turso>
```
Expected behavior:
```
sqlite> CREATE TABLE x(a INTEGER);
sqlite> CREATE TABLE y(b TEXT);
sqlite> INSERT INTO x VALUES (2),(3);
sqlite> INSERT INTO y VALUES ('02'),('2'),('2.0'),('3x'),('3.5');
sqlite> SELECT a, b
   ...>   FROM x JOIN y ON a = b
   ...>   ORDER BY a, b;
2|02
2|2
2|2.0
```
## Description of AI Usage
This PR was developed with assistance from Claude Sonnet 4.5 through
code completions.

Reviewed-by: Preston Thorpe <preston@turso.tech>

Closes #4317
2025-12-21 21:08:29 -05:00
..
cli_tests Improve MVCC DX by dropping --experimental-mvcc flag 2025-12-19 12:59:42 +02:00
javascript fix tests in testing/javascript 2025-09-25 12:07:57 +04:00
sqlancer Add run-sqlancer.sh script to run sqlancer using Turso java bindings 2025-12-11 17:18:11 +02:00
sqlite3 testing/sqlite3: Update all.test 2025-08-02 13:00:18 +03:00
sqlite_test_ext Implement xBestIndex for kvstore.c 2025-08-04 19:25:11 +02:00
test_files CSV import fixes 2025-07-15 16:44:11 +03:00
unreliable-libc Add short writes to pwritev in faulty_libc. 2025-10-03 18:35:03 +02:00
wal
affinity.test Add tests 2025-12-19 08:53:58 +05:30
agg-functions.test printf truncates floats 2025-09-28 21:16:33 +05:30
all-mvcc.test tcl: exclude partial index for mvcc tcl tests 2025-12-19 10:43:22 +01:00
all.test don't rewrite qualified table names 2025-12-16 16:45:40 +05:30
alter_column.test fix(core): prevent ALTER COLUMN from resulting in tables with only generated columns 2025-12-19 21:52:36 +00:00
alter_table.test Add regression tcl test for #3886 2025-11-03 09:47:28 -05:00
analyze.test Add/expand tcl tests for analyze 2025-12-09 20:02:07 -05:00
attach.test Add regression test for #3540 attach issue 2025-10-06 21:33:42 -04:00
autoincr.test tcl,makefile: add tcl test infraestructure for mvcc 2025-12-08 18:05:45 +01:00
boolean.test Fix incompatibility AND Expression 2025-04-13 22:38:43 -03:00
changes.test Add 'make test-single' 2025-10-30 11:38:56 +02:00
cmdlineshell.test
coalesce.test extend TCL tests for COALESCE 2025-02-09 22:01:33 +04:00
collate.test add tcl tests for collate 2025-12-16 13:11:03 -03:00
compare.test Add 'make test-single' 2025-10-30 11:38:56 +02:00
concat.test Add 'make test-single' 2025-10-30 11:38:56 +02:00
create_index.test Prevent creating index on rowid pseudo-column 2025-12-06 16:10:51 -05:00
create_table.test fix(core): prevent ALTER COLUMN from resulting in tables with only generated columns 2025-12-19 21:52:36 +00:00
default_value.test Add 'make test-single' 2025-10-30 11:38:56 +02:00
delete.test chore: enable indexes by default 2025-08-01 15:44:56 +03:00
drop_index.test Including tests 2025-08-05 21:18:52 -07:00
drop_table.test fix: prevent DROP TABLE when table is referenced by foreign keys 2025-11-04 12:32:19 -03:00
foreign_keys.test dont validate fkey on parent add tests 2025-11-16 09:41:57 +05:30
gen-bigass-database.py add gen-bigass-database.py 2025-09-08 13:05:33 -04:00
gen-database.py ruff lint fix 2025-06-20 15:59:03 -03:00
glob.test Add 'make test-single' 2025-10-30 11:38:56 +02:00
groupby.test fix: result columns have varying binding precedence 2025-09-25 08:07:37 +03:00
insert.test tcl: exclude partial index for mvcc tcl tests 2025-12-19 10:43:22 +01:00
integrity_check.test Add 'make test-single' 2025-10-30 11:38:56 +02:00
join.test fix(core/translate): apply affinity conversion to hash join build and probe keys 2025-12-21 16:59:46 +00:00
json.test fix(json): properly serialize infinite values 2025-12-16 10:15:29 +00:00
like.test Added tests 2025-11-18 22:14:09 +05:30
literal.test handle int64 overflow by f64 2025-05-08 22:22:55 +08:00
materialized_views.test Fix: Drop internal DBSP table when dropping materialized view 2025-11-08 20:28:20 +01:00
math.test remove mod(x, y) function tests which are "unstable" at the argument boundaries 2025-12-17 14:42:10 +04:00
null.test Fix descending index scan returning rows when seek key is NULL 2025-12-08 13:19:58 +02:00
offset.test Fix expected error message 2025-10-15 09:41:44 +03:00
orderby.test Merge branch 'main' into order-by-heap-sort 2025-10-22 11:44:55 +04:00
partial_idx.test Add some tests for UPSERT with partial indexes 2025-09-20 18:32:50 -04:00
pragma.test impl cache spilling in pager 2025-12-17 11:57:34 -05:00
pyproject.toml Add bench-sqlite script and makefile command for benchmarking an I/O backend against sqlite3 2025-08-18 15:11:29 -04:00
README.md Add framework for testing extensions in TCL 2025-08-15 21:06:27 +02:00
returning.test AI-generated tests for DELETE RETURNING 2025-11-14 13:35:24 +02:00
rollback.test chore: enable indexes by default 2025-08-01 15:44:56 +03:00
scalar-functions-datetime.test core(datetime): added implementation of ceiling modifier to datetime 2025-08-23 22:59:08 -05:00
scalar-functions-printf.test Add 'make test-single' 2025-10-30 11:38:56 +02:00
scalar-functions.test Add TCL tests for quote scalar function w/ blob type 2025-11-27 20:59:23 -05:00
select.test Merge 'Revert "Merge 'fix stack overflow in long unary expressions' from "' from Jussi Saurio 2025-12-20 13:43:40 -05:00
subquery.test Fix EXISTS on LEFT JOIN null rows 2025-11-04 22:01:18 +07:00
tester.tcl tcl,makefile: add tcl test infraestructure for mvcc 2025-12-08 18:05:45 +01:00
testing.db Set all testing dbs to WAL journal mode 2025-12-21 21:02:02 -05:00
testing_norowidalias.db Set all testing dbs to WAL journal mode 2025-12-21 21:02:02 -05:00
testing_small.db Set all testing dbs to WAL journal mode 2025-12-21 21:02:02 -05:00
testing_user_version_10.db Set all testing dbs to WAL journal mode 2025-12-21 21:02:02 -05:00
time.test extensions/time: normalize offset_sec 2025-02-19 21:25:14 +08:00
total-changes.test Add 'make test-single' 2025-10-30 11:38:56 +02:00
transactions.test Implement deferred transactions 2025-03-17 10:01:00 -03:00
trigger.test don't rewrite qualified table names 2025-12-16 16:45:40 +05:30
update.test fix(core/util): reject integer primary key underflow 2025-12-16 23:49:08 +00:00
upsert.test Add tcl tests for expr indexes and collation 2025-11-20 12:47:49 -05:00
values.test tests passing 2025-11-23 13:04:44 +05:30
vector.test added tcl tests 2025-12-06 00:01:17 +05:30
views.test Remove tests that alter testing.db from views.test 2025-10-18 12:05:33 -04:00
vtab.test Extract TVF-related tests to TCL 2025-08-15 21:06:30 +02:00
where.test fix: result columns have varying binding precedence 2025-09-25 08:07:37 +03:00
window.test Add support for window functions 2025-09-13 11:12:44 +02:00

Turso Testing

Testing Extensions

When adding tests for extensions, please follow these guidelines:

  • Tests that verify the internal logic or behavior of a particular extension should go into cli_tests/extensions.py.
  • Tests that verify how extensions interact with the database engine, such as virtual table handling, should be written in TCL (see vtab.test as an example).

To check which extensions are available in TCL, or to add a new one, refer to the tester.tcl file and look at the extension_map.