Skip to content

Commit dac261a

Browse files
authored
refactor: use Tenat in VirtualColumnNameIdent (#15135)
refactor: use Tenat in VirtualColumnNameIdent and ListVirtualColumnsReq
1 parent e48ca07 commit dac261a

File tree

11 files changed

+43
-87
lines changed

11 files changed

+43
-87
lines changed

src/meta/api/src/schema_api_impl.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,7 +1276,8 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
12761276
req.name_ident.table_id,
12771277
format!(
12781278
"create virtual column with tenant: {} table_id: {}",
1279-
req.name_ident.tenant, req.name_ident.table_id
1279+
req.name_ident.tenant.name(),
1280+
req.name_ident.table_id
12801281
),
12811282
),
12821283
)));
@@ -1459,10 +1460,7 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
14591460
debug!(req :? =(&req); "SchemaApi: {}", func_name!());
14601461

14611462
if let Some(table_id) = req.table_id {
1462-
let name_ident = VirtualColumnNameIdent {
1463-
tenant: req.tenant.clone(),
1464-
table_id,
1465-
};
1463+
let name_ident = VirtualColumnNameIdent::new(&req.tenant, table_id);
14661464
let (_, virtual_column_opt): (_, Option<VirtualColumnMeta>) =
14671465
get_pb_value(self, &name_ident).await?;
14681466

@@ -1475,7 +1473,7 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
14751473

14761474
// Get virtual columns list by `prefix_list` "<prefix>/<tenant>"
14771475
let prefix_key = kvapi::KeyBuilder::new_prefixed(VirtualColumnNameIdent::PREFIX)
1478-
.push_str(&req.tenant)
1476+
.push_str(req.tenant.name())
14791477
.done();
14801478

14811479
let list = self.prefix_list_kv(&prefix_key).await?;

src/meta/api/src/schema_api_test_suite.rs

Lines changed: 11 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -6191,9 +6191,10 @@ impl SchemaApiTestSuite {
61916191
#[minitrace::trace]
61926192
async fn virtual_column_create_list_drop<MT>(&self, mt: &MT) -> anyhow::Result<()>
61936193
where MT: SchemaApi + kvapi::AsKVApi<Error = MetaError> {
6194-
let tenant = "tenant1";
6194+
let tenant_name = "tenant1";
6195+
let tenant = Tenant::new_literal(tenant_name);
61956196

6196-
let mut util = Util::new(mt, tenant, "db1", "tb1", "eng1");
6197+
let mut util = Util::new(mt, tenant_name, "db1", "tb1", "eng1");
61976198
let table_id;
61986199

61996200
info!("--- prepare db and table");
@@ -6203,17 +6204,11 @@ impl SchemaApiTestSuite {
62036204
table_id = tid;
62046205
}
62056206

6206-
let name_ident = VirtualColumnNameIdent {
6207-
tenant: tenant.to_string(),
6208-
table_id,
6209-
};
6207+
let name_ident = VirtualColumnNameIdent::new(&tenant, table_id);
62106208

62116209
{
62126210
info!("--- list virtual columns with no create before");
6213-
let req = ListVirtualColumnsReq {
6214-
tenant: tenant.to_string(),
6215-
table_id: Some(table_id),
6216-
};
6211+
let req = ListVirtualColumnsReq::new(&tenant, Some(table_id));
62176212

62186213
let res = mt.list_virtual_columns(req).await?;
62196214
assert!(res.is_empty())
@@ -6242,10 +6237,7 @@ impl SchemaApiTestSuite {
62426237

62436238
{
62446239
info!("--- list virtual columns");
6245-
let req = ListVirtualColumnsReq {
6246-
tenant: tenant.to_string(),
6247-
table_id: Some(table_id),
6248-
};
6240+
let req = ListVirtualColumnsReq::new(&tenant, Some(table_id));
62496241

62506242
let res = mt.list_virtual_columns(req).await?;
62516243
assert_eq!(1, res.len());
@@ -6254,10 +6246,7 @@ impl SchemaApiTestSuite {
62546246
"variant[1]".to_string(),
62556247
]);
62566248

6257-
let req = ListVirtualColumnsReq {
6258-
tenant: tenant.to_string(),
6259-
table_id: Some(u64::MAX),
6260-
};
6249+
let req = ListVirtualColumnsReq::new(&tenant, Some(u64::MAX));
62616250

62626251
let res = mt.list_virtual_columns(req).await?;
62636252
assert!(res.is_empty())
@@ -6276,10 +6265,7 @@ impl SchemaApiTestSuite {
62766265

62776266
{
62786267
info!("--- list virtual columns after update");
6279-
let req = ListVirtualColumnsReq {
6280-
tenant: tenant.to_string(),
6281-
table_id: Some(table_id),
6282-
};
6268+
let req = ListVirtualColumnsReq::new(&tenant, Some(table_id));
62836269

62846270
let res = mt.list_virtual_columns(req).await?;
62856271
assert_eq!(1, res.len());
@@ -6301,10 +6287,7 @@ impl SchemaApiTestSuite {
63016287

63026288
{
63036289
info!("--- list virtual columns after drop");
6304-
let req = ListVirtualColumnsReq {
6305-
tenant: tenant.to_string(),
6306-
table_id: Some(table_id),
6307-
};
6290+
let req = ListVirtualColumnsReq::new(&tenant, Some(table_id));
63086291

63096292
let res = mt.list_virtual_columns(req).await?;
63106293
assert_eq!(0, res.len());
@@ -6332,10 +6315,7 @@ impl SchemaApiTestSuite {
63326315

63336316
let _res = mt.create_virtual_column(req.clone()).await?;
63346317

6335-
let req = ListVirtualColumnsReq {
6336-
tenant: tenant.to_string(),
6337-
table_id: Some(table_id),
6338-
};
6318+
let req = ListVirtualColumnsReq::new(&tenant, Some(table_id));
63396319

63406320
let res = mt.list_virtual_columns(req).await?;
63416321
assert_eq!(1, res.len());
@@ -6352,10 +6332,7 @@ impl SchemaApiTestSuite {
63526332

63536333
let _res = mt.create_virtual_column(req.clone()).await?;
63546334

6355-
let req = ListVirtualColumnsReq {
6356-
tenant: tenant.to_string(),
6357-
table_id: Some(table_id),
6358-
};
6335+
let req = ListVirtualColumnsReq::new(&tenant, Some(table_id));
63596336

63606337
let res = mt.list_virtual_columns(req).await?;
63616338
assert_eq!(1, res.len());

src/meta/api/src/util.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1231,7 +1231,8 @@ pub async fn get_virtual_column_by_id_or_err(
12311231
name_ident.table_id,
12321232
format!(
12331233
"get virtual column with tenant: {} table_id: {}",
1234-
name_ident.tenant, name_ident.table_id
1234+
name_ident.tenant.name(),
1235+
name_ident.table_id
12351236
),
12361237
),
12371238
)));

src/meta/app/src/schema/virtual_column.rs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,19 @@ use chrono::Utc;
2121
use databend_common_meta_types::MetaId;
2222

2323
use super::CreateOption;
24+
use crate::tenant::Tenant;
25+
use crate::tenant::ToTenant;
2426

25-
#[derive(Clone, Debug, Eq, PartialEq, Default)]
27+
#[derive(Clone, Debug, Eq, PartialEq)]
2628
pub struct VirtualColumnNameIdent {
27-
pub tenant: String,
29+
pub tenant: Tenant,
2830
pub table_id: u64,
2931
}
3032

3133
impl VirtualColumnNameIdent {
32-
pub fn new(tenant: impl Into<String>, table_id: impl Into<u64>) -> VirtualColumnNameIdent {
34+
pub fn new(tenant: impl ToTenant, table_id: impl Into<u64>) -> VirtualColumnNameIdent {
3335
VirtualColumnNameIdent {
34-
tenant: tenant.into(),
36+
tenant: tenant.to_tenant(),
3537
table_id: table_id.into(),
3638
}
3739
}
@@ -43,7 +45,7 @@ impl VirtualColumnNameIdent {
4345

4446
impl Display for VirtualColumnNameIdent {
4547
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
46-
write!(f, "'{}'/{}", self.tenant, self.table_id)
48+
write!(f, "'{}'/{}", self.tenant.name(), self.table_id)
4749
}
4850
}
4951

@@ -111,16 +113,16 @@ impl Display for DropVirtualColumnReq {
111113
#[derive(serde::Serialize, serde::Deserialize, Clone, Debug, PartialEq, Eq)]
112114
pub struct DropVirtualColumnReply {}
113115

114-
#[derive(serde::Serialize, serde::Deserialize, Clone, Debug, PartialEq, Eq)]
116+
#[derive(Clone, Debug, PartialEq, Eq)]
115117
pub struct ListVirtualColumnsReq {
116-
pub tenant: String,
118+
pub tenant: Tenant,
117119
pub table_id: Option<MetaId>,
118120
}
119121

120122
impl ListVirtualColumnsReq {
121-
pub fn new(tenant: impl Into<String>, table_id: Option<MetaId>) -> ListVirtualColumnsReq {
123+
pub fn new(tenant: impl ToTenant, table_id: Option<MetaId>) -> ListVirtualColumnsReq {
122124
ListVirtualColumnsReq {
123-
tenant: tenant.into(),
125+
tenant: tenant.to_tenant(),
124126
table_id,
125127
}
126128
}
@@ -141,23 +143,25 @@ mod kvapi_key_impl {
141143

142144
/// It belongs to a tenant
143145
fn parent(&self) -> Option<String> {
144-
Some(Tenant::new(&self.tenant).to_string_key())
146+
Some(self.tenant.to_string_key())
145147
}
146148

147149
fn to_string_key(&self) -> String {
148150
kvapi::KeyBuilder::new_prefixed(Self::PREFIX)
149-
.push_str(&self.tenant)
151+
.push_str(self.tenant.name())
150152
.push_u64(self.table_id)
151153
.done()
152154
}
153155

154156
fn from_str_key(s: &str) -> Result<Self, kvapi::KeyError> {
155157
let mut p = kvapi::KeyParser::new_prefixed(s, Self::PREFIX)?;
156158

157-
let tenant = p.next_str()?;
159+
let tenant = p.next_nonempty()?;
158160
let table_id = p.next_u64()?;
159161
p.done()?;
160162

163+
let tenant = Tenant::new_nonempty(tenant);
164+
161165
Ok(VirtualColumnNameIdent { tenant, table_id })
162166
}
163167
}

src/query/service/src/interpreters/hook/refresh_hook.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -301,12 +301,8 @@ async fn generate_refresh_virtual_column_plan(
301301
.get_table(&desc.catalog, &desc.database, &desc.table)
302302
.await?;
303303
let catalog = ctx.get_catalog(&desc.catalog).await?;
304-
let res = catalog
305-
.list_virtual_columns(ListVirtualColumnsReq {
306-
tenant: ctx.get_tenant().name().to_string(),
307-
table_id: Some(table_info.get_id()),
308-
})
309-
.await?;
304+
let req = ListVirtualColumnsReq::new(ctx.get_tenant(), Some(table_info.get_id()));
305+
let res = catalog.list_virtual_columns(req).await?;
310306

311307
if res.is_empty() || res[0].virtual_columns.is_empty() {
312308
return Ok(None);

src/query/service/src/interpreters/interpreter_virtual_column_alter.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,7 @@ impl Interpreter for AlterVirtualColumnInterpreter {
7373

7474
let update_virtual_column_req = UpdateVirtualColumnReq {
7575
if_exists: self.plan.if_exists,
76-
name_ident: VirtualColumnNameIdent {
77-
tenant: tenant.name().to_string(),
78-
table_id,
79-
},
76+
name_ident: VirtualColumnNameIdent::new(&tenant, table_id),
8077
virtual_columns: self.plan.virtual_columns.clone(),
8178
};
8279

src/query/service/src/interpreters/interpreter_virtual_column_create.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,7 @@ impl Interpreter for CreateVirtualColumnInterpreter {
7373

7474
let create_virtual_column_req = CreateVirtualColumnReq {
7575
create_option: self.plan.create_option,
76-
name_ident: VirtualColumnNameIdent {
77-
tenant: tenant.name().to_string(),
78-
table_id,
79-
},
76+
name_ident: VirtualColumnNameIdent::new(tenant, table_id),
8077
virtual_columns: self.plan.virtual_columns.clone(),
8178
};
8279

src/query/service/src/interpreters/interpreter_virtual_column_drop.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,7 @@ impl Interpreter for DropVirtualColumnInterpreter {
7373

7474
let drop_virtual_column_req = DropVirtualColumnReq {
7575
if_exists: self.plan.if_exists,
76-
name_ident: VirtualColumnNameIdent {
77-
tenant: tenant.name().to_string(),
78-
table_id,
79-
},
76+
name_ident: VirtualColumnNameIdent::new(tenant, table_id),
8077
};
8178

8279
let handler = get_virtual_column_handler();

src/query/sql/src/planner/binder/ddl/virtual_column.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,12 +166,8 @@ impl Binder {
166166
let table_info = self.ctx.get_table(&catalog, &database, &table).await?;
167167

168168
let catalog_info = self.ctx.get_catalog(&catalog).await?;
169-
let res = catalog_info
170-
.list_virtual_columns(ListVirtualColumnsReq {
171-
tenant: self.ctx.get_tenant().name().to_string(),
172-
table_id: Some(table_info.get_id()),
173-
})
174-
.await?;
169+
let req = ListVirtualColumnsReq::new(self.ctx.get_tenant(), Some(table_info.get_id()));
170+
let res = catalog_info.list_virtual_columns(req).await?;
175171

176172
let virtual_columns = if res.is_empty() {
177173
vec![]

src/query/sql/src/planner/semantic/virtual_column_rewriter.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,7 @@ impl VirtualColumnRewriter {
9393
}
9494

9595
let table_id = table.get_id();
96-
let req = ListVirtualColumnsReq {
97-
tenant: self.ctx.get_tenant().name().to_string(),
98-
table_id: Some(table_id),
99-
};
96+
let req = ListVirtualColumnsReq::new(&self.ctx.get_tenant(), Some(table_id));
10097
let catalog = self.ctx.get_catalog(table_entry.catalog()).await?;
10198

10299
if let Ok(virtual_column_metas) = catalog.list_virtual_columns(req).await {

0 commit comments

Comments
 (0)