diff --git a/ydb/core/kqp/opt/physical/effects/kqp_opt_phy_upsert_index.cpp b/ydb/core/kqp/opt/physical/effects/kqp_opt_phy_upsert_index.cpp index 405c9e0e3fb0..c9e11842f47a 100644 --- a/ydb/core/kqp/opt/physical/effects/kqp_opt_phy_upsert_index.cpp +++ b/ydb/core/kqp/opt/physical/effects/kqp_opt_phy_upsert_index.cpp @@ -365,10 +365,12 @@ TMaybe CheckUniqueConstraint(const TExprBase& inputRows, c for (const auto& [_, indexDesc] : indexes) { hasUniqIndex |= (indexDesc->Type == TIndexDescription::EType::GlobalSyncUnique); for (const auto& indexKeyCol : indexDesc->KeyColumns) { - if (inputColumns.contains(indexKeyCol) - && std::find(mainPk.begin(), mainPk.end(), indexKeyCol) == mainPk.end()) - { - usedIndexes.insert(indexDesc->Name); + if (inputColumns.contains(indexKeyCol)) { + if (!usedIndexes.contains(indexDesc->Name) && + std::find(mainPk.begin(), mainPk.end(), indexKeyCol) == mainPk.end()) + { + usedIndexes.insert(indexDesc->Name); + } } else { // input always contains key columns YQL_ENSURE(std::find(mainPk.begin(), mainPk.end(), indexKeyCol) == mainPk.end());