mirror of
https://github.com/aljazceru/turso.git
synced 2026-01-05 01:04:22 +01:00
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 ╰──── ```
79 lines
2.0 KiB
TOML
79 lines
2.0 KiB
TOML
# Copyright 2023 the Limbo authors. All rights reserved. MIT license.
|
|
|
|
[package]
|
|
name = "limbo_core"
|
|
version.workspace = true
|
|
authors.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
description = "The Limbo database library"
|
|
|
|
[lib]
|
|
name = "limbo_core"
|
|
path = "lib.rs"
|
|
|
|
[features]
|
|
default = ["fs", "json", "uuid"]
|
|
fs = []
|
|
json = [
|
|
"dep:jsonb",
|
|
"dep:pest",
|
|
"dep:pest_derive",
|
|
]
|
|
uuid = ["dep:uuid"]
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
io-uring = "0.6.1"
|
|
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
polling = "3.7.2"
|
|
rustix = "0.38.34"
|
|
|
|
[target.'cfg(not(target_family = "wasm"))'.dependencies]
|
|
mimalloc = { version = "*", default-features = false }
|
|
|
|
[dependencies]
|
|
cfg_block = "0.1.1"
|
|
fallible-iterator = "0.3.0"
|
|
hex = "0.4.3"
|
|
libc = "0.2.155"
|
|
log = "0.4.20"
|
|
nix = { version = "0.29.0", features = ["fs"] }
|
|
sieve-cache = "0.1.4"
|
|
sqlite3-parser = { path = "../vendored/sqlite3-parser" }
|
|
thiserror = "1.0.61"
|
|
getrandom = { version = "0.2.15", features = ["js"] }
|
|
regex = "1.11.1"
|
|
regex-syntax = { version = "0.8.5", default-features = false, features = ["unicode"] }
|
|
chrono = "0.4.38"
|
|
julian_day_converter = "0.3.2"
|
|
jsonb = { version = "0.4.4", optional = true }
|
|
indexmap = { version="2.2.6", features = ["serde"] }
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
pest = { version = "2.0", optional = true }
|
|
pest_derive = { version = "2.0", optional = true }
|
|
rand = "0.8.5"
|
|
bumpalo = { version = "3.16.0", features = ["collections", "boxed"] }
|
|
limbo_macros = { path = "../macros" }
|
|
uuid = { version = "1.11.0", features = ["v4", "v7"], optional = true }
|
|
miette = "7.4.0"
|
|
|
|
[target.'cfg(not(target_family = "windows"))'.dev-dependencies]
|
|
pprof = { version = "0.14.0", features = ["criterion", "flamegraph"] }
|
|
|
|
[dev-dependencies]
|
|
criterion = { version = "0.5", features = [
|
|
"html_reports",
|
|
"async",
|
|
"async_futures",
|
|
] }
|
|
mockall = "0.13.0"
|
|
rstest = "0.18.2"
|
|
rusqlite = "0.29.0"
|
|
tempfile = "3.8.0"
|
|
|
|
[[bench]]
|
|
name = "benchmark"
|
|
harness = false
|