diff --git a/.gitignore b/.gitignore
index fd099b2a..6f51e550 100644
--- a/.gitignore
+++ b/.gitignore
@@ -62,6 +62,7 @@ tests/bindings/**/*.node
/bindings/**/test-results/
/bindings/**/target/
/bindings/**/node_modules/
+/bindings/**/.tmp/
/bindings/**/.dart_tool/
/bindings/**/.pub/
/bindings/**/.pub-cache/
diff --git a/Cargo.lock b/Cargo.lock
index 3025f7ce..89af2c44 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -831,7 +831,7 @@ dependencies = [
[[package]]
name = "decentdb"
-version = "2.16.0"
+version = "2.16.1"
dependencies = [
"base64 0.22.1",
"chacha20",
@@ -867,7 +867,7 @@ dependencies = [
[[package]]
name = "decentdb-benchmark"
-version = "2.16.0"
+version = "2.16.1"
dependencies = [
"anyhow",
"clap",
@@ -881,7 +881,7 @@ dependencies = [
[[package]]
name = "decentdb-cli"
-version = "2.16.0"
+version = "2.16.1"
dependencies = [
"anyhow",
"clap",
@@ -895,7 +895,7 @@ dependencies = [
[[package]]
name = "decentdb-migrate"
-version = "2.16.0"
+version = "2.16.1"
dependencies = [
"anyhow",
"clap",
@@ -1859,7 +1859,7 @@ dependencies = [
[[package]]
name = "libpg_query_sys"
-version = "2.16.0"
+version = "2.16.1"
dependencies = [
"pg_query",
]
diff --git a/Cargo.toml b/Cargo.toml
index df061379..7be2cf73 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,7 +12,7 @@ exclude = [
resolver = "2"
[workspace.package]
-version = "2.16.0"
+version = "2.16.1"
edition = "2021"
authors = ["Steven Hildreth"]
license = "Apache-2.0"
diff --git a/VERSION b/VERSION
index 75249069..0e7079b6 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.16.0
+2.16.1
diff --git a/benchmarks/rust-baseline/Cargo.lock b/benchmarks/rust-baseline/Cargo.lock
index c19f29ea..35f10384 100644
--- a/benchmarks/rust-baseline/Cargo.lock
+++ b/benchmarks/rust-baseline/Cargo.lock
@@ -694,7 +694,7 @@ dependencies = [
[[package]]
name = "decentdb"
-version = "2.16.0"
+version = "2.16.1"
dependencies = [
"base64",
"chacha20",
@@ -1531,7 +1531,7 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
[[package]]
name = "libpg_query_sys"
-version = "2.16.0"
+version = "2.16.1"
dependencies = [
"pg_query",
]
diff --git a/bindings/dart/dart/pubspec.yaml b/bindings/dart/dart/pubspec.yaml
index 1d0e3dce..4161fad8 100644
--- a/bindings/dart/dart/pubspec.yaml
+++ b/bindings/dart/dart/pubspec.yaml
@@ -1,6 +1,6 @@
name: decentdb
description: Dart FFI bindings for the Rust DecentDB C ABI.
-version: 2.16.0
+version: 2.16.1
repository: https://github.com/sphildreth/decentdb
homepage: https://github.com/sphildreth/decentdb/tree/main/bindings/dart
diff --git a/bindings/dart/examples/console/pubspec.lock b/bindings/dart/examples/console/pubspec.lock
index 067d6d82..7db94d93 100644
--- a/bindings/dart/examples/console/pubspec.lock
+++ b/bindings/dart/examples/console/pubspec.lock
@@ -7,7 +7,7 @@ packages:
path: "../../dart"
relative: true
source: path
- version: "2.16.0"
+ version: "2.16.1"
ffi:
dependency: transitive
description:
diff --git a/bindings/dart/examples/console_complex/pubspec.lock b/bindings/dart/examples/console_complex/pubspec.lock
index 067d6d82..7db94d93 100644
--- a/bindings/dart/examples/console_complex/pubspec.lock
+++ b/bindings/dart/examples/console_complex/pubspec.lock
@@ -7,7 +7,7 @@ packages:
path: "../../dart"
relative: true
source: path
- version: "2.16.0"
+ version: "2.16.1"
ffi:
dependency: transitive
description:
diff --git a/bindings/dart/examples/flutter_desktop/pubspec.lock b/bindings/dart/examples/flutter_desktop/pubspec.lock
index 067d6d82..7db94d93 100644
--- a/bindings/dart/examples/flutter_desktop/pubspec.lock
+++ b/bindings/dart/examples/flutter_desktop/pubspec.lock
@@ -7,7 +7,7 @@ packages:
path: "../../dart"
relative: true
source: path
- version: "2.16.0"
+ version: "2.16.1"
ffi:
dependency: transitive
description:
diff --git a/bindings/dart/flutter/android/build.gradle b/bindings/dart/flutter/android/build.gradle
index efaa586f..96794b6b 100644
--- a/bindings/dart/flutter/android/build.gradle
+++ b/bindings/dart/flutter/android/build.gradle
@@ -3,7 +3,7 @@ plugins {
}
group = 'dev.decentdb.decentdb_flutter'
-version = '2.16.0'
+version = '2.16.1'
android {
namespace 'dev.decentdb.decentdb_flutter'
diff --git a/bindings/dart/flutter/example/pubspec.lock b/bindings/dart/flutter/example/pubspec.lock
index 28d072f1..6701470f 100644
--- a/bindings/dart/flutter/example/pubspec.lock
+++ b/bindings/dart/flutter/example/pubspec.lock
@@ -71,14 +71,14 @@ packages:
path: "../../dart"
relative: true
source: path
- version: "2.16.0"
+ version: "2.16.1"
decentdb_flutter:
dependency: "direct main"
description:
path: ".."
relative: true
source: path
- version: "2.16.0"
+ version: "2.16.1"
fake_async:
dependency: transitive
description:
diff --git a/bindings/dart/flutter/example/pubspec.yaml b/bindings/dart/flutter/example/pubspec.yaml
index 2b9e0ec8..2f7d2ea6 100644
--- a/bindings/dart/flutter/example/pubspec.yaml
+++ b/bindings/dart/flutter/example/pubspec.yaml
@@ -1,7 +1,7 @@
name: decentdb_flutter_example
description: Reference Flutter mobile app for DecentDB.
publish_to: none
-version: 2.16.0
+version: 2.16.1
environment:
sdk: ^3.0.0
diff --git a/bindings/dart/flutter/ios/decentdb_flutter.podspec b/bindings/dart/flutter/ios/decentdb_flutter.podspec
index fac4d637..4ef62270 100644
--- a/bindings/dart/flutter/ios/decentdb_flutter.podspec
+++ b/bindings/dart/flutter/ios/decentdb_flutter.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'decentdb_flutter'
- s.version = '2.16.0'
+ s.version = '2.16.1'
s.summary = 'Flutter mobile integration helpers for DecentDB.'
s.description = 'Provides Flutter registration and native artifact wiring for the DecentDB Dart FFI package.'
s.homepage = 'https://github.com/sphildreth/decentdb'
diff --git a/bindings/dart/flutter/pubspec.lock b/bindings/dart/flutter/pubspec.lock
index 8ea01a2b..26243e13 100644
--- a/bindings/dart/flutter/pubspec.lock
+++ b/bindings/dart/flutter/pubspec.lock
@@ -71,7 +71,7 @@ packages:
path: "../dart"
relative: true
source: path
- version: "2.16.0"
+ version: "2.16.1"
fake_async:
dependency: transitive
description:
diff --git a/bindings/dart/flutter/pubspec.yaml b/bindings/dart/flutter/pubspec.yaml
index ff320db9..a3c66d9c 100644
--- a/bindings/dart/flutter/pubspec.yaml
+++ b/bindings/dart/flutter/pubspec.yaml
@@ -1,6 +1,6 @@
name: decentdb_flutter
description: Flutter mobile integration helpers for the DecentDB Dart FFI package.
-version: 2.16.0
+version: 2.16.1
publish_to: none
repository: https://github.com/sphildreth/decentdb
homepage: https://github.com/sphildreth/decentdb/tree/main/bindings/dart/flutter
diff --git a/bindings/java/dbeaver-extension/META-INF/MANIFEST.MF b/bindings/java/dbeaver-extension/META-INF/MANIFEST.MF
index 604e3ff5..a65318f5 100644
--- a/bindings/java/dbeaver-extension/META-INF/MANIFEST.MF
+++ b/bindings/java/dbeaver-extension/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: DecentDB DBeaver Extension
Bundle-SymbolicName: org.jkiss.dbeaver.ext.decentdb;singleton:=true
-Bundle-Version: 2.16.0
+Bundle-Version: 2.16.1
Bundle-Activator: org.jkiss.dbeaver.ext.decentdb.DecentDBActivator
Bundle-Vendor: DecentDB Contributors
Require-Bundle: org.eclipse.core.runtime,
@@ -11,5 +11,5 @@ Require-Bundle: org.eclipse.core.runtime,
org.jkiss.dbeaver.ext.generic
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-ClassPath: .,
- lib/decentdb-jdbc-2.16.0.jar
+ lib/decentdb-jdbc-2.16.1.jar
Export-Package: org.jkiss.dbeaver.ext.decentdb.model
diff --git a/bindings/java/dbeaver-extension/build.gradle b/bindings/java/dbeaver-extension/build.gradle
index d86f38f1..7c69804b 100644
--- a/bindings/java/dbeaver-extension/build.gradle
+++ b/bindings/java/dbeaver-extension/build.gradle
@@ -3,7 +3,7 @@ plugins {
}
group = 'org.jkiss.dbeaver.ext'
-version = '2.16.0'
+version = '2.16.1'
java {
sourceCompatibility = JavaVersion.VERSION_21
diff --git a/bindings/java/driver/build.gradle b/bindings/java/driver/build.gradle
index b40646ca..b12af95f 100644
--- a/bindings/java/driver/build.gradle
+++ b/bindings/java/driver/build.gradle
@@ -3,7 +3,7 @@ plugins {
}
group = 'com.decentdb'
-version = '2.16.0'
+version = '2.16.1'
def repoRoot = file("${rootProject.projectDir}/../..")
def nativeLibDirPath = project.findProperty('nativeLibDir') ?:
diff --git a/bindings/java/driver/src/main/java/com/decentdb/jdbc/DecentDBDriver.java b/bindings/java/driver/src/main/java/com/decentdb/jdbc/DecentDBDriver.java
index 38f884cc..5adf48af 100644
--- a/bindings/java/driver/src/main/java/com/decentdb/jdbc/DecentDBDriver.java
+++ b/bindings/java/driver/src/main/java/com/decentdb/jdbc/DecentDBDriver.java
@@ -28,7 +28,7 @@
public final class DecentDBDriver implements Driver {
public static final String URL_PREFIX = "jdbc:decentdb:";
- public static final String DRIVER_VERSION = "2.16.0";
+ public static final String DRIVER_VERSION = "2.16.1";
public static final int DRIVER_MAJOR_VERSION = 1;
public static final int DRIVER_MINOR_VERSION = 8;
diff --git a/bindings/node/decentdb/package-lock.json b/bindings/node/decentdb/package-lock.json
index 759d6beb..26ee25e2 100644
--- a/bindings/node/decentdb/package-lock.json
+++ b/bindings/node/decentdb/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "decentdb-native",
- "version": "2.16.0",
+ "version": "2.16.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "decentdb-native",
- "version": "2.16.0",
+ "version": "2.16.1",
"devDependencies": {
"node-gyp": "^12.2.0"
}
diff --git a/bindings/node/decentdb/package.json b/bindings/node/decentdb/package.json
index 0545bb58..f2075dca 100644
--- a/bindings/node/decentdb/package.json
+++ b/bindings/node/decentdb/package.json
@@ -1,6 +1,6 @@
{
"name": "decentdb-native",
- "version": "2.16.0",
+ "version": "2.16.1",
"private": true,
"description": "DecentDB Node.js native addon (N-API) + thin JS wrapper",
"main": "index.js",
diff --git a/bindings/node/knex-decentdb/package-lock.json b/bindings/node/knex-decentdb/package-lock.json
index eadcbc1f..04347e2b 100644
--- a/bindings/node/knex-decentdb/package-lock.json
+++ b/bindings/node/knex-decentdb/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "knex-decentdb",
- "version": "2.16.0",
+ "version": "2.16.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "knex-decentdb",
- "version": "2.16.0",
+ "version": "2.16.1",
"dependencies": {
"decentdb-native": "file:../decentdb"
},
@@ -16,7 +16,7 @@
},
"../decentdb": {
"name": "decentdb-native",
- "version": "2.16.0",
+ "version": "2.16.1",
"devDependencies": {
"node-gyp": "^12.2.0"
}
diff --git a/bindings/node/knex-decentdb/package.json b/bindings/node/knex-decentdb/package.json
index 93a93a88..44759dee 100644
--- a/bindings/node/knex-decentdb/package.json
+++ b/bindings/node/knex-decentdb/package.json
@@ -1,6 +1,6 @@
{
"name": "knex-decentdb",
- "version": "2.16.0",
+ "version": "2.16.1",
"private": true,
"description": "Knex client/dialect for DecentDB",
"main": "index.js",
diff --git a/bindings/python/.tmp/bench_complex_results.json b/bindings/python/.tmp/bench_complex_results.json
index 5b8de330..7f9a60b2 100644
--- a/bindings/python/.tmp/bench_complex_results.json
+++ b/bindings/python/.tmp/bench_complex_results.json
@@ -11,136 +11,136 @@
"comparisons": {
"complex": {
"aggregate_p50_ms": {
- "decentdb": 0.027341,
- "decentdb_vs_sqlite": 4.99835466179159,
+ "decentdb": 0.027081,
+ "decentdb_vs_sqlite": 4.360167444855901,
"direction": "lower_is_better",
- "sqlite": 0.00547,
+ "sqlite": 0.006211,
"winner": "sqlite"
},
"aggregate_p95_ms": {
- "decentdb": 0.044364,
- "decentdb_vs_sqlite": 1.0719048999710061,
+ "decentdb": 0.046257,
+ "decentdb_vs_sqlite": 0.9761125999704573,
"direction": "lower_is_better",
- "sqlite": 0.041388,
- "winner": "sqlite"
+ "sqlite": 0.047389,
+ "winner": "decentdb"
},
"catalog_insert_s": {
- "decentdb": 0.0022600049996981397,
- "decentdb_vs_sqlite": 1.987383663399009,
+ "decentdb": 0.0014438929938478395,
+ "decentdb_vs_sqlite": 1.2211017569424496,
"direction": "lower_is_better",
- "sqlite": 0.0011371759974281304,
+ "sqlite": 0.0011824510002043098,
"winner": "sqlite"
},
"delete_p50_ms": {
- "decentdb": 0.027331,
- "decentdb_vs_sqlite": 1.850816008667976,
+ "decentdb": 0.028915,
+ "decentdb_vs_sqlite": 1.6576850312446254,
"direction": "lower_is_better",
- "sqlite": 0.014767,
+ "sqlite": 0.017443,
"winner": "sqlite"
},
"delete_p95_ms": {
- "decentdb": 0.0369,
- "decentdb_vs_sqlite": 1.6523374529822676,
+ "decentdb": 0.039554,
+ "decentdb_vs_sqlite": 1.484202626641651,
"direction": "lower_is_better",
- "sqlite": 0.022332,
+ "sqlite": 0.02665,
"winner": "sqlite"
},
"history_p50_ms": {
- "decentdb": 0.007284,
- "decentdb_vs_sqlite": 1.6947417403443463,
+ "decentdb": 0.007484,
+ "decentdb_vs_sqlite": 1.7827536922343972,
"direction": "lower_is_better",
- "sqlite": 0.004298,
+ "sqlite": 0.004198,
"winner": "sqlite"
},
"history_p95_ms": {
- "decentdb": 0.009968,
- "decentdb_vs_sqlite": 1.040718312800167,
+ "decentdb": 0.011882,
+ "decentdb_vs_sqlite": 1.284957283443279,
"direction": "lower_is_better",
- "sqlite": 0.009578,
+ "sqlite": 0.009247,
"winner": "sqlite"
},
"join_p50_ms": {
- "decentdb": 0.050615,
- "decentdb_vs_sqlite": 1.5846900438321851,
+ "decentdb": 0.049483,
+ "decentdb_vs_sqlite": 1.4881210152772766,
"direction": "lower_is_better",
- "sqlite": 0.03194,
+ "sqlite": 0.033252,
"winner": "sqlite"
},
"join_p95_ms": {
- "decentdb": 0.069921,
- "decentdb_vs_sqlite": 1.76101246694371,
+ "decentdb": 0.060764,
+ "decentdb_vs_sqlite": 1.2009882399446585,
"direction": "lower_is_better",
- "sqlite": 0.039705,
+ "sqlite": 0.050595,
"winner": "sqlite"
},
"orders_insert_rps": {
- "decentdb": 291240.5514584156,
- "decentdb_vs_sqlite": 0.6212594487713966,
+ "decentdb": 460117.311682834,
+ "decentdb_vs_sqlite": 0.9045212712637153,
"direction": "higher_is_better",
- "sqlite": 468790.5383722907,
+ "sqlite": 508686.0047414913,
"winner": "sqlite"
},
"point_lookup_p50_ms": {
- "decentdb": 0.002274,
- "decentdb_vs_sqlite": 0.5206043956043955,
+ "decentdb": 0.002205,
+ "decentdb_vs_sqlite": 0.5154277699859747,
"direction": "lower_is_better",
- "sqlite": 0.004368,
+ "sqlite": 0.004278,
"winner": "decentdb"
},
"point_lookup_p95_ms": {
- "decentdb": 0.003737,
- "decentdb_vs_sqlite": 0.7986749305407138,
+ "decentdb": 0.002905,
+ "decentdb_vs_sqlite": 0.6650641025641025,
"direction": "lower_is_better",
- "sqlite": 0.004679,
+ "sqlite": 0.004368,
"winner": "decentdb"
},
"range_scan_p50_ms": {
- "decentdb": 0.010149,
- "decentdb_vs_sqlite": 2.084411583487369,
+ "decentdb": 0.010049,
+ "decentdb_vs_sqlite": 2.1027411592383345,
"direction": "lower_is_better",
- "sqlite": 0.004869,
+ "sqlite": 0.004779,
"winner": "sqlite"
},
"range_scan_p95_ms": {
- "decentdb": 0.0155,
- "decentdb_vs_sqlite": 0.539994425863991,
+ "decentdb": 0.014608,
+ "decentdb_vs_sqlite": 0.5198021563534142,
"direction": "lower_is_better",
- "sqlite": 0.028704,
+ "sqlite": 0.028103,
"winner": "decentdb"
},
"report_query_s": {
- "decentdb": 4.187900049146265e-05,
- "decentdb_vs_sqlite": 0.332433702913577,
+ "decentdb": 6.641499930992723e-05,
+ "decentdb_vs_sqlite": 0.5503534365707368,
"direction": "lower_is_better",
- "sqlite": 0.00012597699969774112,
+ "sqlite": 0.00012067699572071433,
"winner": "decentdb"
},
"table_scan_p50_ms": {
- "decentdb": 0.002855,
- "decentdb_vs_sqlite": 0.8049055539892868,
+ "decentdb": 0.002795,
+ "decentdb_vs_sqlite": 0.6518190298507462,
"direction": "lower_is_better",
- "sqlite": 0.003547,
+ "sqlite": 0.004288,
"winner": "decentdb"
},
"table_scan_p95_ms": {
- "decentdb": 0.003126,
- "decentdb_vs_sqlite": 0.8547990155865463,
+ "decentdb": 0.003036,
+ "decentdb_vs_sqlite": 0.695054945054945,
"direction": "lower_is_better",
- "sqlite": 0.003657,
+ "sqlite": 0.004368,
"winner": "decentdb"
},
"update_p50_ms": {
- "decentdb": 0.004278,
- "decentdb_vs_sqlite": 1.233919815402365,
+ "decentdb": 0.004097,
+ "decentdb_vs_sqlite": 1.1685681688533942,
"direction": "lower_is_better",
- "sqlite": 0.003467,
+ "sqlite": 0.003506,
"winner": "sqlite"
},
"update_p95_ms": {
- "decentdb": 0.113032,
- "decentdb_vs_sqlite": 20.36245721491623,
+ "decentdb": 0.117882,
+ "decentdb_vs_sqlite": 18.1860536871336,
"direction": "lower_is_better",
- "sqlite": 0.005551,
+ "sqlite": 0.006482,
"winner": "sqlite"
}
},
@@ -153,24 +153,24 @@
"winner": "tie"
},
"movie_bulk_load_rps": {
- "decentdb": 98972.27147429365,
- "decentdb_vs_sqlite": 0.6664961496179039,
+ "decentdb": 109094.88050096006,
+ "decentdb_vs_sqlite": 0.7549990051932647,
"direction": "higher_is_better",
- "sqlite": 148496.38896043666,
+ "sqlite": 144496.72085731284,
"winner": "sqlite"
},
"movie_bulk_load_s": {
- "decentdb": 0.43547550599760143,
- "decentdb_vs_sqlite": 1.5003837615165379,
+ "decentdb": 0.39506895100930706,
+ "decentdb_vs_sqlite": 1.3245050564590082,
"direction": "lower_is_better",
- "sqlite": 0.2902427480003098,
+ "sqlite": 0.29827666499477345,
"winner": "sqlite"
},
"movie_busiest_people_s": {
- "decentdb": 0.0003930180027964525,
- "decentdb_vs_sqlite": 0.1949138264542111,
+ "decentdb": 0.0004261810099706054,
+ "decentdb_vs_sqlite": 0.19834956304790022,
"direction": "lower_is_better",
- "sqlite": 0.0020163680019322783,
+ "sqlite": 0.002148635991034098,
"winner": "decentdb"
},
"movie_busiest_people_s_rows": {
@@ -181,17 +181,17 @@
"winner": "tie"
},
"movie_checkpoint_after_mutations_s": {
- "decentdb": 0.009730276993650477,
- "decentdb_vs_sqlite": 0.3843705780401031,
+ "decentdb": 0.00764095300110057,
+ "decentdb_vs_sqlite": 0.34550992382776496,
"direction": "lower_is_better",
- "sqlite": 0.02531483300117543,
+ "sqlite": 0.022115002997452393,
"winner": "decentdb"
},
"movie_checkpoint_s": {
- "decentdb": 0.04932977199496236,
- "decentdb_vs_sqlite": 0.9824332826561517,
+ "decentdb": 0.02694047801196575,
+ "decentdb_vs_sqlite": 0.5665913471596089,
"direction": "lower_is_better",
- "sqlite": 0.05021182900236454,
+ "sqlite": 0.04754833999322727,
"winner": "decentdb"
},
"movie_delete_cascade_rows": {
@@ -202,10 +202,10 @@
"winner": "tie"
},
"movie_delete_cascade_s": {
- "decentdb": 0.01761859500402352,
- "decentdb_vs_sqlite": 1.516902761227533,
+ "decentdb": 0.018800225996528752,
+ "decentdb_vs_sqlite": 1.294552183368807,
"direction": "lower_is_better",
- "sqlite": 0.011614848001045175,
+ "sqlite": 0.014522571000270545,
"winner": "sqlite"
},
"movie_final_file_size_bytes": {
@@ -223,17 +223,17 @@
"winner": "tie"
},
"movie_point_reads_s": {
- "decentdb": 0.009619939999538474,
- "decentdb_vs_sqlite": 1.2310548180160552,
+ "decentdb": 0.008152804992278107,
+ "decentdb_vs_sqlite": 1.145117355386563,
"direction": "lower_is_better",
- "sqlite": 0.007814388001861516,
+ "sqlite": 0.007119623987819068,
"winner": "sqlite"
},
"movie_tag_search_s": {
- "decentdb": 0.0007442169953719713,
- "decentdb_vs_sqlite": 1.9513996683221306,
+ "decentdb": 0.0007443380018230528,
+ "decentdb_vs_sqlite": 2.060063430784825,
"direction": "lower_is_better",
- "sqlite": 0.0003813759976765141,
+ "sqlite": 0.00036131800152361393,
"winner": "sqlite"
},
"movie_tag_search_s_rows": {
@@ -244,10 +244,10 @@
"winner": "tie"
},
"movie_top_rated_s": {
- "decentdb": 0.0005890270040254109,
- "decentdb_vs_sqlite": 0.49967340639234425,
+ "decentdb": 0.0005358260095817968,
+ "decentdb_vs_sqlite": 0.3940751929595916,
"direction": "lower_is_better",
- "sqlite": 0.001178824000817258,
+ "sqlite": 0.0013597049983218312,
"winner": "decentdb"
},
"movie_top_rated_s_rows": {
@@ -265,24 +265,24 @@
"winner": "tie"
},
"movie_update_batch_s": {
- "decentdb": 0.018743477994576097,
- "decentdb_vs_sqlite": 2.4676244294247605,
+ "decentdb": 0.019545607006875798,
+ "decentdb_vs_sqlite": 1.9774380762941621,
"direction": "lower_is_better",
- "sqlite": 0.0075957579974783584,
+ "sqlite": 0.009884308004984632,
"winner": "sqlite"
},
"movie_vacuum_s": {
- "decentdb": 0.011847595000290312,
- "decentdb_vs_sqlite": 0.21401804711582534,
+ "decentdb": 0.014204171995515935,
+ "decentdb_vs_sqlite": 0.24021174357337644,
"direction": "lower_is_better",
- "sqlite": 0.05535792499722447,
+ "sqlite": 0.05913187999976799,
"winner": "decentdb"
},
"movie_watchlist_s": {
- "decentdb": 0.00018203200306743383,
- "decentdb_vs_sqlite": 0.737589806672207,
+ "decentdb": 0.00018616000306792557,
+ "decentdb_vs_sqlite": 0.6460053120338923,
"direction": "lower_is_better",
- "sqlite": 0.0002467930025886744,
+ "sqlite": 0.00028817100974265486,
"winner": "decentdb"
},
"movie_watchlist_s_rows": {
@@ -372,7 +372,7 @@
"decentdb": {
"abi_version": 7,
"native_library": "/home/steven/src/github/decentdb/target/release/libdecentdb.so",
- "native_version": "2.15.0",
+ "native_version": "2.16.1",
"python_package_version": null
},
"sqlite": {
@@ -620,7 +620,7 @@
"status": "skipped"
}
},
- "generated_at": "2026-07-01T04:03:43.198977+00:00",
+ "generated_at": "2026-07-01T19:36:06.553266+00:00",
"python": {
"executable": "/usr/bin/python",
"version": "3.14.6"
@@ -628,46 +628,46 @@
"results": {
"complex": {
"decentdb": {
- "aggregate_p50_ms": 0.027341,
- "aggregate_p95_ms": 0.044364,
- "catalog_insert_s": 0.0022600049996981397,
- "delete_p50_ms": 0.027331,
- "delete_p95_ms": 0.0369,
- "history_p50_ms": 0.007284,
- "history_p95_ms": 0.009968,
- "join_p50_ms": 0.050615,
- "join_p95_ms": 0.069921,
- "orders_insert_rps": 291240.5514584156,
- "point_lookup_p50_ms": 0.002274,
- "point_lookup_p95_ms": 0.003737,
- "range_scan_p50_ms": 0.010149,
- "range_scan_p95_ms": 0.0155,
- "report_query_s": 4.187900049146265e-05,
- "table_scan_p50_ms": 0.002855,
- "table_scan_p95_ms": 0.003126,
- "update_p50_ms": 0.004278,
- "update_p95_ms": 0.113032
+ "aggregate_p50_ms": 0.027081,
+ "aggregate_p95_ms": 0.046257,
+ "catalog_insert_s": 0.0014438929938478395,
+ "delete_p50_ms": 0.028915,
+ "delete_p95_ms": 0.039554,
+ "history_p50_ms": 0.007484,
+ "history_p95_ms": 0.011882,
+ "join_p50_ms": 0.049483,
+ "join_p95_ms": 0.060764,
+ "orders_insert_rps": 460117.311682834,
+ "point_lookup_p50_ms": 0.002205,
+ "point_lookup_p95_ms": 0.002905,
+ "range_scan_p50_ms": 0.010049,
+ "range_scan_p95_ms": 0.014608,
+ "report_query_s": 6.641499930992723e-05,
+ "table_scan_p50_ms": 0.002795,
+ "table_scan_p95_ms": 0.003036,
+ "update_p50_ms": 0.004097,
+ "update_p95_ms": 0.117882
},
"sqlite": {
- "aggregate_p50_ms": 0.00547,
- "aggregate_p95_ms": 0.041388,
- "catalog_insert_s": 0.0011371759974281304,
- "delete_p50_ms": 0.014767,
- "delete_p95_ms": 0.022332,
- "history_p50_ms": 0.004298,
- "history_p95_ms": 0.009578,
- "join_p50_ms": 0.03194,
- "join_p95_ms": 0.039705,
- "orders_insert_rps": 468790.5383722907,
- "point_lookup_p50_ms": 0.004368,
- "point_lookup_p95_ms": 0.004679,
- "range_scan_p50_ms": 0.004869,
- "range_scan_p95_ms": 0.028704,
- "report_query_s": 0.00012597699969774112,
- "table_scan_p50_ms": 0.003547,
- "table_scan_p95_ms": 0.003657,
- "update_p50_ms": 0.003467,
- "update_p95_ms": 0.005551
+ "aggregate_p50_ms": 0.006211,
+ "aggregate_p95_ms": 0.047389,
+ "catalog_insert_s": 0.0011824510002043098,
+ "delete_p50_ms": 0.017443,
+ "delete_p95_ms": 0.02665,
+ "history_p50_ms": 0.004198,
+ "history_p95_ms": 0.009247,
+ "join_p50_ms": 0.033252,
+ "join_p95_ms": 0.050595,
+ "orders_insert_rps": 508686.0047414913,
+ "point_lookup_p50_ms": 0.004278,
+ "point_lookup_p95_ms": 0.004368,
+ "range_scan_p50_ms": 0.004779,
+ "range_scan_p95_ms": 0.028103,
+ "report_query_s": 0.00012067699572071433,
+ "table_scan_p50_ms": 0.004288,
+ "table_scan_p95_ms": 0.004368,
+ "update_p50_ms": 0.003506,
+ "update_p95_ms": 0.006482
}
},
"movie": {
@@ -789,25 +789,25 @@
}
},
"busiest_people_rows": 20,
- "movie_bulk_load_rps": 98972.27147429365,
- "movie_bulk_load_s": 0.43547550599760143,
- "movie_busiest_people_s": 0.0003930180027964525,
+ "movie_bulk_load_rps": 109094.88050096006,
+ "movie_bulk_load_s": 0.39506895100930706,
+ "movie_busiest_people_s": 0.0004261810099706054,
"movie_busiest_people_s_rows": 20,
- "movie_checkpoint_after_mutations_s": 0.009730276993650477,
- "movie_checkpoint_s": 0.04932977199496236,
+ "movie_checkpoint_after_mutations_s": 0.00764095300110057,
+ "movie_checkpoint_s": 0.02694047801196575,
"movie_delete_cascade_rows": 10,
- "movie_delete_cascade_s": 0.01761859500402352,
+ "movie_delete_cascade_s": 0.018800225996528752,
"movie_final_file_size_bytes": 7630848,
"movie_point_reads_rows": 1000,
- "movie_point_reads_s": 0.009619939999538474,
- "movie_tag_search_s": 0.0007442169953719713,
+ "movie_point_reads_s": 0.008152804992278107,
+ "movie_tag_search_s": 0.0007443380018230528,
"movie_tag_search_s_rows": 50,
- "movie_top_rated_s": 0.0005890270040254109,
+ "movie_top_rated_s": 0.0005358260095817968,
"movie_top_rated_s_rows": 0,
"movie_update_batch_rows": 1000,
- "movie_update_batch_s": 0.018743477994576097,
- "movie_vacuum_s": 0.011847595000290312,
- "movie_watchlist_s": 0.00018203200306743383,
+ "movie_update_batch_s": 0.019545607006875798,
+ "movie_vacuum_s": 0.014204171995515935,
+ "movie_watchlist_s": 0.00018616000306792557,
"movie_watchlist_s_rows": 2,
"movies_after": 1990,
"movies_before": 2000,
@@ -943,25 +943,25 @@
}
},
"busiest_people_rows": 20,
- "movie_bulk_load_rps": 148496.38896043666,
- "movie_bulk_load_s": 0.2902427480003098,
- "movie_busiest_people_s": 0.0020163680019322783,
+ "movie_bulk_load_rps": 144496.72085731284,
+ "movie_bulk_load_s": 0.29827666499477345,
+ "movie_busiest_people_s": 0.002148635991034098,
"movie_busiest_people_s_rows": 20,
- "movie_checkpoint_after_mutations_s": 0.02531483300117543,
- "movie_checkpoint_s": 0.05021182900236454,
+ "movie_checkpoint_after_mutations_s": 0.022115002997452393,
+ "movie_checkpoint_s": 0.04754833999322727,
"movie_delete_cascade_rows": 10,
- "movie_delete_cascade_s": 0.011614848001045175,
+ "movie_delete_cascade_s": 0.014522571000270545,
"movie_final_file_size_bytes": 9400320,
"movie_point_reads_rows": 1000,
- "movie_point_reads_s": 0.007814388001861516,
- "movie_tag_search_s": 0.0003813759976765141,
+ "movie_point_reads_s": 0.007119623987819068,
+ "movie_tag_search_s": 0.00036131800152361393,
"movie_tag_search_s_rows": 50,
- "movie_top_rated_s": 0.001178824000817258,
+ "movie_top_rated_s": 0.0013597049983218312,
"movie_top_rated_s_rows": 0,
"movie_update_batch_rows": 1000,
- "movie_update_batch_s": 0.0075957579974783584,
- "movie_vacuum_s": 0.05535792499722447,
- "movie_watchlist_s": 0.0002467930025886744,
+ "movie_update_batch_s": 0.009884308004984632,
+ "movie_vacuum_s": 0.05913187999976799,
+ "movie_watchlist_s": 0.00028817100974265486,
"movie_watchlist_s_rows": 2,
"movies_after": 1990,
"movies_before": 2000,
diff --git a/bindings/python/pyproject.toml b/bindings/python/pyproject.toml
index 92bbbaa4..7f7beffc 100644
--- a/bindings/python/pyproject.toml
+++ b/bindings/python/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "decentdb"
-version = "2.16.0"
+version = "2.16.1"
description = "Python DB-API 2.0 driver and SQLAlchemy dialect for DecentDB"
readme = "README.md"
authors = [
diff --git a/crates/decentdb/src/exec/dml.rs b/crates/decentdb/src/exec/dml.rs
index f6903eaf..b654424e 100644
--- a/crates/decentdb/src/exec/dml.rs
+++ b/crates/decentdb/src/exec/dml.rs
@@ -13,8 +13,9 @@ use crate::record::key::encode_index_key;
use crate::record::row::Row;
use crate::record::value::Value;
use crate::sql::ast::{
- Assignment, BinaryOp, ConflictAction, ConflictTarget, DeleteStatement, Expr, InsertSource,
- InsertStatement, SelectItem, UpdateStatement,
+ Assignment, BinaryOp, ConflictAction, ConflictTarget, DeleteStatement, Expr, FromItem,
+ InsertSource, InsertStatement, JoinConstraint, JoinKind, Query, QueryBody, SelectItem,
+ UpdateStatement,
};
use crate::sql::parser::parse_expression_sql;
use crate::sync::{self, SyncOperation};
@@ -24,9 +25,9 @@ use super::{
compare_values, compute_index_key, compute_index_values, covering_payload_values_for_row,
generated_columns_are_stored, infer_expr_name, plain_single_text_index_column_position,
row_satisfies_index_predicate, row_satisfies_index_predicate_with_expr,
- spatial_index_value_for_row, table_row_dataset, EngineRuntime, RuntimeBtreeKey, RuntimeIndex,
- RuntimeRowIdSet, StoredRow, TablePageManifest, TableRowRef, TableRowSource,
- PAGED_TABLE_RESIDENT_APPEND_ROW_THRESHOLD,
+ spatial_index_value_for_row, table_row_dataset, EngineRuntime, RuntimeBtreeKey,
+ RuntimeBtreeKeys, RuntimeIndex, RuntimeRowIdSet, StoredRow, TablePageManifest, TableRowRef,
+ TableRowSource, PAGED_TABLE_RESIDENT_APPEND_ROW_THRESHOLD,
};
#[derive(Clone, Debug)]
@@ -2454,7 +2455,11 @@ impl EngineRuntime {
let table_name = statement.table_name.clone();
let temporary = self.visible_table_is_temporary(&table_name);
- let source_rows = materialize_insert_source(self, &statement.source, params)?;
+ let source_rows = if let Some(rows) = materialize_insert_summary_source(self, statement)? {
+ rows
+ } else {
+ materialize_insert_source(self, &statement.source, params)?
+ };
let mut affected_rows = 0_u64;
let mut returning_rows = Vec::new();
@@ -6993,6 +6998,573 @@ fn materialize_insert_source(
}
}
+fn materialize_insert_summary_source(
+ runtime: &EngineRuntime,
+ statement: &InsertStatement,
+) -> Result