Skip to content

Commit c1dc353

Browse files
authored
fix(driver): use macro_internal mod for import conflict (#194)
1 parent 73866a8 commit c1dc353

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

driver/src/lib.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,16 @@ mod rest_api;
2020
pub use conn::{Client, Connection, ConnectionInfo};
2121

2222
// pub use for convenience
23-
pub use databend_sql::error::Error;
23+
pub use databend_sql::error::{Error, Result};
2424
pub use databend_sql::rows::{
2525
QueryProgress, Row, RowIterator, RowProgressIterator, RowWithProgress,
2626
};
2727
pub use databend_sql::schema::{DataType, DecimalSize, Field, Schema, SchemaRef};
2828
pub use databend_sql::value::{NumberValue, Value};
2929

3030
pub use databend_driver_macros::TryFromRow;
31+
32+
#[doc(hidden)]
33+
pub mod _macro_internal {
34+
pub use databend_sql::_macro_internal::*;
35+
}

macros/src/from_row.rs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ pub fn from_row_derive(tokens_input: TokenStream) -> TokenStream {
2424
let struct_name = &item.ident;
2525
let (impl_generics, ty_generics, where_clause) = item.generics.split_for_impl();
2626

27+
let path = quote!(databend_driver::_macro_internal);
28+
2729
let set_fields_code = struct_fields.named.iter().map(|field| {
2830
let field_name = &field.ident;
2931
let field_type = &field.ty;
@@ -35,26 +37,21 @@ pub fn from_row_derive(tokens_input: TokenStream) -> TokenStream {
3537
.unwrap(); // vals_iter size is checked before this code is reached, so
3638
// it is safe to unwrap
3739
let t = col_value.get_type();
38-
3940
<#field_type>::try_from(col_value)
40-
.map_err(|_| Error::InvalidResponse(format!("failed converting column {} from type({:?}) to type({})", col_ix, t, std::any::type_name::<#field_type>())))?
41+
.map_err(|_| #path::Error::InvalidResponse(format!("failed converting column {} from type({:?}) to type({})", col_ix, t, std::any::type_name::<#field_type>())))?
4142
},
4243
}
4344
});
4445

4546
let fields_count = struct_fields.named.len();
4647
let generated = quote! {
47-
use databend_sql::rows::Row;
48-
use databend_sql::error::{Error, Result};
49-
50-
impl #impl_generics TryFrom<Row> for #struct_name #ty_generics #where_clause {
51-
type Error = Error;
52-
fn try_from(row: Row) -> Result<Self> {
48+
impl #impl_generics TryFrom<#path::Row> for #struct_name #ty_generics #where_clause {
49+
type Error = #path::Error;
50+
fn try_from(row: #path::Row) -> #path::Result<Self> {
5351
if #fields_count != row.len() {
54-
return Err(Error::InvalidResponse(format!("row size mismatch: expected {} columns, got {}", #fields_count, row.len())));
52+
return Err(#path::Error::InvalidResponse(format!("row size mismatch: expected {} columns, got {}", #fields_count, row.len())));
5553
}
5654
let mut vals_iter = row.into_iter().enumerate();
57-
5855
Ok(#struct_name {
5956
#(#set_fields_code)*
6057
})

0 commit comments

Comments
 (0)