@@ -64,7 +64,6 @@ use databend_common_meta_app::app_error::VirtualColumnAlreadyExists;
64
64
use databend_common_meta_app:: data_mask:: MaskPolicyTableIdListIdent ;
65
65
use databend_common_meta_app:: data_mask:: MaskpolicyTableIdList ;
66
66
use databend_common_meta_app:: id_generator:: IdGenerator ;
67
- use databend_common_meta_app:: primitive:: Id ;
68
67
use databend_common_meta_app:: schema:: database_name_ident:: DatabaseNameIdent ;
69
68
use databend_common_meta_app:: schema:: database_name_ident:: DatabaseNameIdentRaw ;
70
69
use databend_common_meta_app:: schema:: tenant_dictionary_ident:: TenantDictionaryIdent ;
@@ -753,10 +752,10 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
753
752
754
753
let name_key = & req. inner ;
755
754
756
- let ( _ , db_id , db_meta) = get_db_or_err ( self , name_key, "get_database" ) . await ?;
755
+ let ( seq_db_id , db_meta) = get_db_or_err ( self , name_key, "get_database" ) . await ?;
757
756
758
757
let db = DatabaseInfo {
759
- database_id : DatabaseId :: new ( db_id ) ,
758
+ database_id : seq_db_id . data ,
760
759
name_ident : name_key. clone ( ) ,
761
760
meta : db_meta,
762
761
} ;
@@ -1583,8 +1582,8 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
1583
1582
let seq_db_id = get_db_id_or_err ( self , & tenant_dbname, "create_table" ) . await ?;
1584
1583
1585
1584
// fixed
1586
- let key_dbid = seq_db_id. data . into_inner ( ) ;
1587
- let save_db_id = seq_db_id. data . into_inner ( ) ;
1585
+ let key_dbid = seq_db_id. data ;
1586
+ let save_db_id = seq_db_id. data ;
1588
1587
1589
1588
// fixed
1590
1589
let key_dbid_tbname = DBIdTableName {
@@ -1899,7 +1898,7 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
1899
1898
1900
1899
// Get db by name to ensure presence
1901
1900
1902
- let ( _ , db_id , db_meta) = get_db_or_err ( self , & tenant_dbname, "rename_table" ) . await ?;
1901
+ let ( seq_db_id , db_meta) = get_db_or_err ( self , & tenant_dbname, "rename_table" ) . await ?;
1903
1902
1904
1903
// cannot operate on shared database
1905
1904
if let Some ( from_share) = & db_meta. from_share {
@@ -1911,7 +1910,7 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
1911
1910
// Get table by db_id, table_name to assert presence.
1912
1911
1913
1912
let dbid_tbname = DBIdTableName {
1914
- db_id,
1913
+ db_id : * seq_db_id . data ,
1915
1914
table_name : tenant_dbname_tbname. table_name . clone ( ) ,
1916
1915
} ;
1917
1916
@@ -1934,7 +1933,7 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
1934
1933
1935
1934
// get table id list from _fd_table_id_list/db_id/table_name
1936
1935
let dbid_tbname_idlist = TableIdHistoryIdent {
1937
- database_id : db_id ,
1936
+ database_id : * seq_db_id . data ,
1938
1937
table_name : req. name_ident . table_name . clone ( ) ,
1939
1938
} ;
1940
1939
let ( tb_id_list_seq, tb_id_list_opt) : ( _ , Option < TableIdList > ) =
@@ -1981,20 +1980,20 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
1981
1980
// Get the renaming target db to ensure presence.
1982
1981
1983
1982
let tenant_newdbname = DatabaseNameIdent :: new ( tenant_dbname. tenant ( ) , & req. new_db_name ) ;
1984
- let ( _ , new_db_id , new_db_meta) =
1983
+ let ( new_seq_db_id , new_db_meta) =
1985
1984
get_db_or_err ( self , & tenant_newdbname, "rename_table: new db" ) . await ?;
1986
1985
1987
1986
// Get the renaming target table to ensure absence
1988
1987
1989
1988
let newdbid_newtbname = DBIdTableName {
1990
- db_id : new_db_id ,
1989
+ db_id : * new_seq_db_id . data ,
1991
1990
table_name : req. new_table_name . clone ( ) ,
1992
1991
} ;
1993
1992
let ( new_tb_id_seq, _new_tb_id) = get_u64_value ( self , & newdbid_newtbname) . await ?;
1994
1993
table_has_to_not_exist ( new_tb_id_seq, & tenant_newdbname_newtbname, "rename_table" ) ?;
1995
1994
1996
1995
let new_dbid_tbname_idlist = TableIdHistoryIdent {
1997
- database_id : new_db_id ,
1996
+ database_id : * new_seq_db_id . data ,
1998
1997
table_name : req. new_table_name . clone ( ) ,
1999
1998
} ;
2000
1999
let ( new_tb_id_list_seq, new_tb_id_list_opt) : ( _ , Option < TableIdList > ) =
@@ -2012,7 +2011,7 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
2012
2011
let ( table_id_to_name_seq, _) : ( _ , Option < DBIdTableName > ) =
2013
2012
get_pb_value ( self , & table_id_to_name_key) . await ?;
2014
2013
let db_id_table_name = DBIdTableName {
2015
- db_id : new_db_id ,
2014
+ db_id : * new_seq_db_id . data ,
2016
2015
table_name : req. new_table_name . clone ( ) ,
2017
2016
} ;
2018
2017
@@ -2025,8 +2024,8 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
2025
2024
condition : vec ! [
2026
2025
// db has not to change, i.e., no new table is created.
2027
2026
// Renaming db is OK and does not affect the seq of db_meta.
2028
- txn_cond_seq( & DatabaseId { db_id } , Eq , db_meta. seq) ,
2029
- txn_cond_seq( & DatabaseId { db_id : new_db_id } , Eq , new_db_meta. seq) ,
2027
+ txn_cond_seq( & seq_db_id . data , Eq , db_meta. seq) ,
2028
+ txn_cond_seq( & new_seq_db_id . data , Eq , new_db_meta. seq) ,
2030
2029
// table_name->table_id does not change.
2031
2030
// Updating the table meta is ok.
2032
2031
txn_cond_seq( & dbid_tbname, Eq , tb_id_seq) ,
@@ -2041,18 +2040,18 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
2041
2040
txn_op_put( & newdbid_newtbname, serialize_u64( table_id) ?) , /* (db_id, new_tb_name) -> tb_id */
2042
2041
// Changing a table in a db has to update the seq of db_meta,
2043
2042
// to block the batch-delete-tables when deleting a db.
2044
- txn_op_put( & DatabaseId { db_id } , serialize_struct( & * db_meta) ?) , /* (db_id) -> db_meta */
2043
+ txn_op_put( & seq_db_id . data , serialize_struct( & * db_meta) ?) , /* (db_id) -> db_meta */
2045
2044
txn_op_put( & dbid_tbname_idlist, serialize_struct( & tb_id_list) ?) , /* _fd_table_id_list/db_id/old_table_name -> tb_id_list */
2046
2045
txn_op_put( & new_dbid_tbname_idlist, serialize_struct( & new_tb_id_list) ?) , /* _fd_table_id_list/db_id/new_table_name -> tb_id_list */
2047
2046
txn_op_put( & table_id_to_name_key, serialize_struct( & db_id_table_name) ?) , /* __fd_table_id_to_name/db_id/table_name -> DBIdTableName */
2048
2047
] ,
2049
2048
else_then : vec ! [ ] ,
2050
2049
} ;
2051
2050
2052
- if db_id != new_db_id {
2051
+ if * seq_db_id . data != * new_seq_db_id . data {
2053
2052
txn. if_then . push (
2054
2053
txn_op_put (
2055
- & DatabaseId { db_id : new_db_id } ,
2054
+ & new_seq_db_id . data ,
2056
2055
serialize_struct ( & * new_db_meta) ?,
2057
2056
) , // (db_id) -> db_meta
2058
2057
) ;
@@ -2104,7 +2103,7 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
2104
2103
txn. if_then
2105
2104
. push ( txn_op_put ( & tbid, serialize_struct ( & table_meta) ?) ) ;
2106
2105
2107
- let share_object = ReplyShareObject :: Table ( db_id , table_id) ;
2106
+ let share_object = ReplyShareObject :: Table ( * seq_db_id . data , table_id) ;
2108
2107
Some ( ( spec_vec, share_object) )
2109
2108
} else {
2110
2109
None
@@ -2153,7 +2152,7 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
2153
2152
)
2154
2153
. await ;
2155
2154
2156
- let ( _db_id_seq , db_id , db_meta) = match res {
2155
+ let ( seq_db_id , db_meta) = match res {
2157
2156
Ok ( x) => x,
2158
2157
Err ( e) => {
2159
2158
return Err ( e) ;
@@ -2176,7 +2175,7 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
2176
2175
// Get table by tenant,db_id, table_name to assert presence.
2177
2176
2178
2177
let dbid_tbname = DBIdTableName {
2179
- db_id,
2178
+ db_id : * seq_db_id . data ,
2180
2179
table_name : tenant_dbname_tbname. table_name . clone ( ) ,
2181
2180
} ;
2182
2181
@@ -2245,7 +2244,7 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
2245
2244
)
2246
2245
. await ;
2247
2246
2248
- let ( _db_id_seq , db_id , _db_meta) = match res {
2247
+ let ( seq_db_id , _db_meta) = match res {
2249
2248
Ok ( x) => x,
2250
2249
Err ( e) => {
2251
2250
return Err ( e) ;
@@ -2254,7 +2253,7 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
2254
2253
2255
2254
// List tables by tenant, db_id, table_name.
2256
2255
let table_id_history_ident = TableIdHistoryIdent {
2257
- database_id : db_id ,
2256
+ database_id : * seq_db_id . data ,
2258
2257
table_name : "dummy" . to_string ( ) ,
2259
2258
} ;
2260
2259
@@ -2268,7 +2267,7 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
2268
2267
. iter ( )
2269
2268
. map ( |table_id_list_key| {
2270
2269
TableIdHistoryIdent {
2271
- database_id : db_id ,
2270
+ database_id : * seq_db_id . data ,
2272
2271
table_name : table_id_list_key. table_name . clone ( ) ,
2273
2272
}
2274
2273
. to_string_key ( )
@@ -2373,15 +2372,15 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
2373
2372
)
2374
2373
. await ;
2375
2374
2376
- let ( _db_id_seq , db_id , db_meta) = match res {
2375
+ let ( seq_db_id , db_meta) = match res {
2377
2376
Ok ( x) => x,
2378
2377
Err ( e) => {
2379
2378
return Err ( e) ;
2380
2379
}
2381
2380
} ;
2382
2381
2383
2382
let tb_infos = match & db_meta. from_share {
2384
- None => list_tables_from_unshare_db ( self , db_id , tenant_dbname) . await ?,
2383
+ None => list_tables_from_unshare_db ( self , * seq_db_id . data , tenant_dbname) . await ?,
2385
2384
Some ( share) => {
2386
2385
let share_ident = share. clone ( ) . to_tident ( ( ) ) ;
2387
2386
error ! (
@@ -3594,7 +3593,7 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
3594
3593
)
3595
3594
. await ;
3596
3595
3597
- let ( _db_id_seq , db_id , db_meta) = match res {
3596
+ let ( seq_db_id , db_meta) = match res {
3598
3597
Ok ( x) => x,
3599
3598
Err ( e) => {
3600
3599
return Err ( e) ;
@@ -3610,7 +3609,7 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
3610
3609
}
3611
3610
3612
3611
let db_info = Arc :: new ( DatabaseInfo {
3613
- database_id : DatabaseId :: new ( db_id ) ,
3612
+ database_id : seq_db_id . data ,
3614
3613
name_ident : req. inner . clone ( ) ,
3615
3614
meta : db_meta,
3616
3615
} ) ;
@@ -4752,7 +4751,7 @@ async fn drop_database_meta(
4752
4751
)
4753
4752
. await ;
4754
4753
4755
- let ( db_id_seq , db_id , mut db_meta) = match res {
4754
+ let ( seq_db_id , mut db_meta) = match res {
4756
4755
Ok ( x) => x,
4757
4756
Err ( e) => {
4758
4757
if let KVAppError :: AppError ( AppError :: UnknownDatabase ( _) ) = e {
@@ -4768,14 +4767,15 @@ async fn drop_database_meta(
4768
4767
// remove db_name -> db id
4769
4768
if drop_name_key {
4770
4769
txn. condition
4771
- . push ( txn_cond_seq ( tenant_dbname, Eq , db_id_seq ) ) ;
4770
+ . push ( txn_cond_seq ( tenant_dbname, Eq , seq_db_id . seq ) ) ;
4772
4771
txn. if_then . push ( txn_op_del ( tenant_dbname) ) ; // (tenant, db_name) -> db_id
4773
4772
}
4774
4773
4775
4774
// remove db from share
4776
4775
let mut share_specs = Vec :: with_capacity ( db_meta. shared_by . len ( ) ) ;
4777
4776
for share_id in & db_meta. shared_by {
4778
- let res = remove_db_from_share ( kv_api, * share_id, db_id, tenant_dbname, txn) . await ;
4777
+ let res =
4778
+ remove_db_from_share ( kv_api, * share_id, * seq_db_id. data , tenant_dbname, txn) . await ;
4779
4779
4780
4780
match res {
4781
4781
Ok ( ( share_name, share_meta) ) => {
@@ -4800,7 +4800,7 @@ async fn drop_database_meta(
4800
4800
4801
4801
let ( removed, _from_share) = is_db_need_to_be_remove (
4802
4802
kv_api,
4803
- db_id ,
4803
+ * seq_db_id . data ,
4804
4804
// remove db directly if created from share
4805
4805
|db_meta| db_meta. from_share . is_some ( ) ,
4806
4806
txn,
@@ -4811,7 +4811,7 @@ async fn drop_database_meta(
4811
4811
// if db create from share then remove it directly and remove db id from share
4812
4812
debug ! (
4813
4813
name : ? =( tenant_dbname) ,
4814
- id : ? =( & DatabaseId { db_id } ) ;
4814
+ id : ? =( & seq_db_id ) ;
4815
4815
"drop_database from share"
4816
4816
) ;
4817
4817
@@ -4827,7 +4827,7 @@ async fn drop_database_meta(
4827
4827
db_id_list_opt. unwrap_or ( DbIdList :: new ( ) )
4828
4828
} ;
4829
4829
if let Some ( last_db_id) = db_id_list. last ( ) {
4830
- if * last_db_id == db_id {
4830
+ if * last_db_id == * seq_db_id . data {
4831
4831
db_id_list. pop ( ) ;
4832
4832
txn. condition
4833
4833
. push ( txn_cond_seq ( & dbid_idlist, Eq , db_id_list_seq) ) ;
@@ -4840,10 +4840,10 @@ async fn drop_database_meta(
4840
4840
// del (tenant, db_name) -> db_id
4841
4841
// set db_meta.drop_on = now and update (db_id) -> db_meta
4842
4842
4843
- let db_id_key = DatabaseId { db_id } ;
4843
+ let db_id_key = seq_db_id . data ;
4844
4844
4845
4845
debug ! (
4846
- db_id = db_id ,
4846
+ seq_db_id : ? = seq_db_id ,
4847
4847
name_key : ? =( tenant_dbname) ;
4848
4848
"drop_database"
4849
4849
) ;
@@ -4873,12 +4873,12 @@ async fn drop_database_meta(
4873
4873
4874
4874
if db_id_list_seq == 0 || db_id_list_opt. is_none ( ) {
4875
4875
warn ! (
4876
- "drop db:{:?}, db_id :{:?} has no DbIdListKey" ,
4877
- tenant_dbname, db_id
4876
+ "drop db:{:?}, seq_db_id :{:?} has no DbIdListKey" ,
4877
+ tenant_dbname, seq_db_id
4878
4878
) ;
4879
4879
4880
4880
let mut db_id_list = DbIdList :: new ( ) ;
4881
- db_id_list. append ( db_id ) ;
4881
+ db_id_list. append ( * seq_db_id . data ) ;
4882
4882
4883
4883
txn. condition
4884
4884
. push ( txn_cond_seq ( & dbid_idlist, Eq , db_id_list_seq) ) ;
@@ -4889,9 +4889,9 @@ async fn drop_database_meta(
4889
4889
}
4890
4890
4891
4891
if share_specs. is_empty ( ) {
4892
- Ok ( ( db_id , None ) )
4892
+ Ok ( ( * seq_db_id . data , None ) )
4893
4893
} else {
4894
- Ok ( ( db_id , Some ( share_specs) ) )
4894
+ Ok ( ( * seq_db_id . data , Some ( share_specs) ) )
4895
4895
}
4896
4896
}
4897
4897
@@ -4975,20 +4975,20 @@ pub(crate) async fn get_db_id_or_err(
4975
4975
kv_api : & ( impl kvapi:: KVApi < Error = MetaError > + ?Sized ) ,
4976
4976
name_key : & DatabaseNameIdent ,
4977
4977
msg : impl Display ,
4978
- ) -> Result < SeqV < Id < DatabaseId > > , KVAppError > {
4978
+ ) -> Result < SeqV < DatabaseId > , KVAppError > {
4979
4979
let seq_db_id = kv_api. get_pb ( name_key) . await ?;
4980
4980
4981
4981
let seq_db_id = seq_db_id. ok_or_else ( || unknown_database_error ( name_key, msg) ) ?;
4982
- Ok ( seq_db_id)
4982
+
4983
+ Ok ( seq_db_id. map ( |x| x. into_inner ( ) ) )
4983
4984
}
4984
4985
4985
4986
/// Returns (db_id_seq, db_id, db_meta_seq, db_meta)
4986
4987
pub ( crate ) async fn get_db_or_err (
4987
4988
kv_api : & ( impl kvapi:: KVApi < Error = MetaError > + ?Sized ) ,
4988
4989
name_key : & DatabaseNameIdent ,
4989
4990
msg : impl Display ,
4990
- ) -> Result < ( u64 , u64 , SeqV < DatabaseMeta > ) , KVAppError > {
4991
- // TODO: change to returning SeqV
4991
+ ) -> Result < ( SeqV < DatabaseId > , SeqV < DatabaseMeta > ) , KVAppError > {
4992
4992
let seq_db_id = kv_api. get_pb ( name_key) . await ?;
4993
4993
let seq_db_id = seq_db_id. ok_or_else ( || unknown_database_error ( name_key, & msg) ) ?;
4994
4994
@@ -4997,7 +4997,7 @@ pub(crate) async fn get_db_or_err(
4997
4997
let seq_db_meta = kv_api. get_pb ( & id_key) . await ?;
4998
4998
let seq_db_meta = seq_db_meta. ok_or_else ( || unknown_database_error ( name_key, & msg) ) ?;
4999
4999
5000
- Ok ( ( seq_db_id. seq , * seq_db_id . data , seq_db_meta) )
5000
+ Ok ( ( seq_db_id. map ( |x| x . into_inner ( ) ) , seq_db_meta) )
5001
5001
}
5002
5002
5003
5003
/// Returns (db_meta_seq, db_meta)
@@ -5867,9 +5867,9 @@ impl UndropTableStrategy for UndropTableReq {
5867
5867
kv_api : & ' a ( impl kvapi:: KVApi < Error = MetaError > + ?Sized ) ,
5868
5868
) -> Result < ( u64 , SeqV < DatabaseMeta > ) , KVAppError > {
5869
5869
// for plain un-drop table (by name), database meta is refreshed by name
5870
- let ( _ , db_id , db_meta) =
5870
+ let ( seq_db_id , db_meta) =
5871
5871
get_db_or_err ( kv_api, & self . name_ident . db_name_ident ( ) , "undrop_table" ) . await ?;
5872
- Ok ( ( db_id , db_meta) )
5872
+ Ok ( ( * seq_db_id . data , db_meta) )
5873
5873
}
5874
5874
5875
5875
fn extract_and_validate_table_id (
0 commit comments