Skip to content

Commit 1e130fc

Browse files
committed
cs validation has been fixed (ydb-platform#25903)
1 parent fa23272 commit 1e130fc

File tree

4 files changed

+12
-5
lines changed

4 files changed

+12
-5
lines changed

ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3672,10 +3672,6 @@ Y_UNIT_TEST_SUITE(KqpQueryService) {
36723672
TKikimrRunner kikimr(serverSettings);
36733673
auto db = kikimr.GetQueryClient();
36743674

3675-
if (IsOlap) {
3676-
return;
3677-
}
3678-
36793675
{
36803676
auto result = db.ExecuteQuery(Sprintf(R"(
36813677
CREATE TABLE Table (

ydb/core/tx/schemeshard/olap/columns/schema.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,16 @@ bool TOlapColumnsDescription::ApplyUpdate(
8484
auto it = orderedKeyColumnIds.begin();
8585
for (ui32 i = 0; i < orderedKeyColumnIds.size(); ++i, ++it) {
8686
KeyColumnIds.emplace_back(it->second);
87-
Y_ABORT_UNLESS(i == it->first);
87+
if (i != it->first) {
88+
const TString missedColumnName = i < schemaUpdate.GetPrimaryKeyColumnNames().size() ? schemaUpdate.GetPrimaryKeyColumnNames()[i] : "@unknown";
89+
errors.AddError(NKikimrScheme::StatusSchemeError, Sprintf("Unknown column '%s' specified in key column list", missedColumnName.data()));
90+
return false;
91+
}
92+
}
93+
if (orderedKeyColumnIds.size() < schemaUpdate.GetPrimaryKeyColumnNames().size()) {
94+
const TString missedColumnName = schemaUpdate.GetPrimaryKeyColumnNames()[orderedKeyColumnIds.size()];
95+
errors.AddError(NKikimrScheme::StatusSchemeError, Sprintf("Unknown column '%s' specified in key column list", missedColumnName.data()));
96+
return false;
8897
}
8998
if (KeyColumnIds.empty()) {
9099
errors.AddError(NKikimrScheme::StatusSchemeError, "No primary key specified");

ydb/core/tx/schemeshard/olap/columns/update.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,7 @@ void TOlapColumnAdd::ParseFromLocalDB(const NKikimrSchemeOp::TOlapColumnDescript
405405
errors.AddError(NKikimrScheme::StatusSchemeError, TStringBuilder() << "Duplicate key column '" << pkKey << "'");
406406
return false;
407407
}
408+
PrimaryKeyColumnNames.emplace_back(pkKey);
408409
}
409410

410411
TSet<TString> columnNames;

ydb/core/tx/schemeshard/olap/columns/update.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ class TOlapColumnsUpdate {
8080
YDB_READONLY_DEF(TVector<TOlapColumnAdd>, AddColumns);
8181
YDB_READONLY_DEF(TSet<TString>, DropColumns);
8282
YDB_READONLY_DEF(TVector<TOlapColumnDiff>, AlterColumns);
83+
YDB_READONLY_DEF(TVector<TString>, PrimaryKeyColumnNames);
8384
public:
8485
bool Parse(const NKikimrSchemeOp::TColumnTableSchema& tableSchema, IErrorCollector& errors, bool allowNullKeys = false);
8586
bool Parse(const NKikimrSchemeOp::TAlterColumnTableSchema& alterRequest, IErrorCollector& errors);

0 commit comments

Comments
 (0)