* Make PRAGMA synchronous configurable for a Namespace
SQLite allows setting synchronous values to any four levels. This
patch provides an option to set the level for a namespace which will
be used for every connection. It defaults to `NORMAL`.
allowed values: https://www.sqlite.org/pragma.html#pragma_synchronous
e.g. to enable:
curl -X POST http://sqld-admin-endpoint/v1/namespaces/<namespace>/config -H "Content-Type: application/json" -d '{"durability_mode": "strong"}' -v
* Make `durability_mode` field optional in proto
* Set `default` in the enum
Co-authored-by: ad hoc <postma.marin@protonmail.com>
---------
Co-authored-by: ad hoc <postma.marin@protonmail.com>
* initial parameters for creation of shared schema db
* store shared schema config persistently
* add StmtKind::DDL and block DDL schema changes on databases using shared schema
* Revert "add StmtKind::DDL and block DDL schema changes on databases using shared schema"
This reverts commit 5a5c0d62c91d72151a1c92309d8746116c518ad5.
* libsql: attach databases from other namespaces as readonly
With this proof-of-concept patch, other namespaces hosted
on the same sqld machine can now be attached in readonly mode,
so that users can read from other databases when connected
to a particular one.
* connection: add allow_attach to config
Default is false, which means connections are blocked from attaching
databases. If allowed, colocated databases can be attached in readonly
mode.
Example:
→ attach another as another; select * from another.sqlite_master;
TYPE NAME TBL NAME ROOTPAGE SQL
table t3 t3 2 CREATE TABLE t3(id)
* libsql,namespaces: add client-side ATTACH support
* attach: support ATTACH x AS y aliasing
We're going to need it, because the internal database names in sqld
are uuids, and we don't expect users to know or use them.
* attach: fix quoted db names
In libsql-server, raw db names are uuids that need to be quoted,
so that needs to be supported in the ATTACH layer.
As a bonus, "names" that are actually file system paths are refused
to prevent abuse.
* libsql-server: drop stray serde(default) from allow_attach
* libsql-replication: update proto files
* libsql-replication: regenerate protobuf
* tests: move attach to its own test
* libsql-replication: fix proto number after rebase