Pekka Enberg
f21230ed76
cli: Remove unused "--experimental-logical-log" option
2025-10-03 07:39:07 +03:00
Pekka Enberg
16540724aa
Beta
2025-10-01 07:18:25 +03:00
Avinash Sajjanshetty
c8111f9555
Put encryption behind an opt in (runtime) flag
2025-09-30 18:29:18 +05:30
PThorpe92
714691748e
Display nothing for .schema command when table not found
2025-09-25 19:34:11 -04:00
Pekka Enberg
ad9c12b094
Merge 'Make Connection Send' from Pekka Enberg
...
Reviewed-by: Pere Diaz Bou <pere-altea@homail.com >
Closes #3292
2025-09-25 21:04:49 +03:00
Pekka Enberg
cc70ec892b
Merge 'Fix .schema command for empty databases' from Diego Reis
...
Fixes #3274
Closes #3342
2025-09-25 17:25:46 +03:00
Diego Reis
7a56c93b81
Makes clippy happy
2025-09-25 10:42:14 -03:00
Diego Reis
c945dee62b
fix(3274): Command .schema should work for sqlite_schema
2025-09-25 10:38:45 -03:00
Pekka Enberg
fb39661809
core: Wrap Connection::metrics with RwLock
2025-09-25 14:07:39 +03:00
Glauber Costa
fbc3d0dbc3
Add built-in manual pages for Turso
...
In the hopes of doing a good job at teaching people what Turso can do,
I am adding built-in manual pages. When the CLI starts, it picks a
feature at random, and tells the user that the feature exists:
```
Turso v0.2.0-pre.8
Enter ".help" for usage hints.
Did you know that Turso supports Change Data Capture? Type .manual cdc to learn more.
This software is ALPHA, only use for development, testing, and experimentation.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database
```
There is a lot we can do to make this feature world class:
- we can automatically compile examples during compile time like
rust-doc, to make sure examples used in the manuals always work
- we can implement scrolling and navigation
- we can document a lot more features
But for now, this is a start!
2025-09-24 11:29:24 -03:00
PThorpe92
0c54c2b255
Add turos_cli option to CLI DatabaseOpts
2025-09-22 11:28:19 -04:00
Pere Diaz Bou
ff3c79d5d7
remove mvvmode and set logical log as default
2025-09-18 18:22:25 +02:00
Pere Diaz Bou
0eb2aa123d
cli/app: add mvcc mode
2025-09-18 18:21:04 +02:00
Pere Diaz Bou
de8a975a0b
core/mvcc: introduce MvccMode Logical Log
2025-09-18 18:21:04 +02:00
rajajisai
e605aff31b
Merge branch 'main' into enc-page-1
2025-09-16 10:06:00 -04:00
rajajisai
89caa868f9
Encryption support for database header page
2025-09-16 10:04:30 -04:00
Glauber Costa
3e9a5d93b5
hide internal tables from .schema
2025-09-15 22:30:48 -05:00
TcMits
9dac467b40
support EXPLAIN QUERY PLAN
2025-09-12 19:58:45 +07:00
TcMits
830e10da8f
resolve merge conflict
2025-09-11 18:13:29 +07:00
TcMits
b574b4bcea
finish EXPLAIN
2025-09-11 18:04:59 +07:00
TcMits
5caf9a2640
make it more safe + clippy
2025-09-11 00:14:38 +07:00
TcMits
eeef8b85fa
always use consume instead of run_query, handle_dot_command
2025-09-10 16:54:51 +07:00
TcMits
65f5fbd1f6
no errors in consume
2025-09-10 16:31:12 +07:00
TcMits
ddf0df0aea
merge main
2025-09-10 15:59:56 +07:00
TcMits
dbcd01bf8b
make consume safer
2025-09-10 15:56:20 +07:00
Jussi Saurio
b6d99cd188
Merge 'clean print_query_result' from Lâm Hoàng Phúc
...
different between output modes is how we handle `Ok(StepResult::Row)` so
let introduce `row_step_result_query` macro to reduce duplicated code.
Closes #2979
2025-09-10 11:08:40 +03:00
TcMits
e8b853ed25
pretty mode's table need a line break
2025-09-10 12:03:59 +07:00
TcMits
28f23973a4
fix logic
2025-09-09 18:38:33 +07:00
TcMits
463fd75f0b
no need QueryStatistics
2025-09-09 18:35:27 +07:00
TcMits
8a72b24c0e
add writeln_fmt
2025-09-09 17:57:58 +07:00
TcMits
036235a518
clean 'print_query_result'
2025-09-09 17:41:08 +07:00
TcMits
048e72abf5
consume remaining
2025-09-09 16:27:31 +07:00
TcMits
8a6667a829
refactor cli: will write to
2025-09-09 16:23:08 +07:00
Pekka Enberg
80a4358272
cli: Fix dump compatibility in "PRAGMA foreign_keys"
...
SQLite emits a semicolon after "PRAGMA foreign_keys=OFF" so let's do th
same.
2025-09-08 12:55:29 +03:00
TcMits
f518291522
infinite loop when query starts with '--'
2025-09-05 16:36:14 +07:00
Pekka Enberg
12cf4d2e72
core: Make strict schema support experimental
...
It's not tested properly so let's mark it as experimental for now.
Fixes #2775
2025-09-02 16:40:02 +03:00
Arkoniak
2c0e3cf593
feat: consistent interrupt event processing ( #2801 )
2025-08-30 06:57:14 +03:00
Arkoniak
cb602d960d
feat: records output ( #2801 )
2025-08-30 06:57:14 +03:00
PThorpe92
959bc6ba74
Remove unused argument from handle_row fn
2025-08-29 10:18:49 -04:00
PThorpe92
5b73fad5d4
Remove some code duplication in the CLI
2025-08-29 10:15:07 -04:00
Glauber Costa
36fc8e8fdb
add metrics and implement the .stats command
...
This adds basic statement and connection metrics like SQLite (and
libSQL) have.
This is particularly useful to show that materialized views are working:
turso> create table t(a);
turso> insert into t(a) values (1) , (2), (3), (4), (5), (6), (7), (8), (9), (10);
turso> create materialized view v as select count(*) from t;
turso> .stats on
Stats display enabled.
turso> select count(*) from t;
┌───────────┐
│ count (*) │
├───────────┤
│ 10 │
└───────────┘
Statement Metrics:
Row Operations:
Rows read: 10
Rows written: 0
[ ... other metrics ... ]
turso> select * from v;
┌───────────┐
│ count (*) │
├───────────┤
│ 10 │
└───────────┘
Statement Metrics:
Row Operations:
Rows read: 1
Rows written: 0
[ ... other metrics ... ]
2025-08-18 09:11:06 -05:00
Nikita Sivukhin
6280d33b02
init tracing in CLI early
...
- now we miss logs from DB initialization phase
2025-08-15 13:11:38 +04:00
PThorpe92
9ccf79111a
Support non-utf8 blobs in .clone command
2025-08-14 21:31:14 -04:00
PThorpe92
2b289157d0
Properly quote sequence value
2025-08-14 21:31:14 -04:00
PThorpe92
7abf071128
Conditionally emit pragma foreign_keys=off when not .cloning
2025-08-14 21:31:14 -04:00
PThorpe92
4a612c1586
Properly implement .clone method safely
2025-08-14 21:31:13 -04:00
Jussi Saurio
69d8a73028
Merge 'use virtual root page for sqlite_schema' from Mikaël Francoeur
...
This PR fixes a problem where `sqlite_schema` could be read before page
1 was allocated.
The fix is similar to that in SQLite. In SQLite, if `btreeCursor()` sees
that the root page is 1 and that the b-tree is empty, it sets the page
to 0 ([here](https://github.com/sqlite/sqlite/blob/master/src/btree.c#L4
691-L4696)). SQLite's `moveToRoot()` then uses this special value to
return `CURSOR_INVALID` with no rows ([here](https://github.com/sqlite/s
qlite/blob/master/src/btree.c#L5538-L5540)).
Fixes https://github.com/tursodatabase/turso/issues/2449
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com >
Closes #2551
2025-08-14 11:08:11 +03:00
Mikaël Francoeur
07ef47924c
use virtual root page for sqlite_schema
2025-08-13 16:31:21 -04:00
PThorpe92
614a0a45a6
Relax and fix memory ordering
2025-08-13 10:09:37 -04:00
Pekka Enberg
b82d850f7a
Merge 'Reset interrupt count each time a new line is entered in CLI' from
...
Resolves issue #1833 .
**Before:**
<img width="581" height="92" alt="Screenshot 2025-08-11 at 9 07 21 PM"
src="https://github.com/user-
attachments/assets/eff4c919-ad54-4379-bbee-28eb3e4a375f" />
**After:**
<img width="563" height="118" alt="Screenshot 2025-08-11 at 9 07 27 PM"
src="https://github.com/user-
attachments/assets/f99f84a0-f5d3-4d70-9e08-1c3871fddda3" />
Closes #2554
2025-08-12 11:50:03 +03:00