diff --git a/ydb/library/yql/core/type_ann/type_ann_pg.cpp b/ydb/library/yql/core/type_ann/type_ann_pg.cpp index 56237c8abcd7..04e6d45bce42 100644 --- a/ydb/library/yql/core/type_ann/type_ann_pg.cpp +++ b/ydb/library/yql/core/type_ann/type_ann_pg.cpp @@ -1823,7 +1823,7 @@ bool ScanColumns(TExprNode::TPtr root, TInputs& inputs, const THashSet& } } - if (x.Order && x.Order->IsDuplicated(TString(node->Tail().Content()))) { + if (x.Order && x.Order->IsDuplicatedIgnoreCase(TString(node->Tail().Content()))) { ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(node->Pos()), TStringBuilder() << "Column reference is ambiguous: " << node->Tail().Content())); isError = true; diff --git a/ydb/library/yql/core/ut/yql_column_order_ut.cpp b/ydb/library/yql/core/ut/yql_column_order_ut.cpp index 9af0fb4f6989..38e012b5dfda 100644 --- a/ydb/library/yql/core/ut/yql_column_order_ut.cpp +++ b/ydb/library/yql/core/ut/yql_column_order_ut.cpp @@ -32,6 +32,13 @@ Y_UNIT_TEST_SUITE(TYqlColumnOrder) { UNIT_ASSERT_EQUAL(order.AddColumn("a_generated_2_generated_2"), "a_generated_2_generated_2_generated_2"); } + Y_UNIT_TEST(ColumnOrderCaseSensetive) { + TColumnOrder order; + UNIT_ASSERT_EQUAL(order.AddColumn("a"), "a"); + UNIT_ASSERT_EQUAL(order.AddColumn("A"), "A"); + UNIT_ASSERT_EQUAL(order.IsDuplicatedIgnoreCase("a"), true); + } + Y_UNIT_TEST(ColumnOrderGeneratedMatchOverVectorCtor) { TColumnOrder order(TVector{"a", "a", "a_generated_2", "a_generated_2_generated_2"}); TVector got(order.begin(), order.end()); diff --git a/ydb/library/yql/core/yql_type_annotation.cpp b/ydb/library/yql/core/yql_type_annotation.cpp index 05c7403fe0bf..92eed308c1b2 100644 --- a/ydb/library/yql/core/yql_type_annotation.cpp +++ b/ydb/library/yql/core/yql_type_annotation.cpp @@ -150,7 +150,7 @@ TString TColumnOrder::AddColumn(const TString& name) { return name; } -bool TColumnOrder::IsDuplicated(const TString& name) const { +bool TColumnOrder::IsDuplicatedIgnoreCase(const TString& name) const { auto it = UseCountLcase_.find(to_lower(name)); return it != UseCount_.end() && it->second > 1; } diff --git a/ydb/library/yql/core/yql_type_annotation.h b/ydb/library/yql/core/yql_type_annotation.h index e94a2385d7a5..2c4c32aa9122 100644 --- a/ydb/library/yql/core/yql_type_annotation.h +++ b/ydb/library/yql/core/yql_type_annotation.h @@ -170,7 +170,7 @@ class TColumnOrder { explicit TColumnOrder(const TVector& order); TString AddColumn(const TString& name); - bool IsDuplicated(const TString& name) const; + bool IsDuplicatedIgnoreCase(const TString& name) const; void Shrink(size_t remain);