@@ -236,27 +236,32 @@ TScheme BuildScheme(const TAutoPtr<NSchemeCache::TSchemeCacheNavigate>& nav) {
236
236
});
237
237
238
238
result.TableColumns .resize (keyColumns);
239
- result.ColumnsMetadata .resize (keyColumns);
240
239
241
240
for (const auto & [_, column] : entry.Columns ) {
242
- NKikimrKqp::TKqpColumnMetadataProto* c;
243
241
if (column.KeyOrder >= 0 ) {
244
242
result.TableColumns [column.KeyOrder ] = {column.Name , column.Id , column.PType , column.KeyOrder >= 0 , !column.IsNotNullColumn };
245
- c = &result.ColumnsMetadata [column.KeyOrder ];
246
243
} else {
247
244
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 ();
250
245
}
246
+ }
247
+
248
+ std::map<TString, TSysTables::TTableColumnInfo> columns;
249
+ for (const auto & [_, column] : entry.Columns ) {
250
+ columns[column.Name ] = column;
251
+ }
251
252
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++);
253
258
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 ());
257
262
258
263
if (NScheme::NTypeIds::IsParametrizedType (column.PType .GetTypeId ())) {
259
- NScheme::ProtoFromTypeInfo (column.PType, " " , *c-> MutableTypeInfo ());
264
+ NScheme::ProtoFromTypeInfo (column.PType, " " , *c. MutableTypeInfo());
260
265
}
261
266
}
262
267
0 commit comments