fixed merge of nested arrays (escaped filename issue) [#CONV-7967]

This commit is contained in:
Vyacheslav Alipov 2013-08-07 19:45:47 +00:00
parent a5c799d7a3
commit 7b01659e44

View File

@ -122,8 +122,10 @@ private:
/// Для массивов используются отдельные потоки для размеров. /// Для массивов используются отдельные потоки для размеров.
if (const DataTypeArray * type_arr = dynamic_cast<const DataTypeArray *>(&type)) if (const DataTypeArray * type_arr = dynamic_cast<const DataTypeArray *>(&type))
{ {
String size_name = name + ARRAY_SIZES_COLUMN_NAME_SUFFIX + toString(level); String size_name = DataTypeNested::extractNestedTableName(name)
String escaped_size_name = escaped_column_name + ARRAY_SIZES_COLUMN_NAME_SUFFIX + toString(level); + ARRAY_SIZES_COLUMN_NAME_SUFFIX + toString(level);
String escaped_size_name = escapeForFileName(DataTypeNested::extractNestedTableName(name))
+ ARRAY_SIZES_COLUMN_NAME_SUFFIX + toString(level);
column_streams[size_name] = new ColumnStream( column_streams[size_name] = new ColumnStream(
part_tmp_path + escaped_size_name + ".bin", part_tmp_path + escaped_size_name + ".bin",
@ -142,7 +144,7 @@ private:
const NamesAndTypesList & columns = *type_nested->getNestedTypesList(); const NamesAndTypesList & columns = *type_nested->getNestedTypesList();
for (NamesAndTypesList::const_iterator it = columns.begin(); it != columns.end(); ++it) for (NamesAndTypesList::const_iterator it = columns.begin(); it != columns.end(); ++it)
addStream(name + "." + it->first, *it->second, level + 1); addStream(DataTypeNested::concatenateNestedName(name, it->first), *it->second, level + 1);
} }
else else
column_streams[name] = new ColumnStream( column_streams[name] = new ColumnStream(
@ -159,7 +161,8 @@ private:
/// Для массивов требуется сначала сериализовать размеры, а потом значения. /// Для массивов требуется сначала сериализовать размеры, а потом значения.
if (const DataTypeArray * type_arr = dynamic_cast<const DataTypeArray *>(&type)) if (const DataTypeArray * type_arr = dynamic_cast<const DataTypeArray *>(&type))
{ {
String size_name = name + ARRAY_SIZES_COLUMN_NAME_SUFFIX + toString(level); String size_name = DataTypeNested::extractNestedTableName(name)
+ ARRAY_SIZES_COLUMN_NAME_SUFFIX + toString(level);
ColumnStream & stream = *column_streams[size_name]; ColumnStream & stream = *column_streams[size_name];