mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-21 09:10:48 +00:00
renamed methods with collator in ColumnString, removed catching exception [#CONV-7651]
This commit is contained in:
parent
5981e8a745
commit
7c9a0f8ac1
@ -240,7 +240,7 @@ public:
|
||||
}
|
||||
|
||||
/// Версия compareAt для locale-sensitive сравнения строк
|
||||
int compareAt(size_t n, size_t m, const IColumn & rhs_, const Collator & collator) const
|
||||
int compareAtWithCollation(size_t n, size_t m, const IColumn & rhs_, const Collator & collator) const
|
||||
{
|
||||
const ColumnString & rhs = static_cast<const ColumnString &>(rhs_);
|
||||
|
||||
@ -288,7 +288,7 @@ public:
|
||||
};
|
||||
|
||||
/// Сортировка с учетом Collation
|
||||
Permutation getPermutation(const Collator & collator) const
|
||||
Permutation getPermutationWithCollation(const Collator & collator) const
|
||||
{
|
||||
size_t s = offsets.size();
|
||||
Permutation res(s);
|
||||
|
@ -150,7 +150,7 @@ struct SortCursorWithCollation
|
||||
if (impl->need_collation[i])
|
||||
{
|
||||
const ColumnString & column_string = dynamic_cast<const ColumnString &>(*impl->sort_columns[i]);
|
||||
res = column_string.compareAt(impl->pos, rhs.impl->pos, *(rhs.impl->sort_columns[i]), *impl->desc[i].collator);
|
||||
res = column_string.compareAtWithCollation(impl->pos, rhs.impl->pos, *(rhs.impl->sort_columns[i]), *impl->desc[i].collator);
|
||||
}
|
||||
else
|
||||
res = impl->sort_columns[i]->compareAt(impl->pos, rhs.impl->pos, *(rhs.impl->sort_columns[i]));
|
||||
|
@ -47,7 +47,7 @@ struct PartialSortingLessWithCollation
|
||||
if (needCollation(it->first, it->second))
|
||||
{
|
||||
const ColumnString & column_string = dynamic_cast<const ColumnString &>(*it->first);
|
||||
res = column_string.compareAt(a, b, *it->first, *it->second.collator);
|
||||
res = column_string.compareAtWithCollation(a, b, *it->first, *it->second.collator);
|
||||
}
|
||||
else
|
||||
res = it->first->compareAt(a, b, *it->first);
|
||||
@ -79,7 +79,7 @@ void sortBlock(Block & block, const SortDescription & description)
|
||||
if (needCollation(column, description[0]))
|
||||
{
|
||||
const ColumnString & column_string = dynamic_cast<const ColumnString &>(*column);
|
||||
perm = column_string.getPermutation(*description[0].collator);
|
||||
perm = column_string.getPermutationWithCollation(*description[0].collator);
|
||||
}
|
||||
else
|
||||
perm = column->getPermutation();
|
||||
|
@ -470,22 +470,12 @@ bool ParserOrderByElement::parseImpl(Pos & pos, Pos end, ASTPtr & node, String &
|
||||
{
|
||||
ws.ignore(pos, end);
|
||||
|
||||
Pos locale_start = pos;
|
||||
ASTPtr locale_node;
|
||||
if (!collate_locale_parser.parse(pos, end, locale_node, expected))
|
||||
return false;
|
||||
|
||||
const String & locale = dynamic_cast<const ASTLiteral &>(*locale_node).value.safeGet<String>();
|
||||
try
|
||||
{
|
||||
collator = new Collator(locale);
|
||||
}
|
||||
catch (const DB::Exception & e)
|
||||
{
|
||||
pos = locale_start;
|
||||
expected = "unsupported collation locale";
|
||||
return false;
|
||||
}
|
||||
collator = new Collator(locale);
|
||||
}
|
||||
|
||||
node = new ASTOrderByElement(StringRange(begin, pos), direction, collator);
|
||||
|
Loading…
Reference in New Issue
Block a user