Skip to content

Commit 5b34ab4

Browse files
fix
1 parent 49378d3 commit 5b34ab4

File tree

1 file changed

+57
-11
lines changed
  • apps/framework-cli/src/infrastructure/olap/clickhouse

1 file changed

+57
-11
lines changed

apps/framework-cli/src/infrastructure/olap/clickhouse/mod.rs

Lines changed: 57 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -812,29 +812,45 @@ async fn execute_add_table_column(
812812
let clickhouse_column = std_column_to_clickhouse_column(column.clone())?;
813813
let column_type_string = basic_field_type_to_string(&clickhouse_column.column_type)?;
814814

815+
let cluster_clause = cluster_name
816+
.map(|c| format!(" ON CLUSTER {}", c))
817+
.unwrap_or_default();
818+
815819
// Include DEFAULT clause if column has a default value
816820
let default_clause = clickhouse_column
817821
.default
818822
.as_ref()
819823
.map(|d| format!(" DEFAULT {}", d))
820824
.unwrap_or_default();
821825

822-
let cluster_clause = cluster_name
823-
.map(|c| format!(" ON CLUSTER {}", c))
826+
let codec_clause = clickhouse_column
827+
.codec
828+
.as_ref()
829+
.map(|c| format!(" CODEC({})", c))
824830
.unwrap_or_default();
825831

832+
let ttl_clause = clickhouse_column
833+
.ttl
834+
.as_ref()
835+
.map(|t| format!(" TTL {}", t))
836+
.unwrap_or_default();
837+
838+
let position_clause = match after_column {
839+
None => "FIRST".to_string(),
840+
Some(after_col) => format!("AFTER `{after_col}`"),
841+
};
842+
826843
let add_column_query = format!(
827-
"ALTER TABLE `{}`.`{}`{} ADD COLUMN `{}` {}{} {}",
844+
"ALTER TABLE `{}`.`{}`{} ADD COLUMN `{}` {}{}{}{} {}",
828845
db_name,
829846
table_name,
830847
cluster_clause,
831848
clickhouse_column.name,
832849
column_type_string,
833850
default_clause,
834-
match after_column {
835-
None => "FIRST".to_string(),
836-
Some(after_col) => format!("AFTER `{after_col}`"),
837-
}
851+
codec_clause,
852+
ttl_clause,
853+
position_clause
838854
);
839855
log::debug!("Adding column: {}", add_column_query);
840856
run_query(&add_column_query, client).await.map_err(|e| {
@@ -3257,19 +3273,34 @@ SETTINGS enable_mixed_granularity_parts = 1, index_granularity = 8192, index_gra
32573273
.map(|d| format!(" DEFAULT {}", d))
32583274
.unwrap_or_default();
32593275

3276+
let ttl_clause = clickhouse_column
3277+
.ttl
3278+
.as_ref()
3279+
.map(|t| format!(" TTL {}", t))
3280+
.unwrap_or_default();
3281+
3282+
let codec_clause = clickhouse_column
3283+
.codec
3284+
.as_ref()
3285+
.map(|c| format!(" CODEC({})", c))
3286+
.unwrap_or_default();
3287+
32603288
let add_column_query = format!(
3261-
"ALTER TABLE `{}`.`{}` ADD COLUMN `{}` {}{} {}",
3289+
"ALTER TABLE `{}`.`{}`{} ADD COLUMN `{}` {}{}{}{} {}",
32623290
"test_db",
32633291
"test_table",
3292+
"",
32643293
clickhouse_column.name,
32653294
column_type_string,
32663295
default_clause,
3296+
codec_clause,
3297+
ttl_clause,
32673298
"FIRST"
32683299
);
32693300

32703301
assert_eq!(
32713302
add_column_query,
3272-
"ALTER TABLE `test_db`.`test_table` ADD COLUMN `count` Int32 DEFAULT 42 FIRST"
3303+
"ALTER TABLE `test_db`.`test_table` ADD COLUMN `count` Int32 DEFAULT 42 FIRST"
32733304
);
32743305
}
32753306

@@ -3305,19 +3336,34 @@ SETTINGS enable_mixed_granularity_parts = 1, index_granularity = 8192, index_gra
33053336
.map(|d| format!(" DEFAULT {}", d))
33063337
.unwrap_or_default();
33073338

3339+
let ttl_clause = clickhouse_column
3340+
.ttl
3341+
.as_ref()
3342+
.map(|t| format!(" TTL {}", t))
3343+
.unwrap_or_default();
3344+
3345+
let codec_clause = clickhouse_column
3346+
.codec
3347+
.as_ref()
3348+
.map(|c| format!(" CODEC({})", c))
3349+
.unwrap_or_default();
3350+
33083351
let add_column_query = format!(
3309-
"ALTER TABLE `{}`.`{}` ADD COLUMN `{}` {}{} {}",
3352+
"ALTER TABLE `{}`.`{}`{} ADD COLUMN `{}` {}{}{}{} {}",
33103353
"test_db",
33113354
"test_table",
3355+
"",
33123356
clickhouse_column.name,
33133357
column_type_string,
33143358
default_clause,
3359+
codec_clause,
3360+
ttl_clause,
33153361
"AFTER `id`"
33163362
);
33173363

33183364
assert_eq!(
33193365
add_column_query,
3320-
"ALTER TABLE `test_db`.`test_table` ADD COLUMN `description` Nullable(String) DEFAULT 'default text' AFTER `id`"
3366+
"ALTER TABLE `test_db`.`test_table` ADD COLUMN `description` Nullable(String) DEFAULT 'default text' AFTER `id`"
33213367
);
33223368
}
33233369

0 commit comments

Comments
 (0)