#pragma once #include #include #include namespace DB { using NameToTypeMap = std::unordered_map; size_t getNumberOfDimensions(const IDataType & type); size_t getNumberOfDimensions(const IColumn & column); DataTypePtr getBaseTypeOfArray(const DataTypePtr & type); DataTypePtr createArrayOfType(DataTypePtr type, size_t dimension); DataTypePtr getDataTypeByColumn(const IColumn & column); void convertObjectsToTuples(NamesAndTypesList & columns_list, Block & block, const NamesAndTypesList & extended_storage_columns); DataTypePtr getLeastCommonTypeForObject(const DataTypes & types); NameSet getNamesOfObjectColumns(const NamesAndTypesList & columns_list); NamesAndTypesList extendObjectColumns(const NamesAndTypesList & columns_list, const NameToTypeMap & object_types, bool with_subcolumns); void finalizeObjectColumns(MutableColumns & columns); }