Skip to content

Commit aff8b6e

Browse files
committed
Refine tuple result iteration
1 parent c7d3e3f commit aff8b6e

41 files changed

Lines changed: 862 additions & 1111 deletions

Some content is hidden

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

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[package]
44
name = "kite_sql"
5-
version = "0.3.2"
5+
version = "0.3.3"
66
edition = "2021"
77
build = "build.rs"
88
authors = ["Kould <kould2333@gmail.com>", "Xwg <loloxwg@gmail.com>"]
@@ -53,7 +53,7 @@ required-features = ["pprof"]
5353
bumpalo = { version = "3", default-features = false, features = ["collections"] }
5454
ordered-float = { version = "4" }
5555
paste = { version = "1" }
56-
kite_sql_serde_macros = { version = "0.2.2", path = "kite_sql_serde_macros" }
56+
kite_sql_serde_macros = { version = "0.2.3", path = "kite_sql_serde_macros" }
5757

5858
# Optional dependencies for features
5959
comfy-table = { version = "7", default-features = false, optional = true }

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -202,10 +202,10 @@ Recent 720-second local comparison on the machine above:
202202
203203
| Backend | TpmC | New-Order p90 | Payment p90 | Order-Status p90 | Delivery p90 | Stock-Level p90 |
204204
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
205-
| KiteSQL LMDB | 73638 | 0.001s | 0.001s | 0.001s | 0.002s | 0.001s |
206-
| KiteSQL RocksDB | 39051 | 0.001s | 0.001s | 0.002s | 0.009s | 0.001s |
207-
| SQLite balanced | 56788 | 0.001s | 0.001s | 0.001s | 0.001s | 0.001s |
208-
| SQLite practical | 44049 | 0.001s | 0.001s | 0.001s | 0.001s | 0.001s |
205+
| KiteSQL LMDB | 64871 | 0.001s | 0.001s | 0.001s | 0.002s | 0.001s |
206+
| KiteSQL RocksDB | 37922 | 0.001s | 0.001s | 0.002s | 0.010s | 0.001s |
207+
| SQLite balanced | 53938 | 0.001s | 0.001s | 0.001s | 0.001s | 0.001s |
208+
| SQLite practical | 41493 | 0.001s | 0.001s | 0.001s | 0.001s | 0.001s |
209209
210210
The detailed raw outputs are recorded in [tpcc/README.md](tpcc/README.md).
211211
#### 👉[check more](tpcc/README.md)

examples/transaction.rs

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -49,33 +49,40 @@ mod app {
4949
.run("insert into t1 values(0, 0), (1, 1)")?
5050
.done()?;
5151

52-
assert!(database.run("select * from t1")?.next().is_none());
52+
let mut hidden_iter = database.run("select * from t1")?;
53+
assert!(hidden_iter.next_tuple(|_, _| ())?.is_none());
54+
hidden_iter.done()?;
5355

5456
transaction.commit()?;
5557

5658
let mut iter = database.run("select * from t1")?;
57-
assert_eq!(
58-
iter.next().unwrap()?,
59-
Tuple::new(None, vec![DataValue::Int32(0), DataValue::Int32(0)])
60-
);
61-
assert_eq!(
62-
iter.next().unwrap()?,
63-
Tuple::new(None, vec![DataValue::Int32(1), DataValue::Int32(1)])
64-
);
65-
assert!(iter.next().is_none());
59+
iter.next_tuple(|_, tuple| {
60+
assert_eq!(
61+
tuple,
62+
&Tuple::new(None, vec![DataValue::Int32(0), DataValue::Int32(0)])
63+
);
64+
})?
65+
.unwrap();
66+
iter.next_tuple(|_, tuple| {
67+
assert_eq!(
68+
tuple,
69+
&Tuple::new(None, vec![DataValue::Int32(1), DataValue::Int32(1)])
70+
);
71+
})?
72+
.unwrap();
73+
assert!(iter.next_tuple(|_, _| ())?.is_none());
6674
iter.done()?;
6775

6876
let mut tx2 = database.new_transaction()?;
6977
tx2.run("update t1 set c2 = 99 where c1 = 0")?.done()?;
78+
let mut c2_iter = database.run("select c2 from t1 where c1 = 0")?;
7079
assert_eq!(
71-
database
72-
.run("select c2 from t1 where c1 = 0")?
73-
.next()
74-
.unwrap()?
75-
.values[0]
76-
.i32(),
80+
c2_iter
81+
.next_tuple(|_, tuple| tuple.values[0].i32())?
82+
.unwrap(),
7783
Some(0)
7884
);
85+
c2_iter.done()?;
7986
drop(tx2);
8087

8188
database.ddl("drop table t1")?;

kite_sql_serde_macros/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "kite_sql_serde_macros"
3-
version = "0.2.2"
3+
version = "0.2.3"
44
edition = "2021"
55
description = "Derive macros for KiteSQL"
66
documentation = "https://docs.rs/kite_sql_serde_macros/latest/kite_sql_serde_macros/"

kite_sql_serde_macros/src/orm.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ pub(crate) fn handle(ast: DeriveInput) -> Result<TokenStream, Error> {
244244
});
245245
field_initializers.push(quote! {
246246
#field_name: ::kite_sql::orm::take_value_at::<#field_ty>(
247-
&mut tuple,
247+
tuple,
248248
#field_index_ident,
249249
#column_name_lit,
250250
)?
@@ -410,7 +410,7 @@ pub(crate) fn handle(ast: DeriveInput) -> Result<TokenStream, Error> {
410410
{
411411
fn from_query_row(
412412
schema: &::kite_sql::types::tuple::SchemaView<'_, '_>,
413-
mut tuple: ::kite_sql::types::tuple::Tuple,
413+
tuple: &mut ::kite_sql::types::tuple::Tuple,
414414
) -> ::std::result::Result<Self, ::kite_sql::errors::DatabaseError> {
415415
let mut __kite_orm_found_fields = 0usize;
416416
#(#field_index_declarations)*

kite_sql_serde_macros/src/projection.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ pub(crate) fn handle(ast: DeriveInput) -> Result<TokenStream, Error> {
8888
});
8989
field_initializers.push(quote! {
9090
#field_name: ::kite_sql::orm::take_value_at::<#field_ty>(
91-
&mut tuple,
91+
tuple,
9292
#field_index_ident,
9393
#field_name_lit,
9494
)?
@@ -121,7 +121,7 @@ pub(crate) fn handle(ast: DeriveInput) -> Result<TokenStream, Error> {
121121
{
122122
fn from_query_row(
123123
schema: &::kite_sql::types::tuple::SchemaView<'_, '_>,
124-
mut tuple: ::kite_sql::types::tuple::Tuple,
124+
tuple: &mut ::kite_sql::types::tuple::Tuple,
125125
) -> ::std::result::Result<Self, ::kite_sql::errors::DatabaseError> {
126126
let mut __kite_orm_found_fields = 0usize;
127127
#(#field_index_declarations)*

src/bin/shell.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#[cfg(not(target_arch = "wasm32"))]
1616
mod native {
1717
use comfy_table::{Cell, Table};
18-
use kite_sql::db::{BorrowResultIter, DBTransaction, DataBaseBuilder, Database};
18+
use kite_sql::db::{DBTransaction, DataBaseBuilder, Database, ResultIter};
1919
use kite_sql::errors::DatabaseError;
2020
use kite_sql::storage::rocksdb::RocksStorage;
2121
use rustyline::config::Configurer;
@@ -172,7 +172,7 @@ Transaction commands:
172172

173173
fn print_table<I>(mut iter: I) -> Result<(), DatabaseError>
174174
where
175-
I: BorrowResultIter,
175+
I: ResultIter,
176176
{
177177
let (table, schema_len, row_count) = create_table(&mut iter)?;
178178
iter.done()?;
@@ -192,7 +192,7 @@ Transaction commands:
192192

193193
fn create_table<I>(iter: &mut I) -> Result<(Table, usize, usize), DatabaseError>
194194
where
195-
I: BorrowResultIter,
195+
I: ResultIter,
196196
{
197197
let mut table = Table::new();
198198
let (header, schema_len) = iter.schema(|schema| {
@@ -209,13 +209,14 @@ Transaction commands:
209209
}
210210

211211
let mut row_count = 0usize;
212-
while let Some(tuple) = iter.next_borrowed_tuple()? {
213-
row_count += 1;
214-
let row = tuple
212+
while let Some(row) = iter.next_tuple(|_, tuple| {
213+
tuple
215214
.values
216215
.iter()
217216
.map(|value| Cell::new(format!("{value}")))
218-
.collect::<Vec<_>>();
217+
.collect::<Vec<_>>()
218+
})? {
219+
row_count += 1;
219220
table.add_row(row);
220221
}
221222

0 commit comments

Comments
 (0)