Skip to content

Commit 9ecb180

Browse files
committed
feat(cubesql): Support inet_server_addr stub
1 parent 1765bc7 commit 9ecb180

File tree

3 files changed

+56
-15
lines changed

3 files changed

+56
-15
lines changed

rust/cubesql/cubesql/src/compile/engine/udf.rs

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3393,6 +3393,24 @@ pub fn create_udtf_stub(
33933393
)
33943394
}
33953395

3396+
pub fn create_inet_server_addr_udf() -> ScalarUDF {
3397+
let fun = make_scalar_function(move |_: &[ArrayRef]| {
3398+
let mut builder = StringBuilder::new(1);
3399+
builder.append_value("127.0.0.1/32").unwrap();
3400+
3401+
Ok(Arc::new(builder.finish()) as ArrayRef)
3402+
});
3403+
3404+
let return_type: ReturnTypeFunction = Arc::new(move |_| Ok(Arc::new(DataType::Utf8)));
3405+
3406+
ScalarUDF::new(
3407+
"inet_server_addr",
3408+
&Signature::exact(vec![], Volatility::Immutable),
3409+
&return_type,
3410+
&fun,
3411+
)
3412+
}
3413+
33963414
pub fn register_fun_stubs(mut ctx: SessionContext) -> SessionContext {
33973415
macro_rules! register_fun_stub {
33983416
($FTYP:ident, $NAME:expr, argc=$ARGC:expr $(, rettyp=$RETTYP:ident)? $(, vol=$VOL:ident)?) => {
@@ -3797,13 +3815,6 @@ pub fn register_fun_stubs(mut ctx: SessionContext) -> SessionContext {
37973815
rettyp = Int32,
37983816
vol = Stable
37993817
);
3800-
register_fun_stub!(
3801-
udf,
3802-
"inet_server_addr",
3803-
argc = 0,
3804-
rettyp = Utf8,
3805-
vol = Stable
3806-
);
38073818
register_fun_stub!(
38083819
udf,
38093820
"inet_server_port",

rust/cubesql/cubesql/src/compile/mod.rs

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,14 @@ use self::{
5151
create_date_udf, create_dateadd_udf, create_datediff_udf, create_dayofmonth_udf,
5252
create_dayofweek_udf, create_dayofyear_udf, create_db_udf, create_ends_with_udf,
5353
create_format_type_udf, create_generate_series_udtf, create_generate_subscripts_udtf,
54-
create_has_schema_privilege_udf, create_hour_udf, create_if_udf, create_instr_udf,
55-
create_interval_mul_udf, create_isnull_udf, create_json_build_object_udf,
56-
create_least_udf, create_locate_udf, create_makedate_udf, create_measure_udaf,
57-
create_minute_udf, create_pg_backend_pid_udf, create_pg_datetime_precision_udf,
58-
create_pg_encoding_to_char_udf, create_pg_expandarray_udtf,
59-
create_pg_get_constraintdef_udf, create_pg_get_expr_udf, create_pg_get_indexdef_udf,
60-
create_pg_get_serial_sequence_udf, create_pg_get_userbyid_udf,
61-
create_pg_is_other_temp_schema, create_pg_my_temp_schema,
54+
create_has_schema_privilege_udf, create_hour_udf, create_if_udf,
55+
create_inet_server_addr_udf, create_instr_udf, create_interval_mul_udf,
56+
create_isnull_udf, create_json_build_object_udf, create_least_udf, create_locate_udf,
57+
create_makedate_udf, create_measure_udaf, create_minute_udf, create_pg_backend_pid_udf,
58+
create_pg_datetime_precision_udf, create_pg_encoding_to_char_udf,
59+
create_pg_expandarray_udtf, create_pg_get_constraintdef_udf, create_pg_get_expr_udf,
60+
create_pg_get_indexdef_udf, create_pg_get_serial_sequence_udf,
61+
create_pg_get_userbyid_udf, create_pg_is_other_temp_schema, create_pg_my_temp_schema,
6262
create_pg_numeric_precision_udf, create_pg_numeric_scale_udf,
6363
create_pg_table_is_visible_udf, create_pg_total_relation_size_udf,
6464
create_pg_truetypid_udf, create_pg_truetypmod_udf, create_pg_type_is_visible_udf,
@@ -1192,6 +1192,7 @@ WHERE `TABLE_SCHEMA` = '{}'",
11921192
ctx.register_udf(create_charindex_udf());
11931193
ctx.register_udf(create_to_regtype_udf());
11941194
ctx.register_udf(create_pg_get_indexdef_udf());
1195+
ctx.register_udf(create_inet_server_addr_udf());
11951196

11961197
// udaf
11971198
ctx.register_udaf(create_measure_udaf());
@@ -18870,4 +18871,24 @@ ORDER BY \"COUNT(count)\" DESC"
1887018871

1887118872
Ok(())
1887218873
}
18874+
18875+
#[tokio::test]
18876+
async fn test_zoho_inet_server_addr() -> Result<(), CubeError> {
18877+
insta::assert_snapshot!(
18878+
"zoho_inet_server_addr",
18879+
execute_query(
18880+
"
18881+
select
18882+
pg_backend_pid(),
18883+
coalesce(cast(inet_server_addr() as text ),'addr'),
18884+
current_database()
18885+
;"
18886+
.to_string(),
18887+
DatabaseProtocol::PostgreSQL,
18888+
)
18889+
.await?
18890+
);
18891+
18892+
Ok(())
18893+
}
1887318894
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
source: cubesql/src/compile/mod.rs
3+
expression: "execute_query(\"\n select\n pg_backend_pid(),\n coalesce(cast(inet_server_addr() as text ),'addr'),\n current_database()\n ;\".to_string(),\n DatabaseProtocol::PostgreSQL).await?"
4+
---
5+
+------------------+---------------------------------------------------------+--------------------+
6+
| pg_backend_pid() | coalesce(CAST(inet_server_addr() AS Utf8),Utf8("addr")) | current_database() |
7+
+------------------+---------------------------------------------------------+--------------------+
8+
| 1 | 127.0.0.1/32 | cubedb |
9+
+------------------+---------------------------------------------------------+--------------------+

0 commit comments

Comments
 (0)