Fixed tests

This commit is contained in:
Maksim Kita 2021-06-09 23:51:08 +03:00
parent eabeb3076f
commit 021e5f838a
4 changed files with 12 additions and 27 deletions

View File

@ -10,6 +10,7 @@
#include <DataStreams/IBlockInputStream.h>
#include <DataTypes/DataTypesDecimal.h>
#include <DataTypes/DataTypeArray.h>
#include <DataTypes/DataTypeNullable.h>
#include <Core/Block.h>
#include <Dictionaries/IDictionary.h>
#include <Dictionaries/DictionaryStructure.h>
@ -244,7 +245,7 @@ public:
{
if constexpr (std::is_same_v<DictionaryAttributeType, Array>)
{
if (const auto * array_type = typeid_cast<const DataTypeArray *>(dictionary_attribute.nested_type.get()))
if (const auto * array_type = typeid_cast<const DataTypeArray *>(dictionary_attribute.type.get()))
{
auto nested_column = array_type->getNestedType()->createColumn();
return ColumnArray::create(std::move(nested_column));
@ -264,7 +265,8 @@ public:
}
else if constexpr (IsDecimalNumber<DictionaryAttributeType>)
{
auto scale = getDecimalScale(*dictionary_attribute.nested_type);
auto nested_type = removeNullable(dictionary_attribute.type);
auto scale = getDecimalScale(*nested_type);
return ColumnType::create(size, scale);
}
else if constexpr (is_arithmetic_v<DictionaryAttributeType>)

View File

@ -373,21 +373,9 @@ std::vector<DictionaryAttribute> DictionaryStructure::getAttributes(
const auto type_string = config.getString(prefix + "type");
const auto initial_type = DataTypeFactory::instance().get(type_string);
auto nested_type = initial_type;
bool is_nullable = false;
// while (const auto * array_type = typeid_cast<const DataTypeArray *>(nested_type.get()))
// {
// is_array = true;
// nested_type = array_type->getNestedType();
// }
if (nested_type->isNullable())
{
is_nullable = true;
nested_type = removeNullable(nested_type);
}
bool is_nullable = initial_type->isNullable();
auto nested_type = removeNullable(initial_type);
const auto underlying_type = getAttributeUnderlyingType(nested_type);
const auto expression = config.getString(prefix + "expression", "");
@ -407,7 +395,7 @@ std::vector<DictionaryAttribute> DictionaryStructure::getAttributes(
else
{
ReadBufferFromString null_value_buffer{null_value_string};
auto column_with_null_value = nested_type->createColumn();
auto column_with_null_value = initial_type->createColumn();
initial_type->getDefaultSerialization()->deserializeTextEscaped(*column_with_null_value, null_value_buffer, format_settings);
null_value = (*column_with_null_value)[0];
}
@ -415,14 +403,11 @@ std::vector<DictionaryAttribute> DictionaryStructure::getAttributes(
catch (Exception & e)
{
String dictionary_name = config.getString(".dictionary.name", "");
e.addMessage("While parsing null_value for attribute with name " + name
+ " in dictionary " + dictionary_name);
e.addMessage(fmt::format("While parsing null_value for attribute with name {} in dictionary {}", name, dictionary_name));
throw;
}
}
std::cerr << "DictionaryStructure::getAttributes null value " << null_value.dump() << std::endl;
const auto hierarchical = config.getBool(prefix + "hierarchical", false);
const auto injective = config.getBool(prefix + "injective", false);
const auto is_object_id = config.getBool(prefix + "is_object_id", false);
@ -441,8 +426,6 @@ std::vector<DictionaryAttribute> DictionaryStructure::getAttributes(
name,
underlying_type,
initial_type,
initial_type->getDefaultSerialization(),
nested_type,
expression,
null_value,
hierarchical,

View File

@ -75,8 +75,6 @@ struct DictionaryAttribute final
const std::string name;
const AttributeUnderlyingType underlying_type;
const DataTypePtr type;
const SerializationPtr serialization;
const DataTypePtr nested_type;
const std::string expression;
const Field null_value;
const bool hierarchical;

View File

@ -358,7 +358,8 @@ void ExternalQueryBuilder::composeKeyCondition(const Columns & key_columns, cons
/// key_i=value_i
writeQuoted(key_description.name, out);
writeString("=", out);
key_description.serialization->serializeTextQuoted(*key_columns[i], row, out, format_settings);
auto serialization = key_description.type->getDefaultSerialization();
serialization->serializeTextQuoted(*key_columns[i], row, out, format_settings);
}
}
@ -415,7 +416,8 @@ void ExternalQueryBuilder::composeKeyTuple(const Columns & key_columns, const si
writeString(", ", out);
first = false;
(*dict_struct.key)[i].serialization->serializeTextQuoted(*key_columns[i], row, out, format_settings);
auto serialization = (*dict_struct.key)[i].type->getDefaultSerialization();
serialization->serializeTextQuoted(*key_columns[i], row, out, format_settings);
}
writeString(")", out);