Skip to content

Commit f1c95cc

Browse files
authored
refactor: simplify alter and drop cluster key logic (#17128)
* chore: simplify alter and drop cluster key logic * fix
1 parent cce8c74 commit f1c95cc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+183
-358
lines changed

src/common/base/src/runtime/metrics/family_metrics/counter.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ impl<Labels: FamilyLabels> FamilyCounter<Labels> {
4242
FamilyCounter {
4343
index,
4444
labels,
45-
value: Arc::new(Default::default()),
45+
value: Default::default(),
4646
}
4747
}
4848

src/meta/app/src/schema/table.rs

+10-20
Original file line numberDiff line numberDiff line change
@@ -262,10 +262,8 @@ pub struct TableMeta {
262262
pub options: BTreeMap<String, String>,
263263
// The default cluster key.
264264
pub default_cluster_key: Option<String>,
265-
// All cluster keys that have been defined.
266-
pub cluster_keys: Vec<String>,
267-
// The sequence number of default_cluster_key in cluster_keys.
268-
pub default_cluster_key_id: Option<u32>,
265+
// The sequence number of default_cluster_key.
266+
pub default_cluster_key_id: u32,
269267
pub created_on: DateTime<Utc>,
270268
pub updated_on: DateTime<Utc>,
271269
pub comment: String,
@@ -407,6 +405,13 @@ impl TableInfo {
407405
self.meta.schema = schema;
408406
self
409407
}
408+
409+
pub fn cluster_key(&self) -> Option<(u32, String)> {
410+
self.meta
411+
.default_cluster_key
412+
.clone()
413+
.map(|k| (self.meta.default_cluster_key_id, k))
414+
}
410415
}
411416

412417
impl Default for TableMeta {
@@ -419,8 +424,7 @@ impl Default for TableMeta {
419424
part_prefix: "".to_string(),
420425
options: BTreeMap::new(),
421426
default_cluster_key: None,
422-
cluster_keys: vec![],
423-
default_cluster_key_id: None,
427+
default_cluster_key_id: 0,
424428
created_on: Utc::now(),
425429
updated_on: Utc::now(),
426430
comment: "".to_string(),
@@ -434,20 +438,6 @@ impl Default for TableMeta {
434438
}
435439
}
436440

437-
impl TableMeta {
438-
pub fn push_cluster_key(mut self, cluster_key: String) -> Self {
439-
self.cluster_keys.push(cluster_key.clone());
440-
self.default_cluster_key = Some(cluster_key);
441-
self.default_cluster_key_id = Some(self.cluster_keys.len() as u32 - 1);
442-
self
443-
}
444-
445-
pub fn cluster_key(&self) -> Option<(u32, String)> {
446-
self.default_cluster_key_id
447-
.zip(self.default_cluster_key.clone())
448-
}
449-
}
450-
451441
impl Display for TableMeta {
452442
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
453443
write!(

src/meta/proto-conv/src/table_from_to_protobuf_impl.rs

+12-4
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,14 @@ impl FromToProto for mt::TableMeta {
192192
indexes.insert(name, mt::TableIndex::from_pb(index)?);
193193
}
194194

195+
let default_cluster_key_id = if let Some(cluster_key_id) = p.default_cluster_key_id {
196+
cluster_key_id
197+
} else if p.cluster_keys.is_empty() {
198+
0
199+
} else {
200+
p.cluster_keys.len() as u32 - 1
201+
};
202+
195203
let v = Self {
196204
schema: Arc::new(ex::TableSchema::from_pb(schema)?),
197205
engine: p.engine,
@@ -203,8 +211,7 @@ impl FromToProto for mt::TableMeta {
203211
part_prefix: p.part_prefix.unwrap_or("".to_string()),
204212
options: p.options,
205213
default_cluster_key: p.default_cluster_key,
206-
cluster_keys: p.cluster_keys,
207-
default_cluster_key_id: p.default_cluster_key_id,
214+
default_cluster_key_id,
208215
created_on: DateTime::<Utc>::from_pb(p.created_on)?,
209216
updated_on: DateTime::<Utc>::from_pb(p.updated_on)?,
210217
drop_on: match p.drop_on {
@@ -251,8 +258,9 @@ impl FromToProto for mt::TableMeta {
251258
},
252259
options: self.options.clone(),
253260
default_cluster_key: self.default_cluster_key.clone(),
254-
cluster_keys: self.cluster_keys.clone(),
255-
default_cluster_key_id: self.default_cluster_key_id,
261+
// cluster_keys is deprecated.
262+
cluster_keys: vec![],
263+
default_cluster_key_id: Some(self.default_cluster_key_id),
256264
created_on: self.created_on.to_pb()?,
257265
updated_on: self.updated_on.to_pb()?,
258266
drop_on: match self.drop_on {

src/meta/proto-conv/tests/it/proto_conv.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,7 @@ fn new_table_meta() -> mt::TableMeta {
141141
engine_options: btreemap! {s("abc") => s("def")},
142142
options: btreemap! {s("xyz") => s("foo")},
143143
default_cluster_key: Some("(a + 2, b)".to_string()),
144-
cluster_keys: vec!["(a + 2, b)".to_string()],
145-
default_cluster_key_id: Some(0),
144+
default_cluster_key_id: 0,
146145
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
147146
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
148147
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v002_table_meta.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,7 @@ fn test_decode_v2_table_meta() -> anyhow::Result<()> {
132132
engine_options: btreemap! {s("abc") => s("def")},
133133
options: btreemap! {s("xyz") => s("foo")},
134134
default_cluster_key: Some("(a + 2, b)".to_string()),
135-
cluster_keys: vec!["(a + 2, b)".to_string()],
136-
default_cluster_key_id: Some(0),
135+
default_cluster_key_id: 0,
137136
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
138137
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
139138
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v010_table_meta.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,7 @@ fn test_decode_v10_table_meta() -> anyhow::Result<()> {
134134
part_prefix: "".to_string(),
135135
options: btreemap! {s("xyz") => s("foo")},
136136
default_cluster_key: Some("(a + 2, b)".to_string()),
137-
cluster_keys: vec!["(a + 2, b)".to_string()],
138-
default_cluster_key_id: Some(0),
137+
default_cluster_key_id: 0,
139138
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
140139
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
141140
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v012_table_meta.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,7 @@ fn test_decode_v12_table_meta() -> anyhow::Result<()> {
136136
part_prefix: "".to_string(),
137137
options: btreemap! {s("xyz") => s("foo")},
138138
default_cluster_key: Some("(a + 2, b)".to_string()),
139-
cluster_keys: vec!["(a + 2, b)".to_string()],
140-
default_cluster_key_id: Some(0),
139+
default_cluster_key_id: 0,
141140
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
142141
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
143142
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v023_table_meta.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,7 @@ fn test_decode_v23_table_meta() -> anyhow::Result<()> {
136136
part_prefix: "lulu_".to_string(),
137137
options: btreemap! {s("xyz") => s("foo")},
138138
default_cluster_key: Some("(a + 2, b)".to_string()),
139-
cluster_keys: vec!["(a + 2, b)".to_string()],
140-
default_cluster_key_id: Some(0),
139+
default_cluster_key_id: 0,
141140
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
142141
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
143142
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v024_table_meta.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,7 @@ fn test_decode_v24_table_meta() -> anyhow::Result<()> {
136136
part_prefix: "lulu_".to_string(),
137137
options: btreemap! {s("xyz") => s("foo")},
138138
default_cluster_key: Some("(a + 2, b)".to_string()),
139-
cluster_keys: vec!["(a + 2, b)".to_string()],
140-
default_cluster_key_id: Some(0),
139+
default_cluster_key_id: 0,
141140
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
142141
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
143142
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v033_table_meta.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,7 @@ fn test_decode_v33_table_meta() -> anyhow::Result<()> {
138138
engine_options: btreemap! {s("abc") => s("def")},
139139
options: btreemap! {s("xyz") => s("foo")},
140140
default_cluster_key: Some("(a + 2, b)".to_string()),
141-
cluster_keys: vec!["(a + 2, b)".to_string()],
142-
default_cluster_key_id: Some(0),
141+
default_cluster_key_id: 0,
143142
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
144143
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
145144
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v040_table_meta.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,7 @@ fn test_decode_v40_table_meta() -> anyhow::Result<()> {
138138
engine_options: btreemap! {s("abc") => s("def")},
139139
options: btreemap! {s("xyz") => s("foo")},
140140
default_cluster_key: Some("(a + 2, b)".to_string()),
141-
cluster_keys: vec!["(a + 2, b)".to_string()],
142-
default_cluster_key_id: Some(0),
141+
default_cluster_key_id: 0,
143142
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
144143
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
145144
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v044_table_meta.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,7 @@ fn test_decode_v44_table_meta() -> anyhow::Result<()> {
8989
engine_options: btreemap! {s("abc") => s("def")},
9090
options: btreemap! {s("xyz") => s("foo")},
9191
default_cluster_key: Some("(a + 2, b)".to_string()),
92-
cluster_keys: vec!["(a + 2, b)".to_string()],
93-
default_cluster_key_id: Some(0),
92+
default_cluster_key_id: 0,
9493
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
9594
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
9695
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v055_table_meta.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,7 @@ fn test_decode_v55_table_meta() -> anyhow::Result<()> {
8080
engine_options: btreemap! {s("abc") => s("def")},
8181
options: btreemap! {s("xyz") => s("foo")},
8282
default_cluster_key: Some("(a + 2, b)".to_string()),
83-
cluster_keys: vec!["(a + 2, b)".to_string()],
84-
default_cluster_key_id: Some(0),
83+
default_cluster_key_id: 0,
8584
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
8685
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
8786
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v074_table_db_meta.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,7 @@ fn test_decode_v74_table_meta() -> anyhow::Result<()> {
7979
engine_options: btreemap! {s("abc") => s("def")},
8080
options: btreemap! {s("xyz") => s("foo")},
8181
default_cluster_key: Some("(a + 2, b)".to_string()),
82-
cluster_keys: vec!["(a + 2, b)".to_string()],
83-
default_cluster_key_id: Some(0),
82+
default_cluster_key_id: 0,
8483
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
8584
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
8685
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v080_geometry_datatype.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,7 @@ fn test_decode_v80_table_meta() -> anyhow::Result<()> {
206206
engine_options: btreemap! {s("abc") => s("def")},
207207
options: btreemap! {s("xyz") => s("foo")},
208208
default_cluster_key: Some("(a + 2, b)".to_string()),
209-
cluster_keys: vec!["(a + 2, b)".to_string()],
210-
default_cluster_key_id: Some(0),
209+
default_cluster_key_id: 0,
211210
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
212211
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
213212
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v082_table_index.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,7 @@ fn test_decode_v82_table_meta() -> anyhow::Result<()> {
8080
engine_options: btreemap! {s("abc") => s("def")},
8181
options: btreemap! {s("xyz") => s("foo")},
8282
default_cluster_key: Some("(a + 2, b)".to_string()),
83-
cluster_keys: vec!["(a + 2, b)".to_string()],
84-
default_cluster_key_id: Some(0),
83+
default_cluster_key_id: 0,
8584
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
8685
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
8786
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v085_table_index.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,7 @@ fn test_decode_v85_table_meta() -> anyhow::Result<()> {
8080
engine_options: btreemap! {s("abc") => s("def")},
8181
options: btreemap! {s("xyz") => s("foo")},
8282
default_cluster_key: Some("(a + 2, b)".to_string()),
83-
cluster_keys: vec!["(a + 2, b)".to_string()],
84-
default_cluster_key_id: Some(0),
83+
default_cluster_key_id: 0,
8584
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
8685
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
8786
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v086_table_index.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,7 @@ fn test_decode_v86_table_meta() -> anyhow::Result<()> {
8383
engine_options: btreemap! {s("abc") => s("def")},
8484
options: btreemap! {s("xyz") => s("foo")},
8585
default_cluster_key: Some("(a + 2, b)".to_string()),
86-
cluster_keys: vec!["(a + 2, b)".to_string()],
87-
default_cluster_key_id: Some(0),
86+
default_cluster_key_id: 0,
8887
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
8988
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
9089
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v094_table_meta.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@ fn test_decode_v94_table_meta() -> anyhow::Result<()> {
7878
engine_options: btreemap! {s("abc") => s("def")},
7979
options: btreemap! {s("xyz") => s("foo")},
8080
default_cluster_key: Some("(a + 2, b)".to_string()),
81-
cluster_keys: vec!["(a + 2, b)".to_string()],
82-
default_cluster_key_id: Some(0),
81+
default_cluster_key_id: 0,
8382
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
8483
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
8584
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v107_geography_datatype.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,7 @@ fn test_decode_v107_table_meta() -> anyhow::Result<()> {
211211
engine_options: btreemap! {s("abc") => s("def")},
212212
options: btreemap! {s("xyz") => s("foo")},
213213
default_cluster_key: Some("(a + 2, b)".to_string()),
214-
cluster_keys: vec!["(a + 2, b)".to_string()],
215-
default_cluster_key_id: Some(0),
214+
default_cluster_key_id: 0,
216215
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
217216
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
218217
comment: s("table_comment"),

src/meta/proto-conv/tests/it/v114_interval_datatype.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,7 @@ fn test_decode_v114_table_meta() -> anyhow::Result<()> {
202202
engine_options: btreemap! {s("abc") => s("def")},
203203
options: btreemap! {s("xyz") => s("foo")},
204204
default_cluster_key: Some("(a + 2, b)".to_string()),
205-
cluster_keys: vec!["(a + 2, b)".to_string()],
206-
default_cluster_key_id: Some(0),
205+
default_cluster_key_id: 0,
207206
created_on: Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap(),
208207
updated_on: Utc.with_ymd_and_hms(2014, 11, 29, 12, 0, 10).unwrap(),
209208
comment: s("table_comment"),

src/query/catalog/src/table.rs

+18-33
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
use std::any::Any;
1616
use std::collections::BTreeMap;
17+
use std::collections::HashMap;
1718
use std::sync::Arc;
1819

1920
use chrono::DateTime;
@@ -22,12 +23,13 @@ use databend_common_exception::ErrorCode;
2223
use databend_common_exception::Result;
2324
use databend_common_expression::BlockThresholds;
2425
use databend_common_expression::ColumnId;
25-
use databend_common_expression::RemoteExpr;
2626
use databend_common_expression::Scalar;
2727
use databend_common_expression::TableSchema;
2828
use databend_common_io::constants::DEFAULT_BLOCK_BUFFER_SIZE;
2929
use databend_common_io::constants::DEFAULT_BLOCK_MAX_ROWS;
3030
use databend_common_io::constants::DEFAULT_BLOCK_MIN_ROWS;
31+
use databend_common_meta_app::app_error::AppError;
32+
use databend_common_meta_app::app_error::UnknownTableId;
3133
use databend_common_meta_app::schema::TableIdent;
3234
use databend_common_meta_app::schema::TableInfo;
3335
use databend_common_meta_app::schema::TableMeta;
@@ -37,9 +39,12 @@ use databend_common_meta_types::MetaId;
3739
use databend_common_pipeline_core::Pipeline;
3840
use databend_common_storage::Histogram;
3941
use databend_common_storage::StorageMetrics;
42+
use databend_storages_common_table_meta::meta::ClusterKey;
4043
use databend_storages_common_table_meta::meta::SnapshotId;
4144
use databend_storages_common_table_meta::meta::TableSnapshot;
4245
use databend_storages_common_table_meta::table::ChangeType;
46+
use databend_storages_common_table_meta::table::ClusterType;
47+
use databend_storages_common_table_meta::table::OPT_KEY_CLUSTER_TYPE;
4348
use databend_storages_common_table_meta::table::OPT_KEY_TEMP_PREFIX;
4449
use databend_storages_common_table_meta::table_id_ranges::is_temp_table_id;
4550

@@ -117,8 +122,18 @@ pub trait Table: Sync + Send {
117122
false
118123
}
119124

120-
fn cluster_keys(&self, _ctx: Arc<dyn TableContext>) -> Vec<RemoteExpr<String>> {
121-
vec![]
125+
fn cluster_key_meta(&self) -> Option<ClusterKey> {
126+
None
127+
}
128+
129+
fn cluster_type(&self) -> Option<ClusterType> {
130+
self.cluster_key_meta()?;
131+
let cluster_type = self
132+
.options()
133+
.get(OPT_KEY_CLUSTER_TYPE)
134+
.and_then(|s| s.parse::<ClusterType>().ok())
135+
.unwrap_or(ClusterType::Linear);
136+
Some(cluster_type)
122137
}
123138

124139
fn change_tracking_enabled(&self) -> bool {
@@ -159,31 +174,6 @@ pub trait Table: Sync + Send {
159174
false
160175
}
161176

162-
#[async_backtrace::framed]
163-
async fn alter_table_cluster_keys(
164-
&self,
165-
ctx: Arc<dyn TableContext>,
166-
cluster_key: String,
167-
cluster_type: String,
168-
) -> Result<()> {
169-
let (_, _, _) = (ctx, cluster_key, cluster_type);
170-
171-
Err(ErrorCode::UnsupportedEngineParams(format!(
172-
"Altering table cluster keys is not supported for the '{}' engine.",
173-
self.engine()
174-
)))
175-
}
176-
177-
#[async_backtrace::framed]
178-
async fn drop_table_cluster_keys(&self, ctx: Arc<dyn TableContext>) -> Result<()> {
179-
let _ = ctx;
180-
181-
Err(ErrorCode::UnsupportedEngineParams(format!(
182-
"Dropping table cluster keys is not supported for the '{}' engine.",
183-
self.engine()
184-
)))
185-
}
186-
187177
/// Gather partitions to be scanned according to the push_downs
188178
#[async_backtrace::framed]
189179
async fn read_partitions(
@@ -584,11 +574,6 @@ pub struct NavigationDescriptor {
584574
pub point: NavigationPoint,
585575
}
586576

587-
use std::collections::HashMap;
588-
589-
use databend_common_meta_app::app_error::AppError;
590-
use databend_common_meta_app::app_error::UnknownTableId;
591-
592577
#[derive(serde::Serialize, serde::Deserialize, Clone, Debug, Default)]
593578
pub struct ParquetTableColumnStatisticsProvider {
594579
column_stats: HashMap<ColumnId, Option<BasicColumnStatistics>>,

src/query/service/src/interpreters/hook/compact_hook.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ async fn compact_table(
194194

195195
{
196196
// do recluster.
197-
if !table.cluster_keys(ctx.clone()).is_empty() {
197+
if table.cluster_key_meta().is_some() {
198198
let recluster = RelOperator::Recluster(Recluster {
199199
catalog: compact_target.catalog,
200200
database: compact_target.database,

0 commit comments

Comments
 (0)