Jussi Saurio
72058da9dc
Merge 'bindings/javascript: Add pragma() support' from Anton Harniakou
...
This PR adds column names to the ouput of js pragma function.
Reviewed-by: Diego Reis (@el-yawd)
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com >
Closes #1608
2025-06-10 18:24:13 +03:00
Jussi Saurio
4794b022a5
Merge 'Fix incorrect handling of OR clauses in HAVING' from Jussi Saurio
...
thanks to @pedrocarlo for reminding me we have this old-ass bug I never
bothered to fix
Closes #1708
2025-06-10 18:14:39 +03:00
Jussi Saurio
3d50822284
Merge 'fix: Incorrect placeholder label in where clause translation' from Pedro Muniz
...
Closes #1705
Closes #1707
2025-06-10 18:14:04 +03:00
Jussi Saurio
85972fd744
Merge 'Fix rowid to_sql_string' from Pedro Muniz
...
Addresses the panic encountered here:
https://github.com/tursodatabase/limbo/pull/1690 . Sorry about that.
Closes #1693
2025-06-10 18:11:51 +03:00
Jussi Saurio
18dd87eff1
Fix incorrect handling of OR clauses in HAVING
2025-06-10 18:02:14 +03:00
pedrocarlo
80c480517a
incorrect placeholder label in where clause translation
2025-06-10 12:00:19 -03:00
Jussi Saurio
ace1e02fc0
Remove leftover info trace
2025-06-10 16:51:34 +03:00
pedrocarlo
36f60e4dd1
Fix rowid to_sql_string printing
2025-06-10 10:48:05 -03:00
Jussi Saurio
547ca6cf2a
Fix incorrect usage of indexes with non-contiguous columns
...
Due to the left-prefix rule of indexes, for an index key to be usable,
it needs to:
- Use the columns in contiguous order (0, 1, 2...)
* eg if WHERE refers to cols 0 and 2, only 0 can be used
- Stop at the first range operator
* eg if WHERE: col1 = 5 AND col2 > 5 AND col3 = 5, only col1 and col2
can be used.
This wasn't properly tested, and resulted in simulator failures. Added
some regression tests for this behavior.
2025-06-10 15:21:26 +03:00
Jussi Saurio
f8df870fb7
Fix implementation of InteriorNodeReplacement(interior index cell being deleted)
2025-06-10 14:16:26 +03:00
Jussi Saurio
6d2ca58235
get_prev_record() small fixes
2025-06-10 14:16:26 +03:00
Jussi Saurio
07c947b47d
use GE for idx delete seek, although it doesnt really matter
2025-06-10 14:16:26 +03:00
Jussi Saurio
9caa8334be
add FIXME about balance after interior node replacement
2025-06-10 14:16:26 +03:00
Jussi Saurio
10caca25c9
advance in balance_non_root() if -1 idx
2025-06-10 14:16:26 +03:00
Jussi Saurio
d827eeade0
For now always calculate post-balance seek key
2025-06-10 14:16:26 +03:00
Jussi Saurio
976c2f72ef
OpIdxDeleteState needs another state to be re-entrant
2025-06-10 14:16:26 +03:00
Jussi Saurio
58172641fd
Use SeekOP:LT after post-deletebalancing to end up pointing to the left of the deleted row
2025-06-10 14:16:26 +03:00
Jussi Saurio
e1bc268a65
fix CREATE TABLE hang
2025-06-10 14:16:26 +03:00
Jussi Saurio
a5aeff9a3d
Fix index insert accidentally double-inserting after balance
2025-06-10 14:16:26 +03:00
Jussi Saurio
04e89c0c4a
actually fix drop table
2025-06-10 14:16:26 +03:00
Jussi Saurio
843eb18daf
simplify cursor.exists() by using seek()
2025-06-10 14:16:26 +03:00
Jussi Saurio
844461d20b
update and delete fixes
2025-06-10 14:16:26 +03:00
Jussi Saurio
d81f5f67bd
insert spaghetti fixes
2025-06-10 14:16:26 +03:00
Jussi Saurio
499296d396
fix drop table again: only stack.advance() in a single place
2025-06-10 14:16:26 +03:00
Jussi Saurio
1b4bef9c7c
Fix op_idx_delete infinite seeking loop
2025-06-10 14:16:26 +03:00
Jussi Saurio
5c08d259bf
Fix drop table: initialize loaded pages to cell idx 0
2025-06-10 14:16:26 +03:00
Jussi Saurio
e897052650
flatten process_overflow_read() to get rid of borrowmuterror possibility
2025-06-10 14:16:26 +03:00
Jussi Saurio
da2437408e
get_new_rowid(): fix off by one - rowids start at 1
2025-06-10 14:16:26 +03:00
Jussi Saurio
5f60cce3c7
fix seek_to_last()
2025-06-10 14:16:26 +03:00
Jussi Saurio
0ce18a9146
Fix comment
2025-06-10 14:16:26 +03:00
Jussi Saurio
0b7f5a2a13
Merge MoveTo&Seek states, remove unnecessary seekstate methods, add eq_seen flag to prevent unnecessary next()/prev()
2025-06-10 14:16:26 +03:00
Jussi Saurio
2bac140d73
Remove SeekOp::EQ and encode eq_only in LE&GE - needed for iteration direction aware equality seeks
2025-06-10 14:16:26 +03:00
Jussi Saurio
ae6a943e43
Leave parent pointing at rightmost pointer at the end of balance_root()
2025-06-10 14:16:26 +03:00
Jussi Saurio
cba84b7ce9
Remove premature cast to usize (cell_idx can be negative)
2025-06-10 14:16:26 +03:00
Jussi Saurio
8ad6aadbbd
remove unnecessary SeekingIndexMoveUp state
2025-06-10 14:16:26 +03:00
Jussi Saurio
a3ffc6f4e2
Align prev() implementation with next()
2025-06-10 14:16:26 +03:00
Jussi Saurio
58e1a2f5bc
Remove unnecessary self.prev() from last()
2025-06-10 14:16:26 +03:00
Jussi Saurio
8941c4a537
fmt
2025-06-10 14:16:26 +03:00
Jussi Saurio
6e5f05a257
Remove unnecessary cell_idx move from tablebtree_move_to()
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
0f79b0dd50
fix prev?
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
f83d837131
fix next to not advance if not necessary
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
f261d5b6af
compare on next/prev after seek
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
681df9b1eb
fix get record
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
b46852a366
move setting target key in delete if balance is needed
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
c52d9a52d9
fix count
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
96324834a5
invalidate records on movement
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
77b6896eae
implement lazy record and rowid in cursor
...
This also comments save_context for now
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
b0c64cb4d2
parse record lazily
2025-06-10 14:16:26 +03:00
Pere Diaz Bou
105de7e1d8
seek, next and prev return bool
2025-06-10 14:16:26 +03:00
pedrocarlo
a9ed8dd288
namespace exec_min and exec_max to Value for reuse in simulator
2025-06-09 11:59:44 -03:00