Skip to content

Commit 8491f65

Browse files
authored
refactor: remove obj_name_to_tab_ref (#989)
1 parent 5e6f340 commit 8491f65

File tree

2 files changed

+13
-43
lines changed

2 files changed

+13
-43
lines changed

src/frontend/src/instance.rs

Lines changed: 12 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ use common_query::Output;
3636
use common_recordbatch::RecordBatches;
3737
use common_telemetry::logging::{debug, info};
3838
use datafusion::sql::sqlparser::ast::ObjectName;
39-
use datafusion_common::TableReference;
4039
use datanode::instance::sql::table_idents_to_full_name;
4140
use datanode::instance::InstanceRef as DnInstanceRef;
4241
use datatypes::schema::Schema;
@@ -45,7 +44,7 @@ use meta_client::client::{MetaClient, MetaClientBuilder};
4544
use meta_client::MetaClientOpts;
4645
use partition::manager::PartitionRuleManager;
4746
use partition::route::TableRoutes;
48-
use query::query_engine::options::QueryOptions;
47+
use query::query_engine::options::{validate_catalog_and_schema, QueryOptions};
4948
use servers::error as server_error;
5049
use servers::interceptor::{SqlQueryInterceptor, SqlQueryInterceptorRef};
5150
use servers::promql::{PromqlHandler, PromqlHandlerRef};
@@ -558,64 +557,34 @@ pub fn check_permission(
558557
Statement::ShowCreateTable(_) | Statement::Alter(_) => {}
559558

560559
Statement::Insert(insert) => {
561-
let (catalog, schema, _) =
562-
table_idents_to_full_name(insert.table_name(), query_ctx.clone())
563-
.map_err(BoxedError::new)
564-
.context(ExternalSnafu)?;
565-
566-
validate_param(&catalog, &schema, query_ctx)?;
560+
validate_param(insert.table_name(), query_ctx)?;
567561
}
568562
Statement::CreateTable(stmt) => {
569-
let tab_ref = obj_name_to_tab_ref(&stmt.name)?;
570-
validate_tab_ref(tab_ref, query_ctx)?;
563+
validate_param(&stmt.name, query_ctx)?;
571564
}
572565
Statement::DropTable(drop_stmt) => {
573-
let tab_ref = obj_name_to_tab_ref(drop_stmt.table_name())?;
574-
validate_tab_ref(tab_ref, query_ctx)?;
566+
validate_param(drop_stmt.table_name(), query_ctx)?;
575567
}
576568
Statement::ShowTables(stmt) => {
577569
if let Some(database) = &stmt.database {
578-
validate_param(&query_ctx.current_catalog(), database, query_ctx)?;
570+
validate_catalog_and_schema(&query_ctx.current_catalog(), database, query_ctx)
571+
.map_err(BoxedError::new)
572+
.context(SqlExecInterceptedSnafu)?;
579573
}
580574
}
581575
Statement::DescribeTable(stmt) => {
582-
let tab_ref = obj_name_to_tab_ref(stmt.name())?;
583-
validate_tab_ref(tab_ref, query_ctx)?;
576+
validate_param(stmt.name(), query_ctx)?;
584577
}
585578
}
586579
Ok(())
587580
}
588581

589-
fn obj_name_to_tab_ref(obj: &ObjectName) -> Result<TableReference> {
590-
match &obj.0[..] {
591-
[table] => Ok(TableReference::Bare {
592-
table: &table.value,
593-
}),
594-
[schema, table] => Ok(TableReference::Partial {
595-
schema: &schema.value,
596-
table: &table.value,
597-
}),
598-
[catalog, schema, table] => Ok(TableReference::Full {
599-
catalog: &catalog.value,
600-
schema: &schema.value,
601-
table: &table.value,
602-
}),
603-
_ => error::InvalidSqlSnafu {
604-
err_msg: format!(
605-
"expect table name to be <catalog>.<schema>.<table>, <schema>.<table> or <table>, actual: {obj}",
606-
),
607-
}.fail(),
608-
}
609-
}
610-
611-
fn validate_tab_ref(tab_ref: TableReference, query_ctx: &QueryContextRef) -> Result<()> {
612-
query::query_engine::options::validate_table_references(tab_ref, query_ctx)
582+
fn validate_param(name: &ObjectName, query_ctx: &QueryContextRef) -> Result<()> {
583+
let (catalog, schema, _) = table_idents_to_full_name(name, query_ctx.clone())
613584
.map_err(BoxedError::new)
614-
.context(SqlExecInterceptedSnafu)
615-
}
585+
.context(ExternalSnafu)?;
616586

617-
fn validate_param(catalog: &str, schema: &str, query_ctx: &QueryContextRef) -> Result<()> {
618-
query::query_engine::options::validate_catalog_and_schema(catalog, schema, query_ctx)
587+
validate_catalog_and_schema(&catalog, &schema, query_ctx)
619588
.map_err(BoxedError::new)
620589
.context(SqlExecInterceptedSnafu)
621590
}

src/query/src/query_engine/options.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ pub struct QueryOptions {
2323
pub disallow_cross_schema_query: bool,
2424
}
2525

26+
// TODO(shuiyisong): remove one method after #559 is done
2627
pub fn validate_catalog_and_schema(
2728
catalog: &str,
2829
schema: &str,

0 commit comments

Comments
 (0)