Skip to content

Commit c216686

Browse files
authored
Merge pull request ClickHouse#80170 from ClickHouse/hanfei/iceberg-field-constant
Organize Iceberg field name's literals better
2 parents 5776b89 + cd2e0a0 commit c216686

File tree

3 files changed

+114
-96
lines changed

3 files changed

+114
-96
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#pragma once
2+
3+
namespace Iceberg
4+
{
5+
/// This file define the field name appearing in Iceberg files.
6+
#define DEFINE_ICEBERG_FIELD_ALIAS(name, strval) constexpr const char * f_##name = #strval;
7+
#define DEFINE_ICEBERG_FIELD_COMPOUND(name, subname) constexpr const char * c_##name##_##subname = #name "." #subname;
8+
#define DEFINE_ICEBERG_FIELD(name) constexpr const char * f_##name = #name;
9+
10+
/// These variables begin with 'f_', following the field name in Iceberg files.
11+
DEFINE_ICEBERG_FIELD(data_file);
12+
DEFINE_ICEBERG_FIELD(location);
13+
DEFINE_ICEBERG_FIELD(manifest_path);
14+
DEFINE_ICEBERG_FIELD(schemas);
15+
DEFINE_ICEBERG_FIELD(sequence_number);
16+
DEFINE_ICEBERG_FIELD(snapshots);
17+
DEFINE_ICEBERG_FIELD(status);
18+
DEFINE_ICEBERG_FIELD(summary);
19+
DEFINE_ICEBERG_FIELD(transform);
20+
/// These variables replace `-` with underscore `_` to be compatible with c++ code.
21+
DEFINE_ICEBERG_FIELD_ALIAS(format_version, format-version);
22+
DEFINE_ICEBERG_FIELD_ALIAS(current_snapshot_id, current-snapshot-id);
23+
DEFINE_ICEBERG_FIELD_ALIAS(snapshot_id, snapshot-id);
24+
DEFINE_ICEBERG_FIELD_ALIAS(parent_snapshot_id, parent-snapshot-id);
25+
DEFINE_ICEBERG_FIELD_ALIAS(snapshot_log, snapshot-log);
26+
DEFINE_ICEBERG_FIELD_ALIAS(schema_id, schema-id);
27+
DEFINE_ICEBERG_FIELD_ALIAS(current_schema_id, current-schema-id);
28+
DEFINE_ICEBERG_FIELD_ALIAS(table_uuid, table-uuid);
29+
DEFINE_ICEBERG_FIELD_ALIAS(total_records, total-records);
30+
DEFINE_ICEBERG_FIELD_ALIAS(total_files_size, total-files-size);
31+
DEFINE_ICEBERG_FIELD_ALIAS(manifest_list, manifest-list);
32+
DEFINE_ICEBERG_FIELD_ALIAS(timestamp_ms, timestamp-ms);
33+
DEFINE_ICEBERG_FIELD_ALIAS(last_updated_ms, last-updated-ms);
34+
DEFINE_ICEBERG_FIELD_ALIAS(source_id, source-id);
35+
/// These are compound fields like `data_file.file_path`, we use prefix 'c_' to distinguish them.
36+
DEFINE_ICEBERG_FIELD_COMPOUND(data_file, file_path);
37+
DEFINE_ICEBERG_FIELD_COMPOUND(data_file, content);
38+
DEFINE_ICEBERG_FIELD_COMPOUND(data_file, partition);
39+
DEFINE_ICEBERG_FIELD_COMPOUND(data_file, value_counts);
40+
DEFINE_ICEBERG_FIELD_COMPOUND(data_file, column_sizes);
41+
DEFINE_ICEBERG_FIELD_COMPOUND(data_file, null_value_counts);
42+
DEFINE_ICEBERG_FIELD_COMPOUND(data_file, lower_bounds);
43+
DEFINE_ICEBERG_FIELD_COMPOUND(data_file, upper_bounds);
44+
}

0 commit comments

Comments
 (0)