Commit Graph

60 Commits

Author SHA1 Message Date
Pekka Enberg
93903555aa Rename limbo_extension crate to limbo_ext 2025-01-16 14:40:52 +02:00
Pekka Enberg
f83b34287e Move limbo_extension crate to extensions/core 2025-01-16 14:39:12 +02:00
PThorpe92
3412a3d4c2 Rough design for extension api/draft extension 2025-01-14 07:20:48 -05:00
PThorpe92
0a10d893d9 Sketch out runtime extension loading 2025-01-14 07:18:07 -05:00
Jorge López
a16282ea62 core: remove nix as a dependency 2025-01-14 11:06:13 +01:00
Pekka Enberg
d223c72d03 Revert "core: Previous commits didn't actually remove nix as dependency, so do that here"
This reverts commit cca3846f95, we need to
bring it back unfortunately.
2025-01-14 10:25:11 +02:00
Jorge López
cca3846f95 core: Previous commits didn't actually remove nix as dependency, so do that here 2025-01-13 21:15:36 +01:00
Jorge López
d4de451d45 core: enable rustix/io_uring with io_uring feature 2025-01-13 20:21:15 +01:00
Jorge López
e5bd39a8b2 Tiny formatting change, because RustRover keeps redoing it. Having to revert on every commit is not fun. 2025-01-11 15:03:26 +01:00
Jorge López
737533e35f Prepare Cargo.toml for upcoming rewrite from macos->unix and linux->io_uring. Make io_uring an optional dependency that is only enabled with a new default feature io-uring. 2025-01-07 15:17:24 +01:00
Samyak S Sarnayak
c09a0bcbf3 Nicer parse errors using miette
I noticed that the parse errors were a bit hard to read - only the nearest token and the line/col offsets were printed.

I made a first attempt at improving the errors using [miette](https://github.com/zkat/miette).
- Added derive for `miette::Diagnostic` to both the parser's error type and LimboError.
- Added miette dependency to both sqlite3_parser and core. The `fancy` feature is only enabled for CLI.

Some future improvements that can be made further:
- Add spans to AST nodes so that errors can better point to the correct token. See upstream issue: https://github.com/gwenn/lemon-rs/issues/33
- Construct more errors with offset information. I noticed that most parser errors are constructed with `None` as the offset.

Comparisons.
Before:
```
❯ cargo run --package limbo --bin limbo database.db --output-mode pretty
...
limbo> selet * from a;
[2025-01-05T11:22:55Z ERROR sqlite3Parser] near "Token([115, 101, 108, 101, 116])": syntax error
Parse error: near "selet": syntax error at (1, 6)
```

After:
```
❯ cargo run --package limbo --bin limbo database.db --output-mode pretty
...
limbo> selet * from a;
[2025-01-05T12:25:52Z ERROR sqlite3Parser] near "Token([115, 101, 108, 101, 116])": syntax error

  × near "selet": syntax error at (1, 6)
   ╭────
 1 │ selet * from a
   ·     ▲
   ·     ╰── syntax error
   ╰────

```
2025-01-05 17:56:59 +05:30
psvri
4368e8767b Fix like function giving wrong results 2024-12-26 22:38:54 +05:30
Pekka Enberg
37e1f35df8 Fix Cargo.toml in macros crate 2024-12-25 11:54:16 +02:00
PThorpe92
c06c4115f1 Adapt OwnedValues in uuid ext to new LimboText 2024-12-21 09:17:53 -05:00
PThorpe92
2fcae80902 Create ext directory for outside funcs, add uuid to ext dir 2024-12-21 09:16:04 -05:00
PThorpe92
fcab0ae299 Add uuid support for v4 and v7 2024-12-21 09:13:46 -05:00
vignesh-j-shetty
a43a1d204c renamed macro crate 2024-12-21 13:19:04 +05:30
vignesh-j-shetty
1e72fee343 Implemented proc_macro_derive extract description from rust docs and generate get_description function 2024-12-21 12:23:04 +05:30
Pere Diaz Bou
1a663a6ed7 cargo stuff rm 2024-12-13 13:09:13 +01:00
Pekka Enberg
ab07c77036 Upgrade pprof to 0.14
Github's dependabot complains that the current version has an unsoudness
issue so let's bump to a newer version:

https://github.com/tursodatabase/limbo/security/dependabot/10
2024-12-11 11:21:09 +02:00
jussisaurio
3cc9d9d79f vendor sqlite3-parser (lemon-rs) 2024-11-16 20:08:59 +02:00
Pekka Enberg
9473668196 core: Bump jsonb dependency
The `fast-float` library has soundness issues, which why `jsonb`
switched to `fast-float2`:

https://github.com/databendlabs/jsonb/issues/68
2024-11-16 18:58:13 +02:00
Pekka Enberg
85b70e381d core: Make mockall a dev dependency 2024-11-16 13:18:35 +02:00
Pekka Enberg
cd5db55cf2 core: Make JSON support configurable
This adds a `json` feature flag, which allows users to disable JSON
support if needed.
2024-11-16 09:49:09 +02:00
baishen
5c00c576a5 Add support for hex scalar function 2024-09-22 08:50:08 -04:00
gandeevanr
23a7d389b1 added unit tests for NewRowid 2024-08-08 19:04:10 -07:00
JeanArhancet
4050a3ebe2 refactor: impl json5 direclty 2024-08-04 12:47:08 +02:00
JeanArhancet
552090cb29 feat: add json support 2024-08-04 10:54:27 +02:00
Pekka Enberg
351242561d Kill anyhow usage
Switch anyhow to explicit `LimboError` type using thiserror crate, which
lets us make error handling more structured.
2024-07-25 17:15:08 +03:00
jussisaurio
9eb68524e7 Upgrade sqlite3-parser #185 2024-07-24 14:05:39 +03:00
gandeevanr
871fae3286 Implement the Date() method 2024-07-23 09:19:08 -07:00
Bennett Clement
0a4e094ef6 Update COMPAT table and remove unused deps 2024-07-22 00:28:31 +08:00
JeanArhancet
a2d4d73ce5 refactor: use getrandom 2024-07-19 21:26:42 +02:00
JeanArhancet
6a5d6847c0 feat: add random function 2024-07-19 17:56:01 +02:00
gandeevanr
9ef212edd3 Added support to disallow multiple processes from opening the same database file in linux and darwin 2024-07-17 11:34:47 -07:00
Pekka Enberg
a0c92f6d80 Switch to workspace versioning 2024-07-17 08:39:36 +03:00
Pekka Enberg
b7599abd2c Merge pull request #166 from penberg/fix-io-uring
Fix io_uring support on older Linux kernels
2024-07-16 14:51:14 +03:00
Pekka Enberg
207ec5ce92 core: Enable direct I/O optimistically
...but keep going if the filesystem does not support it. Fixes Limbo on
older Linux kernels that have io_uring but don't support direct I/O on
all filesystems, such as tmpfs or encryptfs.
2024-07-16 14:48:38 +03:00
Bennett Clement
2f738e0c8b Implement like function 2024-07-16 15:23:52 +08:00
Bennett Clement
30e4a70d07 ignore wasm compilation target 2024-07-13 15:17:18 +08:00
Bennett Clement
26152e07e5 Use kqueue for Darwin IO 2024-07-13 09:44:03 +08:00
Ishan Jain
c171b63ec2 use O_DIRECT for file read operations 2024-07-09 11:41:20 +05:30
Pekka Enberg
b8165f52b1 Merge pull request #90 from crrow/topic/fix-error-handling-for-invalid-file
Replace unwrap() in PageIO.get() with proper error handling
2024-07-07 14:19:47 +03:00
Ryan Tan
9c2988e0ed fix: replace unwrap() with ? 2024-07-07 19:12:48 +08:00
Pekka Enberg
30ec86a81e Add sorter utility functions and opcodes
This adds basic in-memory sorting utility functions, similar to SQLite's
src/vdbesort.c. We need to improve this later with external sorting so
to support large data sets.

This also adds sorting functionality to the VDBE. Note that none of this
is wired to SQL translation yet so it's unused for now.
2024-07-07 13:56:55 +03:00
Pekka Enberg
ed9f3e6d1e Single-threaded architecture
Use Rc instead of Arc and replace the concurrent LRU with
single-threaded SIEVE.

Fixes #23
Fixes #29
2024-03-03 12:44:45 +02:00
Pekka Enberg
59822e2c6f core: Don't depend on pprof on Windows 2024-03-03 11:49:55 +02:00
Pekka Enberg
dad0b6d627 Disable mimalloc for wasm target 2023-10-24 19:01:22 +03:00
Pekka Enberg
9098744a37 Rename to Limbo 2023-09-30 15:40:35 +03:00
Pekka Enberg
1e1e096a48 Refactor I/O and storage layers 2023-09-16 09:34:17 +03:00