renamed methods with collator in ColumnString, removed catching exception [#CONV-7651]

This commit is contained in:
Vyacheslav Alipov 2013-05-30 14:28:27 +00:00
parent 5981e8a745
commit 7c9a0f8ac1
4 changed files with 6 additions and 16 deletions

View File

@ -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);

View File

@ -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]));

View File

@ -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();

View File

@ -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);