Pekka Enberg
a2a31a520f
Remove CreateTable from COMPAT.md
...
There is no such opcode.
2025-07-27 09:12:31 +03:00
Pekka Enberg
6bf6cc28e4
Merge 'Implement the Returning statement for inserts and updates' from Glauber Costa
...
They are very similar. DELETE is very different, so that one we'll do it
later.
Closes #2276
2025-07-27 09:11:16 +03:00
PThorpe92
60c37eb036
Merge 'implement the pragma encoding' from Glauber Costa
...
Do not allow setting it. That ship has sailed around 2005.
Reviewed-by: Preston Thorpe (@PThorpe92)
Closes #2282
2025-07-26 21:31:27 -04:00
PThorpe92
22df76d37d
Merge 'compat police' from Glauber Costa
...
All those opcodes seem implemented.
Reviewed-by: Preston Thorpe (@PThorpe92)
Closes #2284
2025-07-26 21:28:28 -04:00
Glauber Costa
421ab44cf2
compat police
...
All those opcodes seem implemented.
2025-07-26 20:06:21 -05:00
Glauber Costa
f0b1abd567
remove upsert statement from COMPAT.md
...
There's no such statement in SQLite.
2025-07-26 19:39:32 -05:00
Glauber Costa
b8ee38868d
implement the pragma encoding
...
Do not allow setting it. That ship has sailed around 2005.
2025-07-26 19:37:39 -05:00
Glauber Costa
5d8d08d1b6
Implement the Returning statement for inserts and updates
...
They are very similar. DELETE is very different, so that one we'll
do it later.
2025-07-26 09:01:09 -05:00
Glauber Costa
02e57c81f7
mark detach as supported
...
Honestly, I didn't even notice we had a compat entry for it because it
seems so trivial. But it was done as part of ATTACH.
2025-07-25 15:35:13 -05:00
Glauber Costa
988b16f962
Support ATTACH (read only)
...
Support for attaching databases. The main difference from SQLite is that
we support an arbitrary number of attached databases, and we are not
bound to just 100ish.
We for now only support read-only databases. We open them as read-only,
but also, to keep things simple, we don't patch any of the insert
machinery to resolve foreign tables. So if an insert is tried on an
attached database, it will just fail with a "no such table" error - this
is perfect for now.
The code in core/translate/attach.rs is written by Claude, who also
played a key part in the boilerplate for stuff like the .databases
command and extending the pragma database_list, and also aided me in
the test cases.
2025-07-24 19:19:48 -05:00
Pekka Enberg
8f83b150b7
Merge 'Implement pragma database_list' from Glauber Costa
...
And also the CLI option .databases, which is just manipulating that.
This is one step in the road to attach.
Closes #2195
2025-07-21 17:13:26 +03:00
Glauber Costa
0545049d59
Implement pragma database_list
...
And also the CLI option .databases, which is just manipulating that.
This is one step in the road to attach.
2025-07-21 08:49:35 -05:00
meteorgan
21134446cc
compat: change page_size pragma and rowdata opcode to yes
2025-07-20 23:07:04 +08:00
Pekka Enberg
068a7bbe43
Merge 'implement pragma application_id' from Glauber Costa
...
Just for completeness, because it is easy.
Reviewed-by: Preston Thorpe (@PThorpe92)
Closes #2180
2025-07-20 09:22:20 +03:00
Glauber Costa
6506b3147d
implement pragma application_id
...
Just for completeness, because it is easy.
2025-07-19 20:44:06 -05:00
Glauber Costa
024d79fc0d
implement write side of pragma schema_version
...
It is insane that SQLite even allows this.
They actually don't if "defensive mode" is enabled:
"It is always safe to read the schema_version, but changing the
schema_version can cause problems. For this reason, attempts to change
the value of schema_version are a silent no-op when defensive mode is
enabled for a database connection.
Warning: Misuse of this pragma can result in database corruption."
We also update the compat table, which was not updated to reflect
the read version of this pragma being implemented.
2025-07-19 20:39:30 -05:00
Pere Diaz Bou
d559bf3d9f
compat: add integrity_check
2025-07-16 17:19:51 +02:00
KaguraMilet
bd891d1cc9
modify based on review comments
2025-07-10 19:15:39 +08:00
KaguraMilet
ac95758f76
feat(vector): integrate euclidean distance into limbo
2025-07-07 21:11:51 +08:00
Pere Diaz Bou
cde7202981
Revert "Merge 'core: Disable ROLLBACK statement' from Pekka Enberg"
...
This reverts commit 8a13e4b02f , reversing
changes made to cc935f97cc .
2025-07-03 12:36:48 +02:00
Pekka Enberg
2542cb2d03
core: Disable ROLLBACK statement
...
There's bad interaction with schema changes and `ROLLBACK`:
https://github.com/tursodatabase/turso/issues/1890
Disable the statement for now to avoid people hitting the issue.
2025-06-30 17:30:01 +03:00
Glauber Costa
3796f7d976
rename Limbo to Turso in the README and other files
...
I am not changing any package names - I'd rather Pekka do that so he
can verifies it works, or things that look like references to external
entities mentioning limbo.
All the rest is changed.
2025-06-27 15:44:40 -05:00
Pekka Enberg
e109562449
Update COMPAT.md
2025-06-25 20:03:16 +03:00
Pekka Enberg
15fed363c7
Update COMPAT.md
2025-06-25 14:06:46 +03:00
Diego Reis
bfe4f5acef
pragma/user_version: Add test and update docs
2025-05-22 20:42:08 -03:00
pedrocarlo
6d7a73fd60
More tests
2025-05-19 15:22:15 -03:00
pedrocarlo
1928dcfa10
Correct docs regarding between
2025-04-21 23:05:01 -03:00
Diego Reis
825aeb3f83
core/vdbe: Add BeginSubrtn bytecode
...
Basically it does the very same thing of Null, but has a different name to differentiate its usage.
2025-04-15 09:52:04 -03:00
Jussi Saurio
5a38b38e71
Merge 'Feature: VDestroy for Dropping Virtual Tables' from Pedro Muniz
...
Reviewed-by: Preston Thorpe (@PThorpe92)
Closes #1274
2025-04-15 14:34:30 +03:00
Jussi Saurio
d20782350d
Merge 'support modifiers for julianday()' from meteorgan
...
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com >
Closes #1321
2025-04-14 11:52:43 +03:00
Jussi Saurio
23f8fffe12
Add Insn::OpenAutoindex, which is just an alias for OpenEphemeral
2025-04-14 11:23:37 +03:00
Jussi Saurio
9dadc58194
Add support for Insn::Once
2025-04-14 11:23:37 +03:00
Jussi Saurio
d286a56e15
refactor: fold Async/Await insns into a single instruction
2025-04-14 09:40:20 +03:00
pedrocarlo
c0747e8064
update COMPAT.md
2025-04-13 17:06:12 -03:00
meteorgan
8200b328d8
support modifiers for julianday()
2025-04-12 19:29:20 +08:00
Pekka Enberg
d67e1b604b
Merge 'Added 'likelihood' scalar function' from Sachin Kumar Singh
...
The `likelihood(X,Y)` function returns argument X unchanged. The value Y
in likelihood(X,Y) must be a floating point constant between 0.0 and
1.0, inclusive.
```
sqlite> explain SELECT likelihood(42, 0.0);
addr opcode p1 p2 p3 p4 p5 comment
---- ------------- ---- ---- ---- ------------- -- -------------
0 Init 0 6 0 0 Start at 6
1 Once 0 3 0 0
2 Integer 42 2 0 0 r[2]=42
3 Copy 2 1 0 0 r[1]=r[2]
4 ResultRow 1 1 0 0 output=r[1]
5 Halt 0 0 0 0
6 Goto 0 1 0 0
```
```
limbo> explain SELECT likelihood(42, 0.0);
addr opcode p1 p2 p3 p4 p5 comment
---- ----------------- ---- ---- ---- ------------- -- -------
0 Init 0 4 0 0 Start at 4
1 Copy 2 1 0 0 r[1]=r[2]
2 ResultRow 1 1 0 0 output=r[1]
3 Halt 0 0 0 0
4 Integer 42 2 0 0 r[2]=42
5 Goto 0 1 0 0
```
Closes #1303
2025-04-11 09:34:36 +03:00
Sachin Singh
5ffdd42f12
Additional tests
2025-04-11 06:02:07 +05:30
Sachin Singh
05b4b7b9f1
edit compat.md
2025-04-11 04:41:59 +05:30
Pekka Enberg
5de2d91d04
Update COMPAT.md
2025-04-09 17:07:24 +03:00
Pekka Enberg
dbb346ba28
Update COMPAT.md
2025-04-09 17:03:53 +03:00
Pekka Enberg
3b98675aa0
Update COMPAT.md
2025-04-09 17:02:25 +03:00
Duncan Lutz
aa7c64cb19
feat: added likely scalar function
2025-04-06 23:14:30 -06:00
PThorpe92
7567b30d00
Add SeekEnd to compat.md
2025-04-05 11:06:18 -04:00
PThorpe92
293974e692
Update COMPAT.md
2025-04-05 11:06:11 -04:00
Ihor Andrianov
35e1098314
update compat for json functions
2025-03-30 18:58:38 +03:00
Pekka Enberg
31bbc5144a
Merge 'Initial pass at UPDATE support' from Preston Thorpe
...
This PR is to support `Update` queries. Follows sqlite behavior as much
as possible.
### limbo
```console
limbo> create table t (a,b,c);
limbo> explain update t set a = 1 where b = 2;
addr opcode p1 p2 p3 p4 p5 comment
---- ----------------- ---- ---- ---- ------------- -- -------
0 Init 0 18 0 0 Start at 18
1 OpenWriteAsync 0 2 0 0
2 OpenWriteAwait 0 0 0 0
3 RewindAsync 0 0 0 0
4 RewindAwait 0 17 0 0 Rewind table t
5 Column 0 1 4 0 r[4]=t.b
6 Ne 4 5 15 0 if r[4]!=r[5] goto 15
7 RowId 0 6 0 0 r[6]=t.rowid
8 IsNull 6 17 0 0 if (r[6]==NULL) goto 17
9 Integer 1 1 0 0 r[1]=1
10 Column 0 1 2 0 r[2]=t.b
11 Column 0 2 3 0 r[3]=t.c
12 MakeRecord 1 3 7 0 r[7]=mkrec(r[1..3])
13 InsertAsync 0 7 6 0
14 InsertAwait 0 0 0 0
15 NextAsync 0 0 0 0
16 NextAwait 0 5 0 0
17 Halt 0 0 0 0
18 Transaction 0 1 0 0 write=true
19 Integer 2 5 0 0 r[5]=2
20 Goto 0 1 0 0
```
### sqlite
```console
sqlite> explain update t set a = 1 where b = 2;
addr opcode p1 p2 p3 p4 p5 comment
---- ------------- ---- ---- ---- ------------- -- -------------
0 Init 0 15 0 0 Start at 15
1 Null 0 1 2 0 r[1..2]=NULL
2 Noop 1 0 1 0
3 OpenWrite 0 2 0 2 0 root=2 iDb=0; t
4 Rewind 0 14 0 0
5 Column 0 1 5 0 r[5]= cursor 0 column 1
6 Ne 6 13 5 BINARY-8 81 if r[5]!=r[6] goto 13
7 Rowid 0 2 0 0 r[2]= rowid of 0
8 IsNull 2 14 0 0 if r[2]==NULL goto 14
9 Integer 1 3 0 0 r[3]=1
10 Column 0 1 4 0 r[4]= cursor 0 column 1
11 MakeRecord 3 2 1 0 r[1]=mkrec(r[3..4])
12 Insert 0 1 2 t 7 intkey=r[2] data=r[1]
13 Next 0 5 0 1
14 Halt 0 0 0 0
15 Transaction 0 1 1 0 1 usesStmtJournal=0
16 Integer 2 6 0 0 r[6]=2
17 Goto 0 1 0 0
```
Closes #1130
2025-03-24 09:19:22 +02:00
Pekka Enberg
e8c0a6e728
Merge 'Various JSON improvements' from Ihor Andrianov
...
Added jsonb_object, jsonb_array, json_insert, jsonb_insert.
MongoDB is sweating now.
Closes #1160
2025-03-24 09:17:40 +02:00
PThorpe92
a1d5797f90
Update COMPAT.md
2025-03-23 17:08:15 -04:00
Ihor Andrianov
7710081796
update compat for json functions
2025-03-23 20:59:19 +02:00
Pekka Enberg
c77210aa63
Update COMPAT.md
2025-03-21 13:08:48 +02:00