Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
alpaylan committed Jan 15, 2025
2 parents fb937ef + d0b5f50 commit ecb0f78
Show file tree
Hide file tree
Showing 104 changed files with 5,849 additions and 1,969 deletions.
4 changes: 4 additions & 0 deletions .github.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,9 @@
"pereman2": {
"name": "Pere Diaz Bou",
"email": "[email protected]"
},
"jussisaurio": {
"name": "Jussi Saurio",
"email": "[email protected]"
}
}
15 changes: 15 additions & 0 deletions .github/shared/install_sqlite/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: "Install SQLite"
description: "Downloads SQLite directly from https://sqlite.org"

runs:
using: "composite"
steps:
- name: Install SQLite
env:
SQLITE_VERSION: "3470200"
YEAR: 2024
run: |
curl -o /tmp/sqlite.zip https://www.sqlite.org/$YEAR/sqlite-tools-linux-x64-$SQLITE_VERSION.zip > /dev/null
unzip -j /tmp/sqlite.zip sqlite3 -d /usr/local/bin/
sqlite3 --version
shell: bash
2 changes: 1 addition & 1 deletion .github/workflows/java.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '11'
java-version: '8'

- name: Run Java tests
run: make test
38 changes: 18 additions & 20 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
env:
RUST_LOG: ${{ runner.debug && 'limbo_core::storage=trace' || '' }}
run: cargo test --verbose
timeout-minutes: 5
timeout-minutes: 10


clippy:
Expand All @@ -59,31 +59,29 @@ jobs:
bench:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Bench
run: cargo bench
- uses: actions/checkout@v3
- name: Bench
run: cargo bench

test-limbo:
runs-on: ubuntu-latest
steps:
- name: Install sqlite
run: sudo apt update && sudo apt install -y sqlite3 libsqlite3-dev
- name: Install cargo-c
env:
LINK: https://github.com/lu-zero/cargo-c/releases/download/v0.10.7
CARGO_C_FILE: cargo-c-x86_64-unknown-linux-musl.tar.gz
run: |
curl -L $LINK/$CARGO_C_FILE | tar xz -C ~/.cargo/bin
- name: Install cargo-c
env:
LINK: https://github.com/lu-zero/cargo-c/releases/download/v0.10.7
CARGO_C_FILE: cargo-c-x86_64-unknown-linux-musl.tar.gz
run: |
curl -L $LINK/$CARGO_C_FILE | tar xz -C ~/.cargo/bin
- uses: actions/checkout@v3
- name: Test
run: make test
- uses: actions/checkout@v3
- uses: "./.github/shared/install_sqlite"
- name: Test
run: make test

test-sqlite:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install sqlite
run: sudo apt update && sudo apt install -y sqlite3 libsqlite3-dev
- name: Test
run: SQLITE_EXEC="sqlite3" make test-compat
- uses: actions/checkout@v3
- uses: "./.github/shared/install_sqlite"
- name: Test
run: SQLITE_EXEC="sqlite3" make test-compat
56 changes: 56 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,61 @@
# Changelog

## 0.0.12 - 2025-01-14

### Added

**Core:**

* Improve JSON function support (Kacper Madej, Peter Sooley)

* Support nested parenthesized conditional expressions (Preston Thorpe)

* Add support for changes() and total_changes() functions (Lemon-Peppermint)

* Auto-create index in CREATE TABLE when necessary (Jussi Saurio)

* Add partial support for datetime() function (Preston Thorpe)

* SQL parser performance improvements (Jussi Saurio)

**Shell:**

* Show pretty parse errors in the shell (Samyak Sarnayak)

* Add CSV import support to shell (Vrishabh)

* Selectable IO backend with --io={syscall,io-uring} argument (Jorge López Tello)

**Bindings:**

* Initial version of Java bindings (Kim Seon Woo)

* Initial version of Rust bindings (Pekka Enberg)

* Add OPFS support to Wasm bindings (Elijah Morgan)

* Support uncorrelated FROM clause subqueries (Jussi Saurio)

* In-memory support to `sqlite3_open()` (Pekka Enberg)

### Fixed

* Make iterate() lazy in JavaScript bindings (Diego Reis)

* Fix integer overflow output to be same as sqlite3 (Vrishabh)

* Fix 8-bit serial type to encoding (Preston Thorpe)

* Query plan optimizer bug fixes (Jussi Saurio)

* B-Tree balancing fixes (Pere Diaz Bou)

* Fix index seek wrong on `SeekOp::LT`\`SeekOp::GT` (Kould)

* Fix arithmetic operations for text values' from Vrishabh

* Fix quote escape in SQL literals (Vrishabh)

## 0.0.11 - 2024-12-31

### Added
Expand Down
8 changes: 4 additions & 4 deletions COMPAT.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ Feature support of [sqlite expr syntax](https://www.sqlite.org/lang_expr.html).
| like(X,Y,Z) | Yes | |
| likelihood(X,Y) | No | |
| likely(X) | No | |
| load_extension(X) | No | |
| load_extension(X) | Yes | sqlite3 extensions not yet supported |
| load_extension(X,Y) | No | |
| lower(X) | Yes | |
| ltrim(X) | Yes | |
Expand Down Expand Up @@ -263,11 +263,11 @@ Feature support of [sqlite expr syntax](https://www.sqlite.org/lang_expr.html).
| jsonb_array(value1,value2,...) | | |
| json_array_length(json) | Yes | |
| json_array_length(json,path) | Yes | |
| json_error_position(json) | | |
| json_error_position(json) | Yes | |
| json_extract(json,path,...) | Partial | Does not fully support unicode literal syntax and does not allow numbers > 2^127 - 1 (which SQLite truncates to i32), does not support BLOBs |
| jsonb_extract(json,path,...) | | |
| json -> path | | |
| json ->> path | | |
| json -> path | Yes | |
| json ->> path | Yes | |
| json_insert(json,path,value,...) | | |
| jsonb_insert(json,path,value,...) | | |
| json_object(label1,value1,...) | | |
Expand Down
34 changes: 34 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,3 +121,37 @@ The `simulator` directory contains a deterministic simulator for testing.
What this means is that the behavior of a test run is deterministic based on the seed value.
If the simulator catches a bug, you can always reproduce the exact same sequence of events by passing the same seed.
The simulator also performs fault injection to discover interesting bugs.

## Python Bindings

Limbo provides Python bindings built on top of the [PyO3](https://pyo3.rs) project.
To compile the Python bindings locally, you first need to create and activate a Python virtual environment (for example, with Python `3.12`):

```bash
python3.12 -m venv venv
source venv/bin/activate
```

Then, install [Maturin](https://pypi.org/project/maturin/):

```bash
pip install maturin
```

Once Maturin is installed, you can build the crate and install it as a Python module directly into the current virtual environment by running:

```bash
cd bindings/python && maturin develop
```

## Adding Third Party Dependencies

When you want to add third party dependencies, please follow these steps:

1. Add Licenses: Place the appropriate licenses for the third-party dependencies under the licenses directory. Ensure
that each license is in a separate file and named appropriately.
2. Update NOTICE.md: Specify the licenses for the third-party dependencies in the NOTICE.md file. Include the name of
the dependency, the license file path, and the homepage of the dependency.

By following these steps, you ensure that all third-party dependencies are properly documented and their licenses are
included in the project.
Loading

0 comments on commit ecb0f78

Please sign in to comment.