stoolap 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Cargo.lock +33 -5
- data/ext/stoolap/Cargo.toml +2 -2
- data/ext/stoolap/src/statement.rs +0 -4
- data/ext/stoolap/src/transaction.rs +18 -20
- data/lib/stoolap/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b1c26a9bc53e9a804761792da6adb9d151e2acf25abd8e4516a6a279c986efa1
|
|
4
|
+
data.tar.gz: a4ba4b062bc3146a01bd4554c647aef8960b8a1dc42ea586a4d9805d21c3afa2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7f5fdab87eab593f4bfb494d8a74b7cac0008a407540c9cf53fea96b375d7cd361e4e9a940383444ed225e3d3f2273a89624fb594ed7c226d04fc2fde44fbdce
|
|
7
|
+
data.tar.gz: be4005d41126b10ad54e86a8b08fad47ef37c201ff91f4dc06a597caf47dfbef3ce30c95367e2ce9962898082045c0bdd97f47b616db5f287d2b4ef82a6b63a7
|
data/Cargo.lock
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# This file is automatically @generated by Cargo.
|
|
2
2
|
# It is not intended for manual editing.
|
|
3
|
-
version =
|
|
3
|
+
version = 4
|
|
4
4
|
|
|
5
5
|
[[package]]
|
|
6
6
|
name = "ahash"
|
|
@@ -393,6 +393,27 @@ dependencies = [
|
|
|
393
393
|
"typenum",
|
|
394
394
|
]
|
|
395
395
|
|
|
396
|
+
[[package]]
|
|
397
|
+
name = "csv"
|
|
398
|
+
version = "1.4.0"
|
|
399
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
400
|
+
checksum = "52cd9d68cf7efc6ddfaaee42e7288d3a99d613d4b50f76ce9827ae0c6e14f938"
|
|
401
|
+
dependencies = [
|
|
402
|
+
"csv-core",
|
|
403
|
+
"itoa",
|
|
404
|
+
"ryu",
|
|
405
|
+
"serde_core",
|
|
406
|
+
]
|
|
407
|
+
|
|
408
|
+
[[package]]
|
|
409
|
+
name = "csv-core"
|
|
410
|
+
version = "0.1.13"
|
|
411
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
412
|
+
checksum = "704a3c26996a80471189265814dbc2c257598b96b8a7feae2d31ace646bb9782"
|
|
413
|
+
dependencies = [
|
|
414
|
+
"memchr",
|
|
415
|
+
]
|
|
416
|
+
|
|
396
417
|
[[package]]
|
|
397
418
|
name = "dashmap"
|
|
398
419
|
version = "6.1.0"
|
|
@@ -1125,6 +1146,12 @@ dependencies = [
|
|
|
1125
1146
|
"windows-sys 0.60.2",
|
|
1126
1147
|
]
|
|
1127
1148
|
|
|
1149
|
+
[[package]]
|
|
1150
|
+
name = "ryu"
|
|
1151
|
+
version = "1.0.23"
|
|
1152
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1153
|
+
checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
|
|
1154
|
+
|
|
1128
1155
|
[[package]]
|
|
1129
1156
|
name = "scopeguard"
|
|
1130
1157
|
version = "1.2.0"
|
|
@@ -1231,18 +1258,18 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
|
|
|
1231
1258
|
|
|
1232
1259
|
[[package]]
|
|
1233
1260
|
name = "stoolap"
|
|
1234
|
-
version = "0.4.
|
|
1261
|
+
version = "0.4.1"
|
|
1235
1262
|
dependencies = [
|
|
1236
1263
|
"chrono",
|
|
1237
1264
|
"magnus",
|
|
1238
|
-
"stoolap 0.4.
|
|
1265
|
+
"stoolap 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
1239
1266
|
]
|
|
1240
1267
|
|
|
1241
1268
|
[[package]]
|
|
1242
1269
|
name = "stoolap"
|
|
1243
|
-
version = "0.4.
|
|
1270
|
+
version = "0.4.1"
|
|
1244
1271
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1245
|
-
checksum = "
|
|
1272
|
+
checksum = "a7ebe4615116d74154a6b36d1699793ae43af7c7a7a78739458f99f678456f9e"
|
|
1246
1273
|
dependencies = [
|
|
1247
1274
|
"ahash",
|
|
1248
1275
|
"anyhow",
|
|
@@ -1252,6 +1279,7 @@ dependencies = [
|
|
|
1252
1279
|
"comfy-table",
|
|
1253
1280
|
"crc32fast",
|
|
1254
1281
|
"crossbeam",
|
|
1282
|
+
"csv",
|
|
1255
1283
|
"dashmap",
|
|
1256
1284
|
"dirs",
|
|
1257
1285
|
"getrandom 0.2.17",
|
data/ext/stoolap/Cargo.toml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "stoolap"
|
|
3
|
-
version = "0.4.
|
|
3
|
+
version = "0.4.1"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
authors = ["Stoolap Contributors"]
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -14,7 +14,7 @@ name = "stoolap"
|
|
|
14
14
|
crate-type = ["cdylib"]
|
|
15
15
|
|
|
16
16
|
[dependencies]
|
|
17
|
-
stoolap = "0.4.
|
|
17
|
+
stoolap = "0.4.1"
|
|
18
18
|
magnus = "0.8"
|
|
19
19
|
chrono = "0.4"
|
|
20
20
|
|
|
@@ -72,10 +72,6 @@ impl PreparedStatement {
|
|
|
72
72
|
&self.plan
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
pub(crate) fn sql_text(&self) -> &str {
|
|
76
|
-
&self.sql_text
|
|
77
|
-
}
|
|
78
|
-
|
|
79
75
|
/// Return the cached column-key array, creating it from `rows.columns()`
|
|
80
76
|
/// on first call. The returned `RArray` is rooted through this struct's
|
|
81
77
|
/// `mark` callback and is safe to hold across subsequent Ruby calls.
|
|
@@ -139,58 +139,60 @@ impl Transaction {
|
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
/// Execute a prepared statement within the transaction. Returns rows affected.
|
|
142
|
-
///
|
|
143
|
-
/// Note: named parameters fall back to `tx.execute_named` which reparses
|
|
144
|
-
/// the SQL, because stoolap's `Transaction::execute_prepared` only
|
|
145
|
-
/// accepts positional `Params` and the AST encodes `:name` references
|
|
146
|
-
/// that cannot be resolved through positional indexing. Use positional
|
|
147
|
-
/// `$1, $2` params for the full prepared fast path.
|
|
148
142
|
pub fn execute_prepared(&self, args: &[Value]) -> Result<i64, Error> {
|
|
149
|
-
let (plan,
|
|
143
|
+
let (plan, params) = parse_stmt_args(args)?;
|
|
150
144
|
let bind = parse_params(params)?;
|
|
151
145
|
self.with_tx(|tx| match bind {
|
|
152
146
|
BindParams::Positional(p) => tx
|
|
153
147
|
.execute_prepared(plan.statement.as_ref(), p)
|
|
154
148
|
.map_err(to_magnus),
|
|
155
|
-
BindParams::Named(n) => tx
|
|
149
|
+
BindParams::Named(n) => tx
|
|
150
|
+
.execute_prepared_named(plan.statement.as_ref(), n)
|
|
151
|
+
.map_err(to_magnus),
|
|
156
152
|
})
|
|
157
153
|
}
|
|
158
154
|
|
|
159
155
|
/// Query rows using a prepared statement. Returns Array of Hashes.
|
|
160
156
|
pub fn query_prepared(&self, args: &[Value]) -> Result<RArray, Error> {
|
|
161
|
-
let (plan,
|
|
157
|
+
let (plan, params) = parse_stmt_args(args)?;
|
|
162
158
|
let bind = parse_params(params)?;
|
|
163
159
|
let rows = self.with_tx(|tx| match bind {
|
|
164
160
|
BindParams::Positional(p) => tx
|
|
165
161
|
.query_prepared(plan.statement.as_ref(), p)
|
|
166
162
|
.map_err(to_magnus),
|
|
167
|
-
BindParams::Named(n) => tx
|
|
163
|
+
BindParams::Named(n) => tx
|
|
164
|
+
.query_prepared_named(plan.statement.as_ref(), n)
|
|
165
|
+
.map_err(to_magnus),
|
|
168
166
|
})?;
|
|
169
167
|
rows_to_hashes(rows)
|
|
170
168
|
}
|
|
171
169
|
|
|
172
170
|
/// Query a single row using a prepared statement. Returns Hash or nil.
|
|
173
171
|
pub fn query_one_prepared(&self, args: &[Value]) -> Result<Value, Error> {
|
|
174
|
-
let (plan,
|
|
172
|
+
let (plan, params) = parse_stmt_args(args)?;
|
|
175
173
|
let bind = parse_params(params)?;
|
|
176
174
|
let rows = self.with_tx(|tx| match bind {
|
|
177
175
|
BindParams::Positional(p) => tx
|
|
178
176
|
.query_prepared(plan.statement.as_ref(), p)
|
|
179
177
|
.map_err(to_magnus),
|
|
180
|
-
BindParams::Named(n) => tx
|
|
178
|
+
BindParams::Named(n) => tx
|
|
179
|
+
.query_prepared_named(plan.statement.as_ref(), n)
|
|
180
|
+
.map_err(to_magnus),
|
|
181
181
|
})?;
|
|
182
182
|
first_row_to_hash(rows)
|
|
183
183
|
}
|
|
184
184
|
|
|
185
185
|
/// Query rows using a prepared statement in raw format.
|
|
186
186
|
pub fn query_raw_prepared(&self, args: &[Value]) -> Result<RHash, Error> {
|
|
187
|
-
let (plan,
|
|
187
|
+
let (plan, params) = parse_stmt_args(args)?;
|
|
188
188
|
let bind = parse_params(params)?;
|
|
189
189
|
let rows = self.with_tx(|tx| match bind {
|
|
190
190
|
BindParams::Positional(p) => tx
|
|
191
191
|
.query_prepared(plan.statement.as_ref(), p)
|
|
192
192
|
.map_err(to_magnus),
|
|
193
|
-
BindParams::Named(n) => tx
|
|
193
|
+
BindParams::Named(n) => tx
|
|
194
|
+
.query_prepared_named(plan.statement.as_ref(), n)
|
|
195
|
+
.map_err(to_magnus),
|
|
194
196
|
})?;
|
|
195
197
|
rows_to_raw(rows)
|
|
196
198
|
}
|
|
@@ -234,13 +236,9 @@ fn parse_sql_args(args: &[Value]) -> Result<(String, Option<Value>), Error> {
|
|
|
234
236
|
Ok((scanned.required.0, scanned.optional.0))
|
|
235
237
|
}
|
|
236
238
|
|
|
237
|
-
fn parse_stmt_args(args: &[Value]) -> Result<(CachedPlanRef,
|
|
239
|
+
fn parse_stmt_args(args: &[Value]) -> Result<(CachedPlanRef, Option<Value>), Error> {
|
|
238
240
|
use magnus::TryConvert;
|
|
239
241
|
let scanned = scan_args::<(Value,), (Option<Value>,), (), (), (), ()>(args)?;
|
|
240
242
|
let stmt: &PreparedStatement = TryConvert::try_convert(scanned.required.0)?;
|
|
241
|
-
Ok((
|
|
242
|
-
stmt.plan().clone(),
|
|
243
|
-
stmt.sql_text().to_string(),
|
|
244
|
-
scanned.optional.0,
|
|
245
|
-
))
|
|
243
|
+
Ok((stmt.plan().clone(), scanned.optional.0))
|
|
246
244
|
}
|
data/lib/stoolap/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: stoolap
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Stoolap Contributors
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-09-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rb_sys
|