diff options
| author | Oleg Doronin <[email protected]> | 2025-09-30 15:24:41 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-09-30 16:24:41 +0300 |
| commit | 26207edfacb0dc3a6f400d3eaf708bf64fe4d35d (patch) | |
| tree | 9587e33c7518da502a03c2acf9959db97a9b3ed8 | |
| parent | 731435ddb5de2eefc75cee989758d5b3b780905e (diff) | |
cs validation has been fixed (#25903)
| -rw-r--r-- | ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp | 4 | ||||
| -rw-r--r-- | ydb/core/tx/schemeshard/olap/columns/schema.cpp | 11 | ||||
| -rw-r--r-- | ydb/core/tx/schemeshard/olap/columns/update.cpp | 1 | ||||
| -rw-r--r-- | ydb/core/tx/schemeshard/olap/columns/update.h | 1 |
4 files changed, 12 insertions, 5 deletions
diff --git a/ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp b/ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp index b73a4940301..d194baea04c 100644 --- a/ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp +++ b/ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp @@ -3602,10 +3602,6 @@ Y_UNIT_TEST_SUITE(KqpQueryService) { TKikimrRunner kikimr(serverSettings); auto db = kikimr.GetQueryClient(); - if (IsOlap) { - return; - } - { auto result = db.ExecuteQuery(Sprintf(R"( CREATE TABLE Table ( diff --git a/ydb/core/tx/schemeshard/olap/columns/schema.cpp b/ydb/core/tx/schemeshard/olap/columns/schema.cpp index 3ff56dbbdba..9e10152fbe9 100644 --- a/ydb/core/tx/schemeshard/olap/columns/schema.cpp +++ b/ydb/core/tx/schemeshard/olap/columns/schema.cpp @@ -84,7 +84,16 @@ bool TOlapColumnsDescription::ApplyUpdate( auto it = orderedKeyColumnIds.begin(); for (ui32 i = 0; i < orderedKeyColumnIds.size(); ++i, ++it) { KeyColumnIds.emplace_back(it->second); - Y_ABORT_UNLESS(i == it->first); + if (i != it->first) { + const TString missedColumnName = i < schemaUpdate.GetPrimaryKeyColumnNames().size() ? schemaUpdate.GetPrimaryKeyColumnNames()[i] : "@unknown"; + errors.AddError(NKikimrScheme::StatusSchemeError, Sprintf("Unknown column '%s' specified in key column list", missedColumnName.data())); + return false; + } + } + if (orderedKeyColumnIds.size() < schemaUpdate.GetPrimaryKeyColumnNames().size()) { + const TString missedColumnName = schemaUpdate.GetPrimaryKeyColumnNames()[orderedKeyColumnIds.size()]; + errors.AddError(NKikimrScheme::StatusSchemeError, Sprintf("Unknown column '%s' specified in key column list", missedColumnName.data())); + return false; } if (KeyColumnIds.empty()) { errors.AddError(NKikimrScheme::StatusSchemeError, "No primary key specified"); diff --git a/ydb/core/tx/schemeshard/olap/columns/update.cpp b/ydb/core/tx/schemeshard/olap/columns/update.cpp index 88cdcca3ef3..ba015456a7d 100644 --- a/ydb/core/tx/schemeshard/olap/columns/update.cpp +++ b/ydb/core/tx/schemeshard/olap/columns/update.cpp @@ -405,6 +405,7 @@ void TOlapColumnAdd::ParseFromLocalDB(const NKikimrSchemeOp::TOlapColumnDescript errors.AddError(NKikimrScheme::StatusSchemeError, TStringBuilder() << "Duplicate key column '" << pkKey << "'"); return false; } + PrimaryKeyColumnNames.emplace_back(pkKey); } TSet<TString> columnNames; diff --git a/ydb/core/tx/schemeshard/olap/columns/update.h b/ydb/core/tx/schemeshard/olap/columns/update.h index 5670ac5f23e..e08ad53cf78 100644 --- a/ydb/core/tx/schemeshard/olap/columns/update.h +++ b/ydb/core/tx/schemeshard/olap/columns/update.h @@ -80,6 +80,7 @@ private: YDB_READONLY_DEF(TVector<TOlapColumnAdd>, AddColumns); YDB_READONLY_DEF(TSet<TString>, DropColumns); YDB_READONLY_DEF(TVector<TOlapColumnDiff>, AlterColumns); + YDB_READONLY_DEF(TVector<TString>, PrimaryKeyColumnNames); public: bool Parse(const NKikimrSchemeOp::TColumnTableSchema& tableSchema, IErrorCollector& errors, bool allowNullKeys = false); bool Parse(const NKikimrSchemeOp::TAlterColumnTableSchema& alterRequest, IErrorCollector& errors); |
