Files
turso/testing
Jussi Saurio 7948259d37 Merge 'optimizer: optimize range scans to use upper and lower bounds more efficiently' from Jussi Saurio
Made a new PR based on @sivukhin 's PR #2869 that had a lot of
conflicts. You can check out the PR description from there.
## The main idea is:
Before, if we had an index on `x` and had a query like `WHERE x > 100
and x < 200`, the plan would be something like:
```
- Seek to first row where x > 100
- Then, for every row, discard the row if x >= 200
```
This is highly wasteful in cases where there are a lot of rows where `x
>= 200`. Since our index is sorted on `x`, we know that once we hit the
_first_ row where `x >= 200`, we can stop iterating entirely.
So, the new plan is:
```
- Seek to first row where x > 100
- Then, iterate rows until x >= 200, and then stop
```
This also improves the situation for multi-column indexes. Imagine index
on `(x,y)` and a condition like `WHERE x = 100 and y > 100 and y < 200`.
Before, the plan was:
```
- Seek to first row where x=100 and y > 100
- Then, iterate rows while x = 100 and discard the row if y >= 200
- Stop when x > 100
```
This also suffers from a problem where if there are a lot of rows where
`x=100` and `y >= 200`, we go through those rows unnecessarily. The new
plan is:
```
- Seek to first row where x=100 and y > 100
- Then, iterate rows while x = 100 and y < 200
- Stop when either x > 100 or y >= 200
```
Which prevents us from iterating rows like `x=100, y = 666`
unnecessarily because we know the index is sorted on `(x,y)` - once we
hit any row where `x>100` OR `x=100, y >= 200`, we can stop.

Closes #3644
2025-10-09 14:47:15 +03:00
..
2025-09-29 22:33:39 -03:00
2025-08-02 13:00:18 +03:00
2025-07-15 16:44:11 +03:00
2024-08-03 12:16:34 +03:00
2025-09-28 21:16:33 +05:30
2025-02-09 22:01:33 +04:00
2025-10-02 21:49:33 +03:00
2025-01-21 00:29:23 +05:30
2025-10-09 08:28:59 +05:30
2025-08-01 15:44:56 +03:00
2025-08-05 21:18:52 -07:00
2025-06-20 15:59:03 -03:00
2025-06-11 18:39:06 +02:00
2025-09-23 14:22:02 -04:00
2025-05-08 22:22:55 +08:00
2025-09-17 14:50:15 +07:00
2025-09-01 11:39:43 -04:00
2025-08-11 12:13:47 -04:00
2025-08-01 15:44:56 +03:00
2025-09-30 15:26:13 -03:00
2025-08-01 15:44:56 +03:00
2025-08-11 08:42:08 -03:00
2025-06-07 17:37:36 +09:00
2025-09-30 22:39:55 +04:00
2025-07-18 10:39:02 -05:00
2025-10-01 02:12:21 +07:00
2025-08-15 21:06:30 +02:00
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.