Skip to content

Commit b1aad9c

Browse files
committed
sql utils
1 parent 01895f1 commit b1aad9c

File tree

8 files changed

+36
-1
lines changed

8 files changed

+36
-1
lines changed

packages/cubejs-schema-compiler/src/adapter/BaseQuery.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3809,6 +3809,12 @@ export class BaseQuery {
38093809
return this.contextSymbolsProxy(this.contextSymbols.securityContext);
38103810
}
38113811

3812+
sqlUtilsForRust() {
3813+
return {
3814+
convertTz: this.convertTz.bind(this)
3815+
};
3816+
}
3817+
38123818
contextSymbolsProxy(symbols) {
38133819
return BaseQuery.contextSymbolsProxyFrom(symbols, this.paramAllocator.allocateParam.bind(this.paramAllocator));
38143820
}

packages/cubejs-schema-compiler/src/compiler/CubeSymbols.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -618,7 +618,11 @@ export class CubeSymbols {
618618
return Object.assign({
619619
filterParams: this.filtersProxyDep(),
620620
filterGroup: this.filterGroupFunctionDep(),
621-
securityContext: BaseQuery.contextSymbolsProxyFrom({}, (param) => param)
621+
securityContext: BaseQuery.contextSymbolsProxyFrom({}, (param) => param),
622+
sqlUtils: {
623+
convertTz: (f) => f
624+
625+
},
622626
});
623627
}
624628

rust/cubesqlplanner/cubesqlplanner/src/cube_bridge/base_tools.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use super::filter_params::{FilterParams, NativeFilterParams};
33
use super::member_sql::{MemberSql, NativeMemberSql};
44
use super::security_context::{NativeSecurityContext, SecurityContext};
55
use super::sql_templates_render::{NativeSqlTemplatesRender, SqlTemplatesRender};
6+
use super::sql_utils::{NativeSqlUtils, SqlUtils};
67
use cubenativeutils::wrappers::serializer::{
78
NativeDeserialize, NativeDeserializer, NativeSerialize,
89
};
@@ -34,6 +35,7 @@ pub trait BaseTools {
3435
sql: Rc<dyn MemberSql>,
3536
) -> Result<Vec<CallDep>, CubeError>;
3637
fn security_context_for_rust(&self) -> Result<Rc<dyn SecurityContext>, CubeError>;
38+
fn sql_utils_for_rust(&self) -> Result<Rc<dyn SqlUtils>, CubeError>;
3739
fn filters_proxy(&self) -> Result<Rc<dyn FilterParams>, CubeError>;
3840
fn filter_group_function(&self) -> Result<Rc<dyn FilterGroup>, CubeError>;
3941
fn timestamp_precision(&self) -> Result<u32, CubeError>;

rust/cubesqlplanner/cubesqlplanner/src/cube_bridge/member_sql.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use super::{
22
filter_group::{FilterGroup, NativeFilterGroup},
33
filter_params::{FilterParams, NativeFilterParams},
44
security_context::{NativeSecurityContext, SecurityContext},
5+
sql_utils::{NativeSqlUtils, SqlUtils},
56
};
67
use cubenativeutils::wrappers::inner_types::InnerTypes;
78
use cubenativeutils::wrappers::object::{NativeFunction, NativeStruct, NativeType};
@@ -24,6 +25,7 @@ pub struct MemberSqlStruct {
2425

2526
pub enum ContextSymbolArg {
2627
SecurityContext(Rc<dyn SecurityContext>),
28+
SqlUtils(Rc<dyn SqlUtils>),
2729
FilterParams(Rc<dyn FilterParams>),
2830
FilterGroup(Rc<dyn FilterGroup>),
2931
}
@@ -115,6 +117,12 @@ impl<IT: InnerTypes> NativeSerialize<IT> for MemberSqlArg {
115117
.downcast::<NativeSecurityContext<IT>>()
116118
.unwrap()
117119
.to_native(context_holder.clone()),
120+
ContextSymbolArg::SqlUtils(context) => context
121+
.clone()
122+
.as_any()
123+
.downcast::<NativeSqlUtils<IT>>()
124+
.unwrap()
125+
.to_native(context_holder.clone()),
118126
ContextSymbolArg::FilterParams(params) => params
119127
.clone()
120128
.as_any()

rust/cubesqlplanner/cubesqlplanner/src/cube_bridge/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ pub mod member_sql;
2020
pub mod options_member;
2121
pub mod security_context;
2222
pub mod sql_templates_render;
23+
pub mod sql_utils;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
use cubenativeutils::wrappers::serializer::{NativeDeserialize, NativeSerialize};
2+
use cubenativeutils::wrappers::NativeContextHolder;
3+
use cubenativeutils::wrappers::NativeObjectHandle;
4+
use cubenativeutils::CubeError;
5+
use std::any::Any;
6+
use std::rc::Rc;
7+
8+
#[nativebridge::native_bridge]
9+
pub trait SqlUtils {}

rust/cubesqlplanner/cubesqlplanner/src/planner/sql_evaluator/dependecy.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ pub enum ContextSymbolDep {
4141
SecurityContext,
4242
FilterParams,
4343
FilterGroup,
44+
SqlUtils,
4445
}
4546

4647
#[derive(Clone)]
@@ -168,6 +169,7 @@ impl<'a> DependenciesBuilder<'a> {
168169
ContextSymbolDep::FilterParams,
169170
)),
170171
"FILTER_GROUP" => Some(Dependency::ContextDependency(ContextSymbolDep::FilterGroup)),
172+
"SQL_UTILS" => Some(Dependency::ContextDependency(ContextSymbolDep::SqlUtils)),
171173
_ => None,
172174
}
173175
}

rust/cubesqlplanner/cubesqlplanner/src/planner/sql_evaluator/sql_call.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,9 @@ impl SqlCall {
223223
ContextSymbolDep::FilterGroup => MemberSqlArg::ContextSymbol(
224224
ContextSymbolArg::FilterGroup(query_tools.base_tools().filter_group_function()?),
225225
),
226+
ContextSymbolDep::SqlUtils => MemberSqlArg::ContextSymbol(ContextSymbolArg::SqlUtils(
227+
query_tools.base_tools().sql_utils_for_rust()?,
228+
)),
226229
};
227230
Ok(res)
228231
}

0 commit comments

Comments
 (0)