@@ -719,10 +719,9 @@ bool FillColumnDescription(NKikimrSchemeOp::TColumnTableDescription& out,
719
719
720
720
template <typename TYdbProto>
721
721
void FillTableBoundaryImpl (TYdbProto& out,
722
- const google::protobuf::RepeatedPtrField<NKikimrSchemeOp::TSplitBoundary>& boundaries,
723
- const NKikimrMiniKQL::TType& splitKeyType
724
- ) {
725
- for (const auto & boundary : boundaries) {
722
+ const NKikimrSchemeOp::TTableDescription& in, const NKikimrMiniKQL::TType& splitKeyType) {
723
+
724
+ for (const auto & boundary : in.GetSplitBoundary ()) {
726
725
if (boundary.HasSerializedKeyPrefix ()) {
727
726
throw NYql::TErrorException (NKikimrIssues::TIssuesIds::DEFAULT_ERROR)
728
727
<< " Unexpected serialized response from txProxy" ;
@@ -756,12 +755,12 @@ void FillTableBoundaryImpl(TYdbProto& out,
756
755
757
756
void FillTableBoundary (Ydb::Table::DescribeTableResult& out,
758
757
const NKikimrSchemeOp::TTableDescription& in, const NKikimrMiniKQL::TType& splitKeyType) {
759
- FillTableBoundaryImpl<Ydb::Table::DescribeTableResult>(out, in. GetSplitBoundary () , splitKeyType);
758
+ FillTableBoundaryImpl<Ydb::Table::DescribeTableResult>(out, in, splitKeyType);
760
759
}
761
760
762
761
void FillTableBoundary (Ydb::Table::CreateTableRequest& out,
763
762
const NKikimrSchemeOp::TTableDescription& in, const NKikimrMiniKQL::TType& splitKeyType) {
764
- FillTableBoundaryImpl<Ydb::Table::CreateTableRequest>(out, in. GetSplitBoundary () , splitKeyType);
763
+ FillTableBoundaryImpl<Ydb::Table::CreateTableRequest>(out, in, splitKeyType);
765
764
}
766
765
767
766
template <typename TYdbProto>
@@ -802,38 +801,50 @@ void FillPartitioningSettings(TYdbProto& out, const NKikimrSchemeOp::TPartitioni
802
801
}
803
802
}
804
803
804
+ template <typename TYdbProto>
805
+ void FillPartitioningSettingsImpl (TYdbProto& out,
806
+ const NKikimrSchemeOp::TTableDescription& in) {
807
+
808
+ auto & outPartSettings = *out.mutable_partitioning_settings ();
809
+
810
+ if (!in.HasPartitionConfig ()) {
811
+ FillDefaultPartitioningSettings (outPartSettings);
812
+ return ;
813
+ }
814
+
815
+ const auto & partConfig = in.GetPartitionConfig ();
816
+ if (!partConfig.HasPartitioningPolicy ()) {
817
+ FillDefaultPartitioningSettings (outPartSettings);
818
+ return ;
819
+ }
820
+
821
+ FillPartitioningSettings (outPartSettings, partConfig.GetPartitioningPolicy ());
822
+ }
823
+
805
824
void FillGlobalIndexSettings (Ydb::Table::GlobalIndexSettings& settings,
806
- const NKikimrSchemeOp::TIndexDescription& tableIndex,
807
- const NKikimrMiniKQL::TType& splitKeyType) {
825
+ const google::protobuf::RepeatedPtrField<NKikimrSchemeOp::TTableDescription>& indexImplTables
826
+ ) {
827
+ if (indexImplTables.empty ()) {
828
+ return ;
829
+ }
830
+ const auto & indexImplTableDescription = indexImplTables.Get (0 );
808
831
809
- switch (tableIndex. GetPartitionsCase ()) {
810
- case NKikimrSchemeOp::TIndexDescription:: kUniformPartitions :
811
- settings. set_uniform_partitions (tableIndex. GetUniformPartitions ()) ;
812
- break ;
813
- case NKikimrSchemeOp::TIndexDescription:: kExplicitPartitions :
814
- FillTableBoundaryImpl ( *settings.mutable_partition_at_keys (),
815
- tableIndex. GetExplicitPartitions (). GetSplitBoundary () ,
832
+ if (indexImplTableDescription. SplitBoundarySize ()) {
833
+ NKikimrMiniKQL::TType splitKeyType;
834
+ Ydb::Table::DescribeTableResult unused ;
835
+ FillColumnDescription (unused, splitKeyType, indexImplTableDescription) ;
836
+ FillTableBoundaryImpl (
837
+ *settings.mutable_partition_at_keys (),
838
+ indexImplTableDescription ,
816
839
splitKeyType
817
840
);
818
- break ;
819
- default :
820
- break ;
821
841
}
822
842
823
- auto & partitioningSettings = *settings.mutable_partitioning_settings ();
824
- if (tableIndex.HasPartitioningPolicy ()) {
825
- FillPartitioningSettings (
826
- partitioningSettings,
827
- tableIndex.GetPartitioningPolicy ()
828
- );
829
- } else {
830
- FillDefaultPartitioningSettings (partitioningSettings);
831
- }
843
+ FillPartitioningSettingsImpl (settings, indexImplTableDescription);
832
844
}
833
845
834
846
template <typename TYdbProto>
835
- void FillIndexDescriptionImpl (TYdbProto& out,
836
- const NKikimrSchemeOp::TTableDescription& in, const NKikimrMiniKQL::TType& splitKeyType) {
847
+ void FillIndexDescriptionImpl (TYdbProto& out, const NKikimrSchemeOp::TTableDescription& in) {
837
848
838
849
for (const auto & tableIndex : in.GetTableIndexes ()) {
839
850
auto index = out.add_indexes ();
@@ -852,13 +863,22 @@ void FillIndexDescriptionImpl(TYdbProto& out,
852
863
853
864
switch (tableIndex.GetType ()) {
854
865
case NKikimrSchemeOp::EIndexType::EIndexTypeGlobal:
855
- FillGlobalIndexSettings (*index ->mutable_global_index ()->mutable_settings (), tableIndex, splitKeyType);
866
+ FillGlobalIndexSettings (
867
+ *index ->mutable_global_index ()->mutable_settings (),
868
+ tableIndex.GetIndexImplTableDescriptions ()
869
+ );
856
870
break ;
857
871
case NKikimrSchemeOp::EIndexType::EIndexTypeGlobalAsync:
858
- FillGlobalIndexSettings (*index ->mutable_global_async_index ()->mutable_settings (), tableIndex, splitKeyType);
872
+ FillGlobalIndexSettings (
873
+ *index ->mutable_global_async_index ()->mutable_settings (),
874
+ tableIndex.GetIndexImplTableDescriptions ()
875
+ );
859
876
break ;
860
877
case NKikimrSchemeOp::EIndexType::EIndexTypeGlobalUnique:
861
- FillGlobalIndexSettings (*index ->mutable_global_unique_index ()->mutable_settings (), tableIndex, splitKeyType);
878
+ FillGlobalIndexSettings (
879
+ *index ->mutable_global_unique_index ()->mutable_settings (),
880
+ tableIndex.GetIndexImplTableDescriptions ()
881
+ );
862
882
break ;
863
883
default :
864
884
break ;
@@ -876,13 +896,13 @@ void FillIndexDescriptionImpl(TYdbProto& out,
876
896
}
877
897
878
898
void FillIndexDescription (Ydb::Table::DescribeTableResult& out,
879
- const NKikimrSchemeOp::TTableDescription& in, const NKikimrMiniKQL::TType& splitKeyType ) {
880
- FillIndexDescriptionImpl (out, in, splitKeyType );
899
+ const NKikimrSchemeOp::TTableDescription& in) {
900
+ FillIndexDescriptionImpl (out, in);
881
901
}
882
902
883
903
void FillIndexDescription (Ydb::Table::CreateTableRequest& out,
884
- const NKikimrSchemeOp::TTableDescription& in, const NKikimrMiniKQL::TType& splitKeyType ) {
885
- FillIndexDescriptionImpl (out, in, splitKeyType );
904
+ const NKikimrSchemeOp::TTableDescription& in) {
905
+ FillIndexDescriptionImpl (out, in);
886
906
}
887
907
888
908
bool FillIndexDescription (NKikimrSchemeOp::TIndexedTableCreationConfig& out,
@@ -1262,26 +1282,6 @@ void FillAttributes(Ydb::Table::CreateTableRequest& out,
1262
1282
FillAttributesImpl (out, in);
1263
1283
}
1264
1284
1265
- template <typename TYdbProto>
1266
- void FillPartitioningSettingsImpl (TYdbProto& out,
1267
- const NKikimrSchemeOp::TTableDescription& in) {
1268
-
1269
- auto & outPartSettings = *out.mutable_partitioning_settings ();
1270
-
1271
- if (!in.HasPartitionConfig ()) {
1272
- FillDefaultPartitioningSettings (outPartSettings);
1273
- return ;
1274
- }
1275
-
1276
- const auto & partConfig = in.GetPartitionConfig ();
1277
- if (!partConfig.HasPartitioningPolicy ()) {
1278
- FillDefaultPartitioningSettings (outPartSettings);
1279
- return ;
1280
- }
1281
-
1282
- FillPartitioningSettings (outPartSettings, partConfig.GetPartitioningPolicy ());
1283
- }
1284
-
1285
1285
void FillPartitioningSettings (Ydb::Table::DescribeTableResult& out,
1286
1286
const NKikimrSchemeOp::TTableDescription& in) {
1287
1287
FillPartitioningSettingsImpl (out, in);
0 commit comments