|
| 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