Files
email-tracker/external/duckdb/extension/parquet/include/parquet_field_id.hpp
2025-10-24 19:21:19 -05:00

40 lines
1.1 KiB
C++

#pragma once
#include "duckdb/common/serializer/buffered_file_writer.hpp"
#include "duckdb/common/case_insensitive_map.hpp"
namespace duckdb {
struct FieldID;
struct ChildFieldIDs {
ChildFieldIDs();
ChildFieldIDs Copy() const;
unique_ptr<case_insensitive_map_t<FieldID>> ids;
void Serialize(Serializer &serializer) const;
static ChildFieldIDs Deserialize(Deserializer &source);
};
struct FieldID {
public:
static constexpr const auto DUCKDB_FIELD_ID = "__duckdb_field_id";
FieldID();
explicit FieldID(int32_t field_id);
FieldID Copy() const;
bool set;
int32_t field_id;
ChildFieldIDs child_field_ids;
void Serialize(Serializer &serializer) const;
static FieldID Deserialize(Deserializer &source);
public:
static void GenerateFieldIDs(ChildFieldIDs &field_ids, idx_t &field_id, const vector<string> &names,
const vector<LogicalType> &sql_types);
static void GetFieldIDs(const Value &field_ids_value, ChildFieldIDs &field_ids,
unordered_set<uint32_t> &unique_field_ids,
const case_insensitive_map_t<LogicalType> &name_to_type_map);
};
} // namespace duckdb