Skip to content

Commit 5adf650

Browse files
committed
PERFORMANCE
1 parent 7f105a9 commit 5adf650

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

src/lib.rs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -598,9 +598,10 @@ impl Statement {
598598
Ok::<_, napi::Error>(rows)
599599
};
600600
env.execute_tokio_future(future, move |&mut _env, result| {
601-
let mut column_names = vec![];
601+
let mut column_names = Vec::new();
602602
for i in 0..result.column_count() {
603-
column_names.push(result.column_name(i).unwrap().to_string());
603+
let column_name = result.column_name(i).unwrap().to_string();
604+
column_names.push(std::ffi::CString::new(column_name).unwrap());
604605
}
605606
let iter = RowsIterator::new(
606607
Arc::new(tokio::sync::Mutex::new(result)),
@@ -632,9 +633,9 @@ impl Statement {
632633
params
633634
};
634635
let rows = stmt.query(params).await.map_err(Error::from)?;
635-
let mut column_names = vec![];
636+
let mut column_names = Vec::new();
636637
for i in 0..rows.column_count() {
637-
column_names.push(rows.column_name(i).unwrap().to_string());
638+
column_names.push(std::ffi::CString::new(rows.column_name(i).unwrap().to_string()).unwrap());
638639
}
639640
Ok::<_, napi::Error>((rows, column_names))
640641
};
@@ -723,9 +724,9 @@ impl Statement {
723724
libsql::params::Params::None
724725
};
725726
let mut rows = stmt.query(params).await.map_err(Error::from)?;
726-
let mut column_names = vec![];
727+
let mut column_names = Vec::new();
727728
for i in 0..rows.column_count() {
728-
column_names.push(rows.column_name(i).unwrap().to_string());
729+
column_names.push(std::ffi::CString::new(rows.column_name(i).unwrap().to_string()).unwrap());
729730
}
730731
let row = rows.next().await.map_err(Error::from)?;
731732
let duration = start.elapsed().as_secs_f64();
@@ -776,7 +777,7 @@ impl Statement {
776777
#[napi]
777778
pub struct RowsIterator {
778779
rows: Arc<tokio::sync::Mutex<libsql::Rows>>,
779-
column_names: Vec<String>,
780+
column_names: Vec<std::ffi::CString>,
780781
safe_ints: bool,
781782
raw: bool,
782783
pluck: bool,
@@ -786,7 +787,7 @@ pub struct RowsIterator {
786787
impl RowsIterator {
787788
pub fn new(
788789
rows: Arc<tokio::sync::Mutex<libsql::Rows>>,
789-
column_names: Vec<String>,
790+
column_names: Vec<std::ffi::CString>,
790791
safe_ints: bool,
791792
raw: bool,
792793
pluck: bool,
@@ -831,7 +832,7 @@ impl RowsIterator {
831832

832833
#[napi]
833834
pub struct Record {
834-
column_names: Vec<String>,
835+
column_names: Vec<std::ffi::CString>,
835836
row: Option<libsql::Row>,
836837
safe_ints: bool,
837838
raw: bool,
@@ -864,7 +865,7 @@ fn runtime() -> Result<&'static Runtime> {
864865

865866
fn map_row(
866867
env: &Env,
867-
column_names: &[String],
868+
column_names: &[std::ffi::CString],
868869
row: &libsql::Row,
869870
safe_ints: bool,
870871
raw: bool,
@@ -900,7 +901,7 @@ fn convert_value_to_js(
900901

901902
fn map_row_object(
902903
env: &Env,
903-
column_names: &[String],
904+
column_names: &[std::ffi::CString],
904905
row: &libsql::Row,
905906
safe_ints: bool,
906907
pluck: bool,
@@ -927,9 +928,8 @@ fn map_row_object(
927928
Err(e) => return Err(napi::Error::from_reason(e.to_string())),
928929
};
929930

930-
let column_name = column_names[idx].as_str();
931+
let column_name = &column_names[idx];
931932
let js_value = convert_value_to_js(env, &value, safe_ints)?;
932-
let column_name = std::ffi::CString::new(column_name).unwrap();
933933
unsafe {
934934
napi::sys::napi_set_named_property(
935935
env.raw(),
@@ -947,7 +947,7 @@ fn map_row_object(
947947

948948
fn map_row_raw(
949949
env: &Env,
950-
column_names: &[String],
950+
column_names: &[std::ffi::CString],
951951
row: &libsql::Row,
952952
safe_ints: bool,
953953
pluck: bool,

0 commit comments

Comments
 (0)