Skip to content

Commit 147c972

Browse files
authored
Fix wrong order of columns for transfer data from topic to column table (#14887)
1 parent d2ecf39 commit 147c972

File tree

2 files changed

+370
-58
lines changed

2 files changed

+370
-58
lines changed

ydb/core/tx/replication/service/transfer_writer.cpp

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -236,27 +236,32 @@ TScheme BuildScheme(const TAutoPtr<NSchemeCache::TSchemeCacheNavigate>& nav) {
236236
});
237237

238238
result.TableColumns.resize(keyColumns);
239-
result.ColumnsMetadata.resize(keyColumns);
240239

241240
for (const auto& [_, column] : entry.Columns) {
242-
NKikimrKqp::TKqpColumnMetadataProto* c;
243241
if (column.KeyOrder >= 0) {
244242
result.TableColumns[column.KeyOrder] = {column.Name, column.Id, column.PType, column.KeyOrder >= 0, !column.IsNotNullColumn};
245-
c = &result.ColumnsMetadata[column.KeyOrder];
246243
} else {
247244
result.TableColumns.emplace_back(column.Name, column.Id, column.PType, column.KeyOrder >= 0, !column.IsNotNullColumn);
248-
result.ColumnsMetadata.emplace_back();
249-
c = &result.ColumnsMetadata.back();
250245
}
246+
}
247+
248+
std::map<TString, TSysTables::TTableColumnInfo> columns;
249+
for (const auto& [_, column] : entry.Columns) {
250+
columns[column.Name] = column;
251+
}
251252

252-
result.WriteIndex.push_back(result.WriteIndex.size());
253+
size_t i = keyColumns;
254+
for (const auto& [_, column] : columns) {
255+
result.ColumnsMetadata.emplace_back();
256+
auto& c = result.ColumnsMetadata.back();
257+
result.WriteIndex.push_back(column.KeyOrder >= 0 ? column.KeyOrder : i++);
253258

254-
c->SetName(column.Name);
255-
c->SetId(column.Id);
256-
c->SetTypeId(column.PType.GetTypeId());
259+
c.SetName(column.Name);
260+
c.SetId(column.Id);
261+
c.SetTypeId(column.PType.GetTypeId());
257262

258263
if (NScheme::NTypeIds::IsParametrizedType(column.PType.GetTypeId())) {
259-
NScheme::ProtoFromTypeInfo(column.PType, "", *c->MutableTypeInfo());
264+
NScheme::ProtoFromTypeInfo(column.PType, "", *c.MutableTypeInfo());
260265
}
261266
}
262267

0 commit comments

Comments
 (0)