Skip to content

Commit 30e2ab7

Browse files
authored
refactor: support unset session|global (#16214)
* support unset session|global default unset settings is unset session level setting. Same with set setting * UPDATE_GOLDENFILES * modify some test, unset <setting> -> unset global <setting>
1 parent f99851a commit 30e2ab7

File tree

7 files changed

+47
-17
lines changed

7 files changed

+47
-17
lines changed

src/query/ast/src/ast/statements/statement.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ impl Display for Statement {
546546
write!(f, "UNSET ")?;
547547
match *unset_type {
548548
SetType::SettingsSession => write!(f, "SESSION ")?,
549-
SetType::SettingsGlobal => {}
549+
SetType::SettingsGlobal => write!(f, "GLOBAL ")?,
550550
SetType::Variable => write!(f, "VARIABLE ")?,
551551
}
552552
if identifiers.len() == 1 {

src/query/ast/src/parser/common.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ pub fn unset_type(i: Input) -> IResult<SetType> {
250250
TokenKind::VARIABLE => SetType::Variable,
251251
_ => unreachable!(),
252252
},
253-
None => SetType::SettingsGlobal,
253+
None => SetType::SettingsSession,
254254
},
255255
)(i)
256256
}

src/query/ast/tests/it/testdata/statement.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15854,10 +15854,10 @@ SetStmt {
1585415854
---------- Input ----------
1585515855
UNSET max_threads;
1585615856
---------- Output ---------
15857-
UNSET max_threads
15857+
UNSET SESSION max_threads
1585815858
---------- AST ------------
1585915859
UnSetStmt {
15860-
unset_type: SettingsGlobal,
15860+
unset_type: SettingsSession,
1586115861
identifiers: [
1586215862
Identifier {
1586315863
span: Some(
@@ -15894,10 +15894,10 @@ UnSetStmt {
1589415894
---------- Input ----------
1589515895
UNSET (max_threads, sql_dialect);
1589615896
---------- Output ---------
15897-
UNSET (max_threads, sql_dialect)
15897+
UNSET SESSION (max_threads, sql_dialect)
1589815898
---------- AST ------------
1589915899
UnSetStmt {
15900-
unset_type: SettingsGlobal,
15900+
unset_type: SettingsSession,
1590115901
identifiers: [
1590215902
Identifier {
1590315903
span: Some(

src/query/management/src/role/role_mgr.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,6 @@ impl RoleApi for RoleMgr {
343343
let grant_object = convert_to_grant_obj(object);
344344

345345
let owner_key = self.ownership_object_ident(object);
346-
347346
let owner_value = serialize_struct(
348347
&OwnershipInfo {
349348
object: object.clone(),

src/query/service/src/interpreters/interpreter_unset.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,21 +28,21 @@ use crate::sessions::TableContext;
2828

2929
pub struct UnSetInterpreter {
3030
ctx: Arc<QueryContext>,
31-
set: UnsetPlan,
31+
unset: UnsetPlan,
3232
}
3333

3434
impl UnSetInterpreter {
3535
pub fn try_create(ctx: Arc<QueryContext>, set: UnsetPlan) -> Result<Self> {
36-
Ok(UnSetInterpreter { ctx, set })
36+
Ok(UnSetInterpreter { ctx, unset: set })
3737
}
3838

3939
async fn execute_unset_settings(&self) -> Result<()> {
40-
let plan = self.set.clone();
40+
let plan = self.unset.clone();
4141
let mut keys: Vec<String> = vec![];
4242
let mut values: Vec<String> = vec![];
4343
let mut is_globals: Vec<bool> = vec![];
4444
let settings = self.ctx.get_shared_settings();
45-
let session_level = self.set.unset_type == SetType::SettingsSession;
45+
let session_level = self.unset.unset_type == SetType::SettingsSession;
4646
settings.load_changes().await?;
4747

4848
// Fetch global settings asynchronously if necessary
@@ -93,6 +93,7 @@ impl UnSetInterpreter {
9393
match default_val {
9494
Some(val) => {
9595
let final_val = if global_settings.is_empty() {
96+
self.ctx.get_shared_settings().unset_setting(&var);
9697
val.to_string()
9798
} else {
9899
global_settings
@@ -132,7 +133,7 @@ impl UnSetInterpreter {
132133
}
133134

134135
async fn execute_unset_variables(&self) -> Result<()> {
135-
for var in self.set.vars.iter() {
136+
for var in self.unset.vars.iter() {
136137
self.ctx.unset_variable(var);
137138
}
138139
Ok(())
@@ -151,7 +152,7 @@ impl Interpreter for UnSetInterpreter {
151152

152153
#[async_backtrace::framed]
153154
async fn execute2(&self) -> Result<PipelineBuildResult> {
154-
match self.set.unset_type {
155+
match self.unset.unset_type {
155156
databend_common_ast::ast::SetType::SettingsSession
156157
| databend_common_ast::ast::SetType::SettingsGlobal => {
157158
self.execute_unset_settings().await?
Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,114 @@
1+
onlyif http
12
query TTTT
23
SELECT name, value, default, level from system.settings where name in ('sql_dialect', 'timezone')
34
----
45
sql_dialect PostgreSQL PostgreSQL DEFAULT
56
timezone UTC UTC DEFAULT
67

8+
onlyif http
79
statement ok
810
SET GLOBAL sql_dialect='MySQL'
911

12+
onlyif http
1013
statement ok
1114
SET GLOBAL timezone='Asia/Shanghai'
1215

16+
onlyif http
1317
query TTTT
1418
SELECT name, value, default, level from system.settings where name in ('sql_dialect', 'timezone')
1519
----
1620
sql_dialect MySQL PostgreSQL GLOBAL
1721
timezone Asia/Shanghai UTC GLOBAL
1822

23+
onlyif http
1924
statement ok
20-
UNSET (timezone)
25+
UNSET GLOBAL (timezone)
2126

27+
onlyif http
2228
statement error 2801
2329
SET stl_dialect='MySQL'
2430

31+
onlyif http
2532
statement ok
2633
UNSET stl_dialect
2734

35+
onlyif http
2836
statement ok
29-
UNSET sql_dialect
37+
UNSET GLOBAL sql_dialect
3038

39+
onlyif http
3140
query TTTT
3241
SELECT name, value, default, level from system.settings where name in ('sql_dialect', 'timezone')
3342
----
3443
sql_dialect PostgreSQL PostgreSQL DEFAULT
3544
timezone UTC UTC DEFAULT
3645

46+
onlyif http
3747
statement ok
3848
set DATA_RETENTION_TIME_IN_DAYS=20;
3949

50+
onlyif http
4051
query TTTTTTT
4152
show settings like 'DATA_RETENTION_TIME_IN_DAYS';
4253
----
4354
data_retention_time_in_days 20 1 [0, 90] SESSION Sets the data retention time in days. UInt64
4455

56+
onlyif http
4557
statement ok
4658
unset data_retention_time_in_days;
4759

60+
onlyif http
4861
query TTTTTTT
4962
show settings like 'DATA_RETENTION_TIME_IN_DAYS';
5063
----
5164
data_retention_time_in_days 1 1 [0, 90] DEFAULT Sets the data retention time in days. UInt64
5265

66+
onlyif http
5367
statement ok
5468
set global load_file_metadata_expire_hours=12;
5569

70+
onlyif http
5671
query TT
5772
show settings like 'load_file_metadata_expire_hours';
5873
----
5974
load_file_metadata_expire_hours 12 24 [0, 18446744073709551615] GLOBAL Sets the hours that the metadata of files you load data from with COPY INTO will expire in. UInt64
6075

76+
onlyif http
6177
statement ok
6278
set load_file_metadata_expire_hours=13;
6379

80+
onlyif http
6481
query TTTTTTT
6582
show settings like 'load_file_metadata_expire_hours';
6683
----
6784
load_file_metadata_expire_hours 13 24 [0, 18446744073709551615] SESSION Sets the hours that the metadata of files you load data from with COPY INTO will expire in. UInt64
6885

86+
onlyif http
6987
statement ok
7088
unset session load_file_metadata_expire_hours;
7189

90+
onlyif http
7291
query TTTTTTT
7392
show settings like 'load_file_metadata_expire_hours';
7493
----
7594
load_file_metadata_expire_hours 12 24 [0, 18446744073709551615] GLOBAL Sets the hours that the metadata of files you load data from with COPY INTO will expire in. UInt64
7695

96+
onlyif http
7797
statement ok
7898
unset load_file_metadata_expire_hours
7999

100+
onlyif http
80101
query TTTTTTT
81102
show settings like 'load_file_metadata_expire_hours';
82103
----
83-
load_file_metadata_expire_hours 24 24 [0, 18446744073709551615] DEFAULT Sets the hours that the metadata of files you load data from with COPY INTO will expire in. UInt64
104+
load_file_metadata_expire_hours 12 24 [0, 18446744073709551615] GLOBAL Sets the hours that the metadata of files you load data from with COPY INTO will expire in. UInt64
105+
106+
onlyif http
107+
statement ok
108+
unset global load_file_metadata_expire_hours
84109

110+
onlyif http
111+
query TTTTTTT
112+
show settings like 'load_file_metadata_expire_hours';
113+
----
114+
load_file_metadata_expire_hours 24 24 [0, 18446744073709551615] DEFAULT Sets the hours that the metadata of files you load data from with COPY INTO will expire in. UInt64

tests/sqllogictests/suites/query/set.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ select value, default = value from system.settings where name in ('max_threads'
2222
56 0
2323

2424
statement ok
25-
UNSET (max_threads, storage_io_min_bytes_for_seek);
25+
UNSET GLOBAL (max_threads, storage_io_min_bytes_for_seek);
2626

2727
query TT
2828
select default = value from system.settings where name in ('max_threads', 'storage_io_min_bytes_for_seek');

0 commit comments

Comments
 (0)