Skip to content

Commit 81ef7ba

Browse files
fix
1 parent 17945e4 commit 81ef7ba

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
tracing::debug!("Adding column: {}", add_column_query);
840856
run_query(&add_column_query, client).await.map_err(|e| {
@@ -3412,19 +3428,34 @@ SETTINGS enable_mixed_granularity_parts = 1, index_granularity = 8192, index_gra
34123428
.map(|d| format!(" DEFAULT {}", d))
34133429
.unwrap_or_default();
34143430

3431+
let ttl_clause = clickhouse_column
3432+
.ttl
3433+
.as_ref()
3434+
.map(|t| format!(" TTL {}", t))
3435+
.unwrap_or_default();
3436+
3437+
let codec_clause = clickhouse_column
3438+
.codec
3439+
.as_ref()
3440+
.map(|c| format!(" CODEC({})", c))
3441+
.unwrap_or_default();
3442+
34153443
let add_column_query = format!(
3416-
"ALTER TABLE `{}`.`{}` ADD COLUMN `{}` {}{} {}",
3444+
"ALTER TABLE `{}`.`{}`{} ADD COLUMN `{}` {}{}{}{} {}",
34173445
"test_db",
34183446
"test_table",
3447+
"",
34193448
clickhouse_column.name,
34203449
column_type_string,
34213450
default_clause,
3451+
codec_clause,
3452+
ttl_clause,
34223453
"FIRST"
34233454
);
34243455

34253456
assert_eq!(
34263457
add_column_query,
3427-
"ALTER TABLE `test_db`.`test_table` ADD COLUMN `count` Int32 DEFAULT 42 FIRST"
3458+
"ALTER TABLE `test_db`.`test_table` ADD COLUMN `count` Int32 DEFAULT 42 FIRST"
34283459
);
34293460
}
34303461

@@ -3460,19 +3491,34 @@ SETTINGS enable_mixed_granularity_parts = 1, index_granularity = 8192, index_gra
34603491
.map(|d| format!(" DEFAULT {}", d))
34613492
.unwrap_or_default();
34623493

3494+
let ttl_clause = clickhouse_column
3495+
.ttl
3496+
.as_ref()
3497+
.map(|t| format!(" TTL {}", t))
3498+
.unwrap_or_default();
3499+
3500+
let codec_clause = clickhouse_column
3501+
.codec
3502+
.as_ref()
3503+
.map(|c| format!(" CODEC({})", c))
3504+
.unwrap_or_default();
3505+
34633506
let add_column_query = format!(
3464-
"ALTER TABLE `{}`.`{}` ADD COLUMN `{}` {}{} {}",
3507+
"ALTER TABLE `{}`.`{}`{} ADD COLUMN `{}` {}{}{}{} {}",
34653508
"test_db",
34663509
"test_table",
3510+
"",
34673511
clickhouse_column.name,
34683512
column_type_string,
34693513
default_clause,
3514+
codec_clause,
3515+
ttl_clause,
34703516
"AFTER `id`"
34713517
);
34723518

34733519
assert_eq!(
34743520
add_column_query,
3475-
"ALTER TABLE `test_db`.`test_table` ADD COLUMN `description` Nullable(String) DEFAULT 'default text' AFTER `id`"
3521+
"ALTER TABLE `test_db`.`test_table` ADD COLUMN `description` Nullable(String) DEFAULT 'default text' AFTER `id`"
34763522
);
34773523
}
34783524

0 commit comments

Comments
 (0)