mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-23 10:10:50 +00:00
CLICKHOUSE-3772: Add size column
This commit is contained in:
parent
24a9bebec9
commit
f2451210d0
@ -12,32 +12,33 @@ namespace
|
||||
{
|
||||
void setTypePropertries(const DataTypePtr data_type, MutableColumns & res_columns)
|
||||
{
|
||||
res_columns[3]->insert(UInt64(data_type->isParametric()));
|
||||
res_columns[4]->insert(UInt64(data_type->haveSubtypes()));
|
||||
res_columns[5]->insert(UInt64(data_type->cannotBeStoredInTables()));
|
||||
res_columns[6]->insert(UInt64(data_type->isComparable()));
|
||||
res_columns[7]->insert(UInt64(data_type->canBeComparedWithCollation()));
|
||||
res_columns[8]->insert(UInt64(data_type->canBeUsedAsVersion()));
|
||||
res_columns[9]->insert(UInt64(data_type->isSummable()));
|
||||
res_columns[10]->insert(UInt64(data_type->canBeUsedInBitOperations()));
|
||||
res_columns[11]->insert(UInt64(data_type->canBeUsedInBooleanContext()));
|
||||
res_columns[12]->insert(UInt64(data_type->isCategorial()));
|
||||
res_columns[13]->insert(UInt64(data_type->isNullable()));
|
||||
res_columns[14]->insert(UInt64(data_type->onlyNull()));
|
||||
res_columns[15]->insert(UInt64(data_type->canBeInsideNullable()));
|
||||
res_columns[4]->insert(UInt64(data_type->isParametric()));
|
||||
res_columns[5]->insert(UInt64(data_type->haveSubtypes()));
|
||||
res_columns[6]->insert(UInt64(data_type->cannotBeStoredInTables()));
|
||||
res_columns[7]->insert(UInt64(data_type->isComparable()));
|
||||
res_columns[8]->insert(UInt64(data_type->canBeComparedWithCollation()));
|
||||
res_columns[9]->insert(UInt64(data_type->canBeUsedAsVersion()));
|
||||
res_columns[10]->insert(UInt64(data_type->isSummable()));
|
||||
res_columns[11]->insert(UInt64(data_type->canBeUsedInBitOperations()));
|
||||
res_columns[12]->insert(UInt64(data_type->canBeUsedInBooleanContext()));
|
||||
res_columns[13]->insert(UInt64(data_type->isCategorial()));
|
||||
res_columns[14]->insert(UInt64(data_type->isNullable()));
|
||||
res_columns[15]->insert(UInt64(data_type->onlyNull()));
|
||||
res_columns[16]->insert(UInt64(data_type->canBeInsideNullable()));
|
||||
}
|
||||
|
||||
void setComplexTypeProperties(const String & name, MutableColumns & res_columns)
|
||||
{
|
||||
res_columns[3]->insert(UInt64(1)); //complex types are always parametric
|
||||
res_columns[3]->insert(Null());
|
||||
res_columns[4]->insert(UInt64(1)); //complex types are always parametric
|
||||
if (name == "AggregateFunction")
|
||||
res_columns[4]->insert(UInt64(0));
|
||||
res_columns[5]->insert(UInt64(0));
|
||||
else if (name == "Tuple")
|
||||
res_columns[4]->insert(Null());
|
||||
res_columns[5]->insert(Null());
|
||||
else
|
||||
res_columns[4]->insert(UInt64(1));
|
||||
res_columns[5]->insert(UInt64(1));
|
||||
|
||||
for (size_t i = 5; i < StorageSystemDataTypeFamilies::getNamesAndTypes().size(); ++i)
|
||||
for (size_t i = 6; i < StorageSystemDataTypeFamilies::getNamesAndTypes().size(); ++i)
|
||||
res_columns[i]->insert(Null());
|
||||
}
|
||||
|
||||
@ -80,13 +81,27 @@ void StorageSystemDataTypeFamilies::fillData(MutableColumns & res_columns) const
|
||||
try
|
||||
{
|
||||
DataTypePtr type_ptr;
|
||||
|
||||
Field size = Null();
|
||||
// hardcoded cases for simple parametric types
|
||||
if (boost::starts_with(name, "Enum"))
|
||||
{
|
||||
type_ptr = factory.get(name, createFakeEnumCreationAst());
|
||||
size = type_ptr->getMaximumSizeOfValueInMemory();
|
||||
}
|
||||
else if (name == "FixedString" || name == "BINARY")
|
||||
{
|
||||
type_ptr = factory.get(name, createFakeFixedStringAst());
|
||||
}
|
||||
else
|
||||
{
|
||||
type_ptr = factory.get(name);
|
||||
if (type_ptr->haveMaximumSizeOfValue())
|
||||
size = type_ptr->getMaximumSizeOfValueInMemory();
|
||||
}
|
||||
|
||||
res_columns[3]->insert(size);
|
||||
|
||||
setTypePropertries(type_ptr, res_columns);
|
||||
}
|
||||
catch (Exception & ex)
|
||||
|
@ -27,6 +27,7 @@ public:
|
||||
{"name", std::make_shared<DataTypeString>()},
|
||||
{"case_insensivie", std::make_shared<DataTypeNullable>(std::make_shared<DataTypeUInt8>())},
|
||||
{"alias_to", std::make_shared<DataTypeNullable>(std::make_shared<DataTypeString>())},
|
||||
{"size_in_bytes", std::make_shared<DataTypeNullable>(std::make_shared<DataTypeUInt16>())},
|
||||
{"parametric", std::make_shared<DataTypeNullable>(std::make_shared<DataTypeUInt8>())},
|
||||
{"have_subtypes", std::make_shared<DataTypeNullable>(std::make_shared<DataTypeUInt8>())},
|
||||
{"cannot_be_stored_in_tables", std::make_shared<DataTypeNullable>(std::make_shared<DataTypeUInt8>())},
|
||||
|
Loading…
Reference in New Issue
Block a user