Commit Graph

1124 Commits

Author SHA1 Message Date
limeng.1
c51750fad5 fix lint 2024-11-19 11:39:08 +08:00
limeng.1
1cb1d16c08 resolve comments 2024-11-19 11:39:08 +08:00
limeng.1
8cca659052 impl order by desc 2024-11-19 11:39:07 +08:00
jussisaurio
b86501f12e Merge 'implement CAST(col as type)' from Jussi Saurio
Closes #398

Reviewed-by: Pere Diaz Bou <pere-altea@hotmail.com>

Closes #404
2024-11-18 20:53:58 +02:00
Pekka Enberg
0fb1e59c9a Limbo 0.0.6 2024-11-18 19:16:15 +02:00
Pekka Enberg
e818bdb3ef Merge 'open file in append mode' from Pere Diaz Bou
Closes #409
2024-11-18 19:15:05 +02:00
Pere Diaz Bou
2cc89f712e open file in append mode 2024-11-18 18:06:01 +01:00
Pekka Enberg
91702abbe0 perf/latency: Update Cargo.lock
Update Cargo.lock to get the latest jsonb version, which fixes security
issue with fast-float.
2024-11-18 18:46:46 +02:00
jussisaurio
9efd45025d enum instead of string 2024-11-18 18:26:04 +02:00
jussisaurio
10086003c6 remove accidentally added wal file 2024-11-18 18:25:31 +02:00
Pekka Enberg
a83e62f6f4 Limbo 0.0.5 2024-11-18 14:57:00 +02:00
Pere Diaz Bou
9c4ca28bd9 Merge 'CREATE TABLE support' from Pekka Enberg
Closes #383
2024-11-18 13:40:20 +01:00
Pere Diaz Bou
80f60852df remove wrong comment 2024-11-18 10:41:20 +01:00
Pere Diaz Bou
9f72655e30 tree_create -> btree_create 2024-11-18 10:31:47 +01:00
Pekka Enberg
5efc218e6e Merge 'support subtract in translate_expr() (not in condition expressions yet)' from Jussi Saurio
closes #402

Closes #403
2024-11-18 09:28:23 +02:00
Pekka Enberg
78e723c61f Merge 'support parenthesized(single expr) in translate_expr()' from Jussi Saurio
fix #397 (for the most part)

Closes #401
2024-11-18 09:28:14 +02:00
jussisaurio
62761d2b34 uppercase only once 2024-11-17 22:22:03 +02:00
jussisaurio
ddd0cc041c implement CAST(col as type) 2024-11-17 22:12:22 +02:00
jussisaurio
491bdd3bfc support subtract in translate_expr() (not in condition expressions yet) 2024-11-17 18:47:16 +02:00
jussisaurio
9a4864bc6a support parenthesized(single expr) in translate_expr() 2024-11-17 18:36:30 +02:00
Pekka Enberg
f8391ea40c Update CHANGELOG 2024-11-17 17:14:57 +02:00
Pekka Enberg
0a45a04be6 Merge 'Fix COUNT(*) panic' from Jussi Saurio
Closes #399

Closes #400
2024-11-17 17:14:29 +02:00
jussisaurio
ccdcf302ca quick fix for #399 2024-11-17 17:06:09 +02:00
jussisaurio
de801f1e25 Merge 'vendor sqlite3-parser (lemon-rs)' from Jussi Saurio
- vendor sqlite3-parser (lemon-rs) to have full control over the parser
- update limbo-core in perf/latency/limbo

Reviewed-by: Pekka Enberg <penberg@iki.fi>

Closes #396
2024-11-16 20:14:11 +02:00
jussisaurio
3cc9d9d79f vendor sqlite3-parser (lemon-rs) 2024-11-16 20:08:59 +02:00
Pekka Enberg
8efeb16b82 Merge 'bindings/wasm: "SELECT 1" benchmark' from Pekka Enberg
This adds a benchmark for "SELECT 1" that essentially just evaluates the
overhead of calling into the library. Looks like WebAssembly adds 2.5x
overhead compared to native code...
```
penberg@vonneumann perf % node perf-limbo.js
cpu: Apple M1
runtime: node v18.19.0 (arm64-darwin)

benchmark      time (avg)             (min … max)       p75       p99      p999
------------------------------------------------- -----------------------------
• Statement
------------------------------------------------- -----------------------------
SELECT 1      771 ns/iter     (624 ns … 2'183 µs)    750 ns  1'085 ns  1'750 ns

summary for Statement
  SELECT 1
penberg@vonneumann perf % node perf-better-sqlite3.js
cpu: Apple M1
runtime: node v18.19.0 (arm64-darwin)

benchmark      time (avg)             (min … max)       p75       p99      p999
------------------------------------------------- -----------------------------
• Statement
------------------------------------------------- -----------------------------
SELECT 1      302 ns/iter       (166 ns … 779 µs)    292 ns    375 ns  1'000 ns

summary for Statement
  SELECT 1
```

Reviewed-by: Pere Diaz Bou <pere-altea@homail.com>

Closes #394
2024-11-16 19:00:39 +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
Pere Diaz Bou
569e98cb32 fmt 2024-11-16 17:08:22 +01:00
Pere Diaz Bou
d1dee484df properly format table and "if not exists" support 2024-11-16 17:02:53 +01:00
Pere Diaz Bou
090615b289 create btree table + parse schema 2024-11-16 16:24:28 +01:00
Pere Diaz Bou
66e20df309 fix some offset usages in btree 2024-11-16 16:23:06 +01:00
Pekka Enberg
fc5e42bb94 CREATE TABLE support 2024-11-16 13:07:10 +01:00
Pekka Enberg
422dac50f2 Merge 'core: Make mockall a dev dependency' from Pekka Enberg
Reviewed-by: Pere Diaz Bou <pere-altea@homail.com>

Closes #392
2024-11-16 13:24:47 +02:00
Pekka Enberg
85b70e381d core: Make mockall a dev dependency 2024-11-16 13:18:35 +02:00
Pekka Enberg
3442287902 Merge 'bindings/wasm: Fix VFS.sync() function signature' from Pekka Enberg
We don't expect any return value from the underlying `fsync()` so fix
the function signature accordingly.
Fixes the following obscure error:
```
TypeError: Cannot convert undefined to a BigInt
    at wasm://wasm/00942492:wasm-function[1501]:0x1c4dc1
    at wasm://wasm/00942492:wasm-function[694]:0x189586
    at wasm://wasm/00942492:wasm-function[50]:0x143d7
    at wasm://wasm/00942492:wasm-function[60]:0x3f91a
    at new Database (/Users/penberg/src/penberg/limbo/bindings/wasm/pkg/limbo_wasm.js:162:26)
    at file:///Users/penberg/src/penberg/limbo/bindings/wasm/perf/perf-limbo.js:5:12
    at ModuleJob.run (node:internal/modules/esm/module_job:195:25)
    at async ModuleLoader.import (node:internal/modules/esm/loader:336:24)
    at async loadESM (node:internal/process/esm_loader:34:7)
    at async handleMainPromise (node:internal/modules/run_main:106:12)
```

Reviewed-by: Pere Diaz Bou <pere-altea@homail.com>

Closes #395
2024-11-16 13:10:51 +02:00
Pekka Enberg
60cc8c0347 bindings/wasm: "SELECT 1" benchmark
This adds a benchmark for "SELECT 1" that essentially just evaluates the
overhead of calling into the library. Looks like WebAssembly adds 2.5x
overhead compared to native code...

```
penberg@vonneumann perf % node perf-limbo.js
cpu: Apple M1
runtime: node v18.19.0 (arm64-darwin)

benchmark      time (avg)             (min … max)       p75       p99      p999
------------------------------------------------- -----------------------------
• Statement
------------------------------------------------- -----------------------------
SELECT 1      771 ns/iter     (624 ns … 2'183 µs)    750 ns  1'085 ns  1'750 ns

summary for Statement
  SELECT 1
penberg@vonneumann perf % node perf-better-sqlite3.js
cpu: Apple M1
runtime: node v18.19.0 (arm64-darwin)

benchmark      time (avg)             (min … max)       p75       p99      p999
------------------------------------------------- -----------------------------
• Statement
------------------------------------------------- -----------------------------
SELECT 1      302 ns/iter       (166 ns … 779 µs)    292 ns    375 ns  1'000 ns

summary for Statement
  SELECT 1
```
2024-11-16 13:10:23 +02:00
Pekka Enberg
82ec900b07 bindings/wasm: Fix VFS.sync() function signature
We don't expect any return value from the underlying `fsync()` so fix
the function signature accordingly.

Fixes the following obscure error:

```
TypeError: Cannot convert undefined to a BigInt
    at wasm://wasm/00942492:wasm-function[1501]:0x1c4dc1
    at wasm://wasm/00942492:wasm-function[694]:0x189586
    at wasm://wasm/00942492:wasm-function[50]:0x143d7
    at wasm://wasm/00942492:wasm-function[60]:0x3f91a
    at new Database (/Users/penberg/src/penberg/limbo/bindings/wasm/pkg/limbo_wasm.js:162:26)
    at file:///Users/penberg/src/penberg/limbo/bindings/wasm/perf/perf-limbo.js:5:12
    at ModuleJob.run (node:internal/modules/esm/module_job:195:25)
    at async ModuleLoader.import (node:internal/modules/esm/loader:336:24)
    at async loadESM (node:internal/process/esm_loader:34:7)
    at async handleMainPromise (node:internal/modules/run_main:106:12)
```
2024-11-16 13:07:32 +02:00
Pere Diaz Bou
0e149ae7dd Merge 'core: Reduce library text size some more' from Pekka Enberg
Apply some more tricks from to reduce text size by 1 MB:
https://github.com/johnthagen/min-sized-rust
Before:
  penberg@vonneumann sqlite3 % ls -lh
../target/release/liblimbo_sqlite3.a
  -rw-r--r--  1 penberg  staff   6,7M 16 Mar 09:52
../target/release/liblimbo_sqlite3.a
After:
  penberg@vonneumann sqlite3 % ls -lh
../target/release/liblimbo_sqlite3.a
  -rw-r--r--  1 penberg  staff   5,6M 16 Mar 09:50
../target/release/liblimbo_sqlite3.a

Reviewed-by: Pere Diaz Bou <pere-altea@homail.com>

Closes #391
2024-11-16 11:34:16 +01:00
Pekka Enberg
2eb299907f Merge 'core: Make JSON support configurable' from Pekka Enberg
This adds a `json` feature flag, which allows users to disable JSON
support if needed.

Reviewed-by: Pere Diaz Bou <pere-altea@homail.com>

Closes #390
2024-11-16 12:14:06 +02:00
Pekka Enberg
8afad9f79b core: Reduce library text size some more
Apply some more tricks from to reduce text size by 1 MB:

https://github.com/johnthagen/min-sized-rust

Before:

  penberg@vonneumann sqlite3 % ls -lh ../target/release/liblimbo_sqlite3.a
  -rw-r--r--  1 penberg  staff   6,7M 16 Mar 09:52 ../target/release/liblimbo_sqlite3.a

After:

  penberg@vonneumann sqlite3 % ls -lh ../target/release/liblimbo_sqlite3.a
  -rw-r--r--  1 penberg  staff   5,6M 16 Mar 09:50 ../target/release/liblimbo_sqlite3.a
2024-11-16 09:53:24 +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
Pekka Enberg
17c7e8d346 sqlite3: Disable env_logger default features
Let's keep the dependencies as light-weight as possible.
2024-11-16 09:47:12 +02:00
Pekka Enberg
fe75ed275e Merge 'Bump PyO3 dependency' from Pekka Enberg
Github's bot reports a use-after-free issue so let's bump up the
version:
https://github.com/penberg/limbo/security/dependabot/4

Reviewed-by: Pere Diaz Bou <pere-altea@homail.com>

Closes #388
2024-11-16 09:02:10 +02:00
Pekka Enberg
0e2291a57e Merge 'build: Enable LTO for release builds' from Pekka Enberg
This reduces `liblimbo_sqlite3.a` binary size from 25 MB to 10 MB:
Before:
  $ -lh ../target/release/liblimbo_sqlite3.a
  -rw-r--r--  1 penberg  staff    25M 15 Mar 18:36
../target/release/liblimbo_sqlite3.a
After:
  $ penberg@vonneumann sqlite3 % ls -lh
../target/release/liblimbo_sqlite3.a
  -rw-r--r--  1 penberg  staff   9,9M 15 Mar 18:59
../target/release/liblimbo_sqlite3.a

Closes #389
2024-11-16 09:01:59 +02:00
Pekka Enberg
c3da75d260 build: Enable LTO for release builds
This reduces `liblimbo_sqlite3.a` binary size from 25 MB to 10 MB:

Before:

  $ -lh ../target/release/liblimbo_sqlite3.a
  -rw-r--r--  1 penberg  staff    25M 15 Mar 18:36 ../target/release/liblimbo_sqlite3.a

After:

  $ penberg@vonneumann sqlite3 % ls -lh ../target/release/liblimbo_sqlite3.a
  -rw-r--r--  1 penberg  staff   9,9M 15 Mar 18:59 ../target/release/liblimbo_sqlite3.a
2024-11-15 19:06:17 +02:00
Pekka Enberg
851ea65530 Bump PyO3 dependency
Github's bot reports a use-after-free issue so let's bump up the
version:

https://github.com/penberg/limbo/security/dependabot/4
2024-11-15 16:14:34 +02:00
Pekka Enberg
9d96b22b4a Merge 'core: create databases from limbo' from Pere Diaz Bou
Behold, the database emerges from within.

Reviewed-by: Pekka Enberg <penberg@iki.fi>

Closes #387
2024-11-15 15:55:48 +02:00
Pekka Enberg
44ececce7d github: Fix Pekka's email address 2024-11-15 15:55:33 +02:00
Pekka Enberg
5e1184d559 Update COMPAT.md 2024-11-15 13:49:15 +02:00
Pere Diaz Bou
6cd0f03643 core: create databases from limbo 2024-11-15 12:09:07 +01:00