Skip to content

Commit e5efdb7

Browse files
authored
refactor: use TIdent to unify kvapi key def for MaskPolicyTableIdListIdent and DataMaskNameIdent (#15123)
* refactor: use map_res() to emit an sql error * refactor: use TIdent to unify kvapi key def for MaskPolicyTableIdListIdent and DataMaskNameIdent - Part of #14719
1 parent 9c5f249 commit e5efdb7

File tree

17 files changed

+242
-253
lines changed

17 files changed

+242
-253
lines changed

src/meta/api/src/data_mask_api_impl.rs

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ use databend_common_meta_app::app_error::DatamaskAlreadyExists;
1919
use databend_common_meta_app::app_error::UnknownDatamask;
2020
use databend_common_meta_app::data_mask::CreateDatamaskReply;
2121
use databend_common_meta_app::data_mask::CreateDatamaskReq;
22+
use databend_common_meta_app::data_mask::DataMaskNameIdent;
2223
use databend_common_meta_app::data_mask::DatamaskId;
2324
use databend_common_meta_app::data_mask::DatamaskMeta;
24-
use databend_common_meta_app::data_mask::DatamaskNameIdent;
2525
use databend_common_meta_app::data_mask::DropDatamaskReply;
2626
use databend_common_meta_app::data_mask::DropDatamaskReq;
2727
use databend_common_meta_app::data_mask::GetDatamaskReply;
2828
use databend_common_meta_app::data_mask::GetDatamaskReq;
29+
use databend_common_meta_app::data_mask::MaskPolicyTableIdListIdent;
2930
use databend_common_meta_app::data_mask::MaskpolicyTableIdList;
30-
use databend_common_meta_app::data_mask::MaskpolicyTableIdListKey;
3131
use databend_common_meta_app::id_generator::IdGenerator;
3232
use databend_common_meta_app::schema::CreateOption;
3333
use databend_common_meta_app::schema::TableId;
@@ -82,8 +82,8 @@ impl<KV: kvapi::KVApi<Error = MetaError>> DatamaskApi for KV {
8282
CreateOption::Create => {
8383
return Err(KVAppError::AppError(AppError::DatamaskAlreadyExists(
8484
DatamaskAlreadyExists::new(
85-
&name_key.name,
86-
format!("create data mask: {}", req.name),
85+
name_key.name(),
86+
format!("create data mask: {}", req.name.display()),
8787
),
8888
)));
8989
}
@@ -110,10 +110,7 @@ impl<KV: kvapi::KVApi<Error = MetaError>> DatamaskApi for KV {
110110

111111
let id = fetch_id(self, IdGenerator::data_mask_id()).await?;
112112
let id_key = DatamaskId { id };
113-
let id_list_key = MaskpolicyTableIdListKey {
114-
tenant: name_key.tenant.clone(),
115-
name: name_key.name.clone(),
116-
};
113+
let id_list_key = MaskPolicyTableIdListIdent::new_from(name_key.clone());
117114

118115
debug!(
119116
id :? =(&id_key),
@@ -202,8 +199,12 @@ impl<KV: kvapi::KVApi<Error = MetaError>> DatamaskApi for KV {
202199

203200
let name_key = &req.name;
204201

205-
let (_id_seq, _id, _data_mask_seq, policy) =
206-
get_data_mask_or_err(self, name_key, format!("drop_data_mask: {}", name_key)).await?;
202+
let (_id_seq, _id, _data_mask_seq, policy) = get_data_mask_or_err(
203+
self,
204+
name_key,
205+
format!("drop_data_mask: {}", name_key.display()),
206+
)
207+
.await?;
207208

208209
Ok(GetDatamaskReply { policy })
209210
}
@@ -212,7 +213,7 @@ impl<KV: kvapi::KVApi<Error = MetaError>> DatamaskApi for KV {
212213
/// Returns (id_seq, id, data_mask_seq, data_mask)
213214
async fn get_data_mask_or_err(
214215
kv_api: &(impl kvapi::KVApi<Error = MetaError> + ?Sized),
215-
name_key: &DatamaskNameIdent,
216+
name_key: &DataMaskNameIdent,
216217
msg: impl Display,
217218
) -> Result<(u64, u64, u64, DatamaskMeta), KVAppError> {
218219
let (id_seq, id) = get_u64_value(kv_api, name_key).await?;
@@ -237,14 +238,14 @@ async fn get_data_mask_or_err(
237238
/// Otherwise returns UnknownDatamask error
238239
pub fn data_mask_has_to_exist(
239240
seq: u64,
240-
name_ident: &DatamaskNameIdent,
241+
name_ident: &DataMaskNameIdent,
241242
msg: impl Display,
242243
) -> Result<(), KVAppError> {
243244
if seq == 0 {
244245
debug!(seq = seq, name_ident :? =(name_ident); "data mask does not exist");
245246

246247
Err(KVAppError::AppError(AppError::UnknownDatamask(
247-
UnknownDatamask::new(&name_ident.name, format!("{}: {}", msg, name_ident)),
248+
UnknownDatamask::new(name_ident.name(), format!("{}: {}", msg, name_ident.name())),
248249
)))
249250
} else {
250251
Ok(())
@@ -253,14 +254,12 @@ pub fn data_mask_has_to_exist(
253254

254255
async fn clear_table_column_mask_policy(
255256
kv_api: &(impl kvapi::KVApi<Error = MetaError> + ?Sized),
256-
name_ident: &DatamaskNameIdent,
257+
name_ident: &DataMaskNameIdent,
257258
condition: &mut Vec<TxnCondition>,
258259
if_then: &mut Vec<TxnOp>,
259260
) -> Result<(), KVAppError> {
260-
let id_list_key = MaskpolicyTableIdListKey {
261-
tenant: name_ident.tenant.clone(),
262-
name: name_ident.name.clone(),
263-
};
261+
let id_list_key = MaskPolicyTableIdListIdent::new_from(name_ident.clone());
262+
264263
let (id_list_seq, id_list_opt): (_, Option<MaskpolicyTableIdList>) =
265264
get_pb_value(kv_api, &id_list_key).await?;
266265
if let Some(id_list) = id_list_opt {
@@ -277,7 +276,7 @@ async fn clear_table_column_mask_policy(
277276
if let Some(column_mask_policy) = table_meta.column_mask_policy {
278277
let new_column_mask_policy = column_mask_policy
279278
.into_iter()
280-
.filter(|(_, name)| name != &name_ident.name)
279+
.filter(|(_, name)| name != name_ident.name())
281280
.collect();
282281

283282
table_meta.column_mask_policy = Some(new_column_mask_policy);
@@ -294,15 +293,19 @@ async fn clear_table_column_mask_policy(
294293

295294
async fn construct_drop_mask_policy_operations(
296295
kv_api: &(impl kvapi::KVApi<Error = MetaError> + ?Sized),
297-
name_key: &DatamaskNameIdent,
296+
name_key: &DataMaskNameIdent,
298297
drop_if_exists: bool,
299298
if_delete: bool,
300299
ctx: &str,
301300
condition: &mut Vec<TxnCondition>,
302301
if_then: &mut Vec<TxnOp>,
303302
) -> Result<(), KVAppError> {
304-
let result =
305-
get_data_mask_or_err(kv_api, name_key, format!("drop_data_mask: {}", name_key)).await;
303+
let result = get_data_mask_or_err(
304+
kv_api,
305+
name_key,
306+
format!("drop_data_mask: {}", name_key.display()),
307+
)
308+
.await;
306309

307310
let (id_seq, id, data_mask_seq, _) = match result {
308311
Ok((id_seq, id, data_mask_seq, meta)) => (id_seq, id, data_mask_seq, meta),

src/meta/api/src/schema_api_impl.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ use databend_common_meta_app::app_error::ViewAlreadyExists;
5757
use databend_common_meta_app::app_error::VirtualColumnAlreadyExists;
5858
use databend_common_meta_app::app_error::WrongShare;
5959
use databend_common_meta_app::app_error::WrongShareObject;
60+
use databend_common_meta_app::data_mask::MaskPolicyTableIdListIdent;
6061
use databend_common_meta_app::data_mask::MaskpolicyTableIdList;
61-
use databend_common_meta_app::data_mask::MaskpolicyTableIdListKey;
6262
use databend_common_meta_app::id_generator::IdGenerator;
6363
use databend_common_meta_app::schema::CatalogId;
6464
use databend_common_meta_app::schema::CatalogIdToName;
@@ -5526,11 +5526,13 @@ async fn update_mask_policy(
55265526
tenant: String,
55275527
table_id: u64,
55285528
) -> Result<(), KVAppError> {
5529+
let tenant = Tenant::new_or_err(&tenant, func_name!())?;
5530+
55295531
/// Fetch and update the table id list with `f`, and fill in the txn preconditions and operations.
55305532
async fn update_table_ids(
55315533
kv_api: &(impl kvapi::KVApi<Error = MetaError> + ?Sized),
55325534
txn_req: &mut TxnRequest,
5533-
key: MaskpolicyTableIdListKey,
5535+
key: MaskPolicyTableIdListIdent,
55345536
f: impl FnOnce(&mut BTreeSet<u64>),
55355537
) -> Result<(), KVAppError> {
55365538
let (id_list_seq, id_list_opt): (_, Option<MaskpolicyTableIdList>) =
@@ -5554,7 +5556,7 @@ async fn update_mask_policy(
55545556
update_table_ids(
55555557
kv_api,
55565558
txn_req,
5557-
MaskpolicyTableIdListKey::new(&tenant, new_mask_name),
5559+
MaskPolicyTableIdListIdent::new(tenant.clone(), new_mask_name),
55585560
|list: &mut BTreeSet<u64>| {
55595561
list.insert(table_id);
55605562
},
@@ -5565,7 +5567,7 @@ async fn update_mask_policy(
55655567
update_table_ids(
55665568
kv_api,
55675569
txn_req,
5568-
MaskpolicyTableIdListKey::new(&tenant, old),
5570+
MaskPolicyTableIdListIdent::new(tenant.clone(), old),
55695571
|list: &mut BTreeSet<u64>| {
55705572
list.remove(&table_id);
55715573
},
@@ -5577,7 +5579,7 @@ async fn update_mask_policy(
55775579
update_table_ids(
55785580
kv_api,
55795581
txn_req,
5580-
MaskpolicyTableIdListKey::new(&tenant, mask_name),
5582+
MaskPolicyTableIdListIdent::new(tenant.clone(), mask_name),
55815583
|list: &mut BTreeSet<u64>| {
55825584
list.remove(&table_id);
55835585
},

0 commit comments

Comments
 (0)