Skip to content

Commit 0c90b93

Browse files
authored
chore: clean up unused clickhouse-related code. (#19709)
1 parent c699f63 commit 0c90b93

File tree

8 files changed

+83
-119
lines changed

8 files changed

+83
-119
lines changed

src/common/io/src/format_settings.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,9 @@ pub struct OutputFormatSettings {
145145
pub geometry_format: GeometryDataType,
146146
pub binary_format: BinaryDisplayFormat,
147147
pub http_json_result_mode: HttpHandlerDataFormat,
148+
pub headers: u8,
149+
pub json_compact: bool,
150+
pub json_strings: bool,
148151

149152
// used only in http handler response
150153
pub format_null_as_str: bool,
@@ -157,6 +160,9 @@ impl Default for OutputFormatSettings {
157160
geometry_format: GeometryDataType::default(),
158161
binary_format: BinaryDisplayFormat::Hex,
159162
http_json_result_mode: HttpHandlerDataFormat::Display,
163+
headers: 0,
164+
json_compact: false,
165+
json_strings: false,
160166
format_null_as_str: false,
161167
}
162168
}

src/query/formats/src/clickhouse.rs

Lines changed: 0 additions & 88 deletions
This file was deleted.

src/query/formats/src/file_format_type.rs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ use databend_common_io::prelude::OutputFormatSettings;
1919
use databend_common_meta_app::principal::FileFormatParams;
2020
use databend_common_meta_app::principal::StageFileFormatType;
2121

22-
use crate::clickhouse::ClickhouseSuffix;
2322
use crate::field_encoder::FieldEncoderCSV;
2423
use crate::output_format::CSVOutputFormat;
2524
use crate::output_format::JSONOutputFormat;
@@ -36,13 +35,12 @@ pub fn get_output_format(
3635
schema: TableSchemaRef,
3736
params: FileFormatParams,
3837
settings: OutputFormatSettings,
39-
clickhouse: Option<ClickhouseSuffix>,
4038
) -> Result<Box<dyn OutputFormat>> {
4139
let output: Box<dyn OutputFormat> = match &params {
4240
FileFormatParams::Csv(params) => {
4341
let field_encoder = FieldEncoderCSV::create_csv(params, settings.clone());
44-
let headers = if let Some(options) = &clickhouse {
45-
options.headers
42+
let headers = if settings.headers != 0 {
43+
settings.headers
4644
} else if params.output_header {
4745
1
4846
} else {
@@ -57,8 +55,8 @@ pub fn get_output_format(
5755
}
5856
FileFormatParams::Text(params) => {
5957
let field_encoder = FieldEncoderCSV::create_tsv(params, settings.clone());
60-
let headers = if let Some(options) = &clickhouse {
61-
options.headers
58+
let headers = if settings.headers != 0 {
59+
settings.headers
6260
} else if params.output_header {
6361
1
6462
} else {
@@ -72,9 +70,8 @@ pub fn get_output_format(
7270
))
7371
}
7472
FileFormatParams::NdJson(_params) => {
75-
let options = clickhouse.clone().unwrap_or_default();
76-
let headers = options.headers;
77-
match (options.is_strings, options.is_compact) {
73+
let headers = settings.headers;
74+
match (settings.json_strings, settings.json_compact) {
7875
// string, compact, name, type
7976
// not compact
8077
(false, false) => Box::new(NDJSONOutputFormatBase::<false, false>::create(

src/query/formats/src/lib.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,13 @@
1717
#![allow(clippy::collapsible_if)]
1818

1919
mod binary;
20-
mod clickhouse;
2120
mod common_settings;
2221
mod delimiter;
2322
mod field_decoder;
2423
pub mod field_encoder;
2524
mod file_format_type;
2625
pub mod output_format;
2726

28-
pub use clickhouse::ClickhouseFormatType;
2927
pub use delimiter::RecordDelimiter;
3028
pub use field_decoder::*;
3129
pub use file_format_type::FileFormatTypeExt;

src/query/formats/src/output_format/mod.rs

Lines changed: 62 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ pub trait OutputFormat: Send {
4242

4343
#[cfg(test)]
4444
mod test_utils {
45+
use std::str::FromStr;
46+
47+
use databend_common_exception::ErrorCode;
4548
use databend_common_exception::Result;
4649
use databend_common_expression::Column;
4750
use databend_common_expression::DataBlock;
@@ -58,14 +61,21 @@ mod test_utils {
5861
use databend_common_expression::types::nullable::NullableColumn;
5962
use databend_common_expression::types::number::Float64Type;
6063
use databend_common_expression::types::number::Int32Type;
64+
use databend_common_io::prelude::OutputFormatSettings;
6165
use databend_common_meta_app::principal::FileFormatParams;
66+
use databend_common_meta_app::principal::StageFileFormatType;
6267
use databend_common_meta_app::tenant::Tenant;
6368
use databend_common_settings::Settings;
6469

6570
use super::OutputFormat;
66-
use crate::ClickhouseFormatType;
6771
use crate::get_output_format;
6872

73+
const SUFFIX_WITH_NAMES_AND_TYPES: &str = "withnamesandtypes";
74+
const SUFFIX_WITH_NAMES: &str = "withnames";
75+
const SUFFIX_COMPACT: &str = "compact";
76+
const SUFFIX_STRINGS: &str = "strings";
77+
const SUFFIX_EACHROW: &str = "eachrow";
78+
6979
pub fn gen_schema_and_block(
7080
fields: Vec<TableField>,
7181
columns: Vec<Column>,
@@ -124,15 +134,62 @@ mod test_utils {
124134
gen_schema_and_block(fields, columns)
125135
}
126136

137+
fn try_remove_suffix<'a>(name: &'a str, suffix: &str) -> (&'a str, bool) {
138+
if name.ends_with(suffix) {
139+
(&name[0..(name.len() - suffix.len())], true)
140+
} else {
141+
(name, false)
142+
}
143+
}
144+
145+
fn parse_clickhouse_format(
146+
name: &str,
147+
settings: &mut OutputFormatSettings,
148+
) -> Result<StageFileFormatType> {
149+
let lower = name.to_lowercase();
150+
settings.headers = 0;
151+
settings.json_compact = false;
152+
settings.json_strings = false;
153+
154+
let (mut base, mut ok) = try_remove_suffix(&lower, SUFFIX_WITH_NAMES_AND_TYPES);
155+
if ok {
156+
settings.headers = 2;
157+
} else {
158+
(base, ok) = try_remove_suffix(base, SUFFIX_WITH_NAMES);
159+
if ok {
160+
settings.headers = 1;
161+
}
162+
}
163+
164+
if base.starts_with("json") {
165+
let is_eachrow;
166+
(base, is_eachrow) = try_remove_suffix(base, SUFFIX_EACHROW);
167+
(base, settings.json_strings) = try_remove_suffix(base, SUFFIX_STRINGS);
168+
(base, settings.json_compact) = try_remove_suffix(base, SUFFIX_COMPACT);
169+
if base != "json" {
170+
return Err(ErrorCode::UnknownFormat(name));
171+
} else {
172+
if !settings.json_compact && settings.headers != 0 {
173+
return Err(ErrorCode::UnknownFormat(name));
174+
}
175+
if is_eachrow {
176+
base = "ndjson"
177+
}
178+
}
179+
}
180+
181+
StageFileFormatType::from_str(base).map_err(ErrorCode::UnknownFormat)
182+
}
183+
127184
pub fn get_output_format_clickhouse(
128185
format_name: &str,
129186
schema: TableSchemaRef,
130187
) -> Result<Box<dyn OutputFormat>> {
131-
let format = ClickhouseFormatType::parse_clickhouse_format(format_name)?;
132-
let settings =
188+
let mut settings =
133189
Settings::create(Tenant::new_literal("default")).get_output_format_settings()?;
134-
let params = FileFormatParams::default_by_type(format.typ.clone())?;
135-
get_output_format(schema, params, settings, Some(format.suffixes))
190+
let format = parse_clickhouse_format(format_name, &mut settings)?;
191+
let params = FileFormatParams::default_by_type(format)?;
192+
get_output_format(schema, params, settings)
136193
}
137194

138195
pub fn test_data_block(is_nullable: bool) -> Result<()> {

src/query/formats/src/output_format/tsv.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ mod test {
183183
false,
184184
)?;
185185
let mut output_format =
186-
get_output_format(schema, params, settings.get_output_format_settings()?, None)?;
186+
get_output_format(schema, params, settings.get_output_format_settings()?)?;
187187
let buffer = output_format.serialize_block(&block)?;
188188

189189
let csv_block = String::from_utf8(buffer)?;
@@ -242,7 +242,7 @@ mod test {
242242
let params =
243243
FileFormatParams::try_from_reader(FileFormatOptionsReader::from_map(options), false)?;
244244
let mut output_format =
245-
get_output_format(schema, params, settings.get_output_format_settings()?, None)?;
245+
get_output_format(schema, params, settings.get_output_format_settings()?)?;
246246

247247
let prefix = String::from_utf8(output_format.serialize_prefix()?)?;
248248
let body = String::from_utf8(output_format.serialize_block(&block)?)?;
@@ -276,7 +276,7 @@ mod test {
276276
false,
277277
)?;
278278
let mut output_format =
279-
get_output_format(schema, params, settings.get_output_format_settings()?, None)?;
279+
get_output_format(schema, params, settings.get_output_format_settings()?)?;
280280

281281
let buffer = output_format.serialize_block(&block)?;
282282

src/query/settings/src/settings.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,9 @@ impl Settings {
116116
geometry_format,
117117
binary_format,
118118
http_json_result_mode,
119+
headers: 0,
120+
json_compact: false,
121+
json_strings: false,
119122
format_null_as_str,
120123
})
121124
}

src/query/storages/stage/src/append/row_based_file/pipeline.rs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -65,22 +65,13 @@ pub(crate) fn append_data_to_row_based_files(
6565
let format = &info.stage.file_format_params;
6666

6767
let format_settings = ctx.get_output_format_settings()?;
68-
let output_format = get_output_format(
69-
schema.clone(),
70-
format.clone(),
71-
format_settings.clone(),
72-
None,
73-
)?;
68+
let output_format = get_output_format(schema.clone(), format.clone(), format_settings.clone())?;
7469
let compression = info.stage.file_format_params.clone().compression();
7570
let prefix = output_format.serialize_prefix()?;
7671

7772
pipeline.try_add_transformer(|| {
78-
let output_format = get_output_format(
79-
schema.clone(),
80-
format.clone(),
81-
format_settings.clone(),
82-
None,
83-
)?;
73+
let output_format =
74+
get_output_format(schema.clone(), format.clone(), format_settings.clone())?;
8475
Ok(SerializeProcessor::new(ctx.clone(), output_format))
8576
})?;
8677
pipeline.try_resize(1)?;

0 commit comments

Comments
 (0)