Skip to content

Commit

Permalink
fix: allow modify usage_schema database
Browse files Browse the repository at this point in the history
* ci: reduce sleep time
  • Loading branch information
ZuoTiJia committed Aug 11, 2023
1 parent 2f72f28 commit 7a61708
Show file tree
Hide file tree
Showing 10 changed files with 102 additions and 10 deletions.
17 changes: 13 additions & 4 deletions query_server/query/src/metadata/mod.rs
Expand Up @@ -121,7 +121,15 @@ impl MetadataProvider {
}

// process USAGE_SCHEMA
if database_name.eq_ignore_ascii_case(self.usage_schema_provider.name()) {
// usage_schema records usage information.
// Under the cnosdb tenant, the table in usage_schema
// corresponds to the actual kv table,
// and any operation can be performed with permission.
// Under other tenants, the usage_schema table is
// a view of the kv table and can only be queried.
if !tenant_name.eq(DEFAULT_CATALOG)
&& database_name.eq_ignore_ascii_case(self.usage_schema_provider.name())
{
let table_provider = self
.usage_schema_provider
.table(&self.session, table_name)
Expand Down Expand Up @@ -183,9 +191,10 @@ impl ContextProviderExtension for MetadataProvider {
}

fn reset_access_databases(&self) -> DatabaseSet {
let result = self.access_databases.read().clone();
self.access_databases.write().reset();
result
let mut access_databases = self.access_databases.write();
let res = access_databases.clone();
access_databases.reset();
res
}

fn get_db_precision(&self, name: &str) -> Result<Precision, MetaError> {
Expand Down
@@ -0,0 +1,14 @@
statement ok
create table usage_schema.test_privilege (a bigint);

statement ok
insert into table usage_schema.test_privilege (time, a)
values (1, 1);

query T
select * from usage_schema.test_privilege;
----
1970-01-01T00:00:00.000000001 1

statement ok
drop table usage_schema.test_privilege;
@@ -1,5 +1,5 @@
--#DATABASE = usage_schema
--#SLEEP = 10000
--#SLEEP = 100
DESCRIBE DATABASE usage_schema;

DESCRIBE TABLE coord_data_in;
Expand Down
@@ -1,5 +1,5 @@
--#DATABASE = usage_schema
--#SLEEP = 10000
--#SLEEP = 100
DESCRIBE DATABASE usage_schema;

DESCRIBE TABLE coord_data_out;
Expand Down
@@ -0,0 +1,45 @@
-- EXECUTE SQL: create user test_usage_schema_user; --
200 OK


-- EXECUTE SQL: create role write_usage_schema_role inherit member; --
200 OK


-- EXECUTE SQL: grant write on database usage_schema to role write_usage_schema_role; --
200 OK


-- EXECUTE SQL: alter tenant cnosdb add user test_usage_schema_user as write_usage_schema_role; --
200 OK


-- EXECUTE SQL: create table usage_schema.test_privilege (a bigint); --
200 OK


-- EXECUTE SQL: insert into usage_schema.test_privilege (time, a) values (1, 1); --
200 OK
rows
1

-- EXECUTE SQL: drop table usage_schema.test_privilege; --
200 OK


-- EXECUTE SQL: alter tenant cnosdb remove user test_usage_schema_user; --
200 OK


-- EXECUTE SQL: drop role write_usage_schema_role; --
200 OK


-- EXECUTE SQL: drop user test_usage_schema_user; --
200 OK


-- EXECUTE SQL: insert into usage_schema.coord_data_in (time, database, tenant, value) values (1, 'invalid', 'invalid', 1); --
200 OK
rows
1
@@ -0,0 +1,24 @@
create user test_usage_schema_user;

create role write_usage_schema_role inherit member;

grant write on database usage_schema to role write_usage_schema_role;

alter tenant cnosdb add user test_usage_schema_user as write_usage_schema_role;

create table usage_schema.test_privilege (a bigint);

--#USER_NAME=test_usage_schema_user
insert into usage_schema.test_privilege (time, a) values (1, 1);

--#USER_NAME=root
drop table usage_schema.test_privilege;

alter tenant cnosdb remove user test_usage_schema_user;

drop role write_usage_schema_role;

drop user test_usage_schema_user;

insert into usage_schema.coord_data_in (time, database, tenant, value) values (1, 'invalid', 'invalid', 1);

@@ -1,5 +1,5 @@
--#DATABASE = usage_schema
--#SLEEP = 10000
--#SLEEP = 100
DESCRIBE DATABASE usage_schema;

DESCRIBE TABLE user_queries;
@@ -1,5 +1,5 @@
--#DATABASE = usage_schema
--#SLEEP = 10000
--#SLEEP = 100
DESCRIBE DATABASE usage_schema;

DESCRIBE TABLE user_writes;
@@ -1,5 +1,5 @@
--#DATABASE = usage_schema
--#SLEEP = 10000
--#SLEEP = 100
DESCRIBE DATABASE usage_schema;

DESCRIBE TABLE vnode_cache_size;
Expand Down
@@ -1,5 +1,5 @@
--#DATABASE = usage_schema
--#SLEEP = 10000
--#SLEEP = 100
DESCRIBE DATABASE usage_schema;

DESCRIBE TABLE vnode_disk_storage;

0 comments on commit 7a61708

Please sign in to comment.