Skip to content

Commit 6f27442

Browse files
committed
merge minimization pr into main
1 parent fb937ef commit 6f27442

File tree

104 files changed

+5848
-1967
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

104 files changed

+5848
-1967
lines changed

.github.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,9 @@
66
"pereman2": {
77
"name": "Pere Diaz Bou",
88
"email": "[email protected]"
9+
},
10+
"jussisaurio": {
11+
"name": "Jussi Saurio",
12+
"email": "[email protected]"
913
}
1014
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name: "Install SQLite"
2+
description: "Downloads SQLite directly from https://sqlite.org"
3+
4+
runs:
5+
using: "composite"
6+
steps:
7+
- name: Install SQLite
8+
env:
9+
SQLITE_VERSION: "3470200"
10+
YEAR: 2024
11+
run: |
12+
curl -o /tmp/sqlite.zip https://www.sqlite.org/$YEAR/sqlite-tools-linux-x64-$SQLITE_VERSION.zip > /dev/null
13+
unzip -j /tmp/sqlite.zip sqlite3 -d /usr/local/bin/
14+
sqlite3 --version
15+
shell: bash

.github/workflows/java.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
uses: actions/setup-java@v3
3333
with:
3434
distribution: 'temurin'
35-
java-version: '11'
35+
java-version: '8'
3636

3737
- name: Run Java tests
3838
run: make test

.github/workflows/rust.yml

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
env:
3838
RUST_LOG: ${{ runner.debug && 'limbo_core::storage=trace' || '' }}
3939
run: cargo test --verbose
40-
timeout-minutes: 5
40+
timeout-minutes: 10
4141

4242

4343
clippy:
@@ -59,31 +59,29 @@ jobs:
5959
bench:
6060
runs-on: ubuntu-latest
6161
steps:
62-
- uses: actions/checkout@v3
63-
- name: Bench
64-
run: cargo bench
62+
- uses: actions/checkout@v3
63+
- name: Bench
64+
run: cargo bench
6565

6666
test-limbo:
6767
runs-on: ubuntu-latest
6868
steps:
69-
- name: Install sqlite
70-
run: sudo apt update && sudo apt install -y sqlite3 libsqlite3-dev
71-
- name: Install cargo-c
72-
env:
73-
LINK: https://github.com/lu-zero/cargo-c/releases/download/v0.10.7
74-
CARGO_C_FILE: cargo-c-x86_64-unknown-linux-musl.tar.gz
75-
run: |
76-
curl -L $LINK/$CARGO_C_FILE | tar xz -C ~/.cargo/bin
69+
- name: Install cargo-c
70+
env:
71+
LINK: https://github.com/lu-zero/cargo-c/releases/download/v0.10.7
72+
CARGO_C_FILE: cargo-c-x86_64-unknown-linux-musl.tar.gz
73+
run: |
74+
curl -L $LINK/$CARGO_C_FILE | tar xz -C ~/.cargo/bin
7775
78-
- uses: actions/checkout@v3
79-
- name: Test
80-
run: make test
76+
- uses: actions/checkout@v3
77+
- uses: "./.github/shared/install_sqlite"
78+
- name: Test
79+
run: make test
8180

8281
test-sqlite:
8382
runs-on: ubuntu-latest
8483
steps:
85-
- uses: actions/checkout@v3
86-
- name: Install sqlite
87-
run: sudo apt update && sudo apt install -y sqlite3 libsqlite3-dev
88-
- name: Test
89-
run: SQLITE_EXEC="sqlite3" make test-compat
84+
- uses: actions/checkout@v3
85+
- uses: "./.github/shared/install_sqlite"
86+
- name: Test
87+
run: SQLITE_EXEC="sqlite3" make test-compat

CHANGELOG.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,61 @@
11
# Changelog
22

3+
## 0.0.12 - 2025-01-14
4+
5+
### Added
6+
7+
**Core:**
8+
9+
* Improve JSON function support (Kacper Madej, Peter Sooley)
10+
11+
* Support nested parenthesized conditional expressions (Preston Thorpe)
12+
13+
* Add support for changes() and total_changes() functions (Lemon-Peppermint)
14+
15+
* Auto-create index in CREATE TABLE when necessary (Jussi Saurio)
16+
17+
* Add partial support for datetime() function (Preston Thorpe)
18+
19+
* SQL parser performance improvements (Jussi Saurio)
20+
21+
**Shell:**
22+
23+
* Show pretty parse errors in the shell (Samyak Sarnayak)
24+
25+
* Add CSV import support to shell (Vrishabh)
26+
27+
* Selectable IO backend with --io={syscall,io-uring} argument (Jorge López Tello)
28+
29+
**Bindings:**
30+
31+
* Initial version of Java bindings (Kim Seon Woo)
32+
33+
* Initial version of Rust bindings (Pekka Enberg)
34+
35+
* Add OPFS support to Wasm bindings (Elijah Morgan)
36+
37+
* Support uncorrelated FROM clause subqueries (Jussi Saurio)
38+
39+
* In-memory support to `sqlite3_open()` (Pekka Enberg)
40+
41+
### Fixed
42+
43+
* Make iterate() lazy in JavaScript bindings (Diego Reis)
44+
45+
* Fix integer overflow output to be same as sqlite3 (Vrishabh)
46+
47+
* Fix 8-bit serial type to encoding (Preston Thorpe)
48+
49+
* Query plan optimizer bug fixes (Jussi Saurio)
50+
51+
* B-Tree balancing fixes (Pere Diaz Bou)
52+
53+
* Fix index seek wrong on `SeekOp::LT`\`SeekOp::GT` (Kould)
54+
55+
* Fix arithmetic operations for text values' from Vrishabh
56+
57+
* Fix quote escape in SQL literals (Vrishabh)
58+
359
## 0.0.11 - 2024-12-31
460

561
### Added

COMPAT.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ Feature support of [sqlite expr syntax](https://www.sqlite.org/lang_expr.html).
120120
| like(X,Y,Z) | Yes | |
121121
| likelihood(X,Y) | No | |
122122
| likely(X) | No | |
123-
| load_extension(X) | No | |
123+
| load_extension(X) | Yes | sqlite3 extensions not yet supported |
124124
| load_extension(X,Y) | No | |
125125
| lower(X) | Yes | |
126126
| ltrim(X) | Yes | |
@@ -263,11 +263,11 @@ Feature support of [sqlite expr syntax](https://www.sqlite.org/lang_expr.html).
263263
| jsonb_array(value1,value2,...) | | |
264264
| json_array_length(json) | Yes | |
265265
| json_array_length(json,path) | Yes | |
266-
| json_error_position(json) | | |
266+
| json_error_position(json) | Yes | |
267267
| 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 |
268268
| jsonb_extract(json,path,...) | | |
269-
| json -> path | | |
270-
| json ->> path | | |
269+
| json -> path | Yes | |
270+
| json ->> path | Yes | |
271271
| json_insert(json,path,value,...) | | |
272272
| jsonb_insert(json,path,value,...) | | |
273273
| json_object(label1,value1,...) | | |

CONTRIBUTING.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,37 @@ The `simulator` directory contains a deterministic simulator for testing.
121121
What this means is that the behavior of a test run is deterministic based on the seed value.
122122
If the simulator catches a bug, you can always reproduce the exact same sequence of events by passing the same seed.
123123
The simulator also performs fault injection to discover interesting bugs.
124+
125+
## Python Bindings
126+
127+
Limbo provides Python bindings built on top of the [PyO3](https://pyo3.rs) project.
128+
To compile the Python bindings locally, you first need to create and activate a Python virtual environment (for example, with Python `3.12`):
129+
130+
```bash
131+
python3.12 -m venv venv
132+
source venv/bin/activate
133+
```
134+
135+
Then, install [Maturin](https://pypi.org/project/maturin/):
136+
137+
```bash
138+
pip install maturin
139+
```
140+
141+
Once Maturin is installed, you can build the crate and install it as a Python module directly into the current virtual environment by running:
142+
143+
```bash
144+
cd bindings/python && maturin develop
145+
```
146+
147+
## Adding Third Party Dependencies
148+
149+
When you want to add third party dependencies, please follow these steps:
150+
151+
1. Add Licenses: Place the appropriate licenses for the third-party dependencies under the licenses directory. Ensure
152+
that each license is in a separate file and named appropriately.
153+
2. Update NOTICE.md: Specify the licenses for the third-party dependencies in the NOTICE.md file. Include the name of
154+
the dependency, the license file path, and the homepage of the dependency.
155+
156+
By following these steps, you ensure that all third-party dependencies are properly documented and their licenses are
157+
included in the project.

0 commit comments

Comments
 (0)