@@ -882,6 +882,13 @@ impl<KV: KVApi> SchemaApi for KV {
882
882
let ( _, db_id, db_meta_seq, db_meta) =
883
883
get_db_or_err ( self , & tenant_dbname, "create_table" ) . await ?;
884
884
885
+ // cannot operate on shared database
886
+ if let Some ( from_share) = db_meta. from_share {
887
+ return Err ( MetaError :: AppError ( AppError :: ShareHasNoGrantedPrivilege (
888
+ ShareHasNoGrantedPrivilege :: new ( & from_share. tenant , & from_share. share_name ) ,
889
+ ) ) ) ;
890
+ }
891
+
885
892
// Get table by tenant,db_id, table_name to assert absence.
886
893
887
894
let dbid_tbname = DBIdTableName {
@@ -1028,6 +1035,13 @@ impl<KV: KVApi> SchemaApi for KV {
1028
1035
let ( _, db_id, db_meta_seq, db_meta) =
1029
1036
get_db_or_err ( self , & tenant_dbname, "drop_table" ) . await ?;
1030
1037
1038
+ // cannot operate on shared database
1039
+ if let Some ( from_share) = db_meta. from_share {
1040
+ return Err ( MetaError :: AppError ( AppError :: ShareHasNoGrantedPrivilege (
1041
+ ShareHasNoGrantedPrivilege :: new ( & from_share. tenant , & from_share. share_name ) ,
1042
+ ) ) ) ;
1043
+ }
1044
+
1031
1045
// Get table by tenant,db_id, table_name to assert presence.
1032
1046
1033
1047
let dbid_tbname = DBIdTableName {
@@ -1154,6 +1168,13 @@ impl<KV: KVApi> SchemaApi for KV {
1154
1168
let ( _, db_id, db_meta_seq, db_meta) =
1155
1169
get_db_or_err ( self , & tenant_dbname, "undrop_table" ) . await ?;
1156
1170
1171
+ // cannot operate on shared database
1172
+ if let Some ( from_share) = db_meta. from_share {
1173
+ return Err ( MetaError :: AppError ( AppError :: ShareHasNoGrantedPrivilege (
1174
+ ShareHasNoGrantedPrivilege :: new ( & from_share. tenant , & from_share. share_name ) ,
1175
+ ) ) ) ;
1176
+ }
1177
+
1157
1178
// Get table by tenant,db_id, table_name to assert presence.
1158
1179
1159
1180
let dbid_tbname = DBIdTableName {
@@ -1308,6 +1329,13 @@ impl<KV: KVApi> SchemaApi for KV {
1308
1329
let ( _, db_id, db_meta_seq, db_meta) =
1309
1330
get_db_or_err ( self , & tenant_dbname, "rename_table" ) . await ?;
1310
1331
1332
+ // cannot operate on shared database
1333
+ if let Some ( from_share) = db_meta. from_share {
1334
+ return Err ( MetaError :: AppError ( AppError :: ShareHasNoGrantedPrivilege (
1335
+ ShareHasNoGrantedPrivilege :: new ( & from_share. tenant , & from_share. share_name ) ,
1336
+ ) ) ) ;
1337
+ }
1338
+
1311
1339
// Get table by db_id, table_name to assert presence.
1312
1340
1313
1341
let dbid_tbname = DBIdTableName {
0 commit comments