Skip to content

Commit c5b1522

Browse files
committed
supporting changes in SDK
These are needed for a good looking test. However, these functions might be helpful for users also. It is currently the only way (except direct GRPCs) to create a table with an index that has predefined split boundaries.
1 parent 2440d3f commit c5b1522

File tree

2 files changed

+51
-6
lines changed

2 files changed

+51
-6
lines changed

ydb/public/sdk/cpp/client/ydb_table/table.cpp

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,16 @@ class TTableDescription::TImpl {
469469
Indexes_.emplace_back(TIndexDescription(indexName, type, indexColumns, dataColumns));
470470
}
471471

472+
void AddSecondaryIndex(
473+
const TString& indexName,
474+
EIndexType type,
475+
const TVector<TString>& indexColumns,
476+
const TVector<TString>& dataColumns,
477+
const TGlobalIndexSettings& globalIndexSettings
478+
) {
479+
Indexes_.emplace_back(TIndexDescription(indexName, type, indexColumns, dataColumns, { globalIndexSettings }));
480+
}
481+
472482
void AddVectorIndex(const TString& indexName, EIndexType type, const TVector<TString>& indexColumns, const TVectorIndexSettings& vectorIndexSettings) {
473483
Indexes_.emplace_back(TIndexDescription(indexName, type, indexColumns, {}, {}, vectorIndexSettings));
474484
}
@@ -749,6 +759,16 @@ void TTableDescription::AddSecondaryIndex(const TString& indexName, EIndexType t
749759
Impl_->AddSecondaryIndex(indexName, type, indexColumns, dataColumns);
750760
}
751761

762+
void TTableDescription::AddSecondaryIndex(
763+
const TString& indexName,
764+
EIndexType type,
765+
const TVector<TString>& indexColumns,
766+
const TVector<TString>& dataColumns,
767+
const TGlobalIndexSettings& globalIndexSettings
768+
) {
769+
Impl_->AddSecondaryIndex(indexName, type, indexColumns, dataColumns, globalIndexSettings);
770+
}
771+
752772
void TTableDescription::AddSyncSecondaryIndex(const TString& indexName, const TVector<TString>& indexColumns) {
753773
AddSecondaryIndex(indexName, EIndexType::GlobalSync, indexColumns);
754774
}
@@ -1173,6 +1193,17 @@ TTableBuilder& TTableBuilder::SetPrimaryKeyColumn(const TString& primaryKeyColum
11731193
return *this;
11741194
}
11751195

1196+
TTableBuilder& TTableBuilder::AddSecondaryIndex(
1197+
const TString& indexName,
1198+
EIndexType type,
1199+
const TVector<TString>& indexColumns,
1200+
const TVector<TString>& dataColumns,
1201+
const TGlobalIndexSettings& globalIndexSettings
1202+
) {
1203+
TableDescription_.AddSecondaryIndex(indexName, type, indexColumns, dataColumns, globalIndexSettings);
1204+
return *this;
1205+
}
1206+
11761207
TTableBuilder& TTableBuilder::AddSecondaryIndex(const TString& indexName, EIndexType type, const TVector<TString>& indexColumns, const TVector<TString>& dataColumns) {
11771208
TableDescription_.AddSecondaryIndex(indexName, type, indexColumns, dataColumns);
11781209
return *this;
@@ -2364,7 +2395,7 @@ TVectorIndexSettings TVectorIndexSettings::FromProto(const TProto& proto) {
23642395
default:
23652396
return EVectorType::Unknown;
23662397
}
2367-
};
2398+
};
23682399

23692400

23702401
auto metricFromProto = [&](const auto& proto) -> TVectorIndexSettings::TMetric {
@@ -2376,7 +2407,7 @@ TVectorIndexSettings TVectorIndexSettings::FromProto(const TProto& proto) {
23762407
default:
23772408
return {};
23782409
}
2379-
};
2410+
};
23802411

23812412
return {
23822413
.Metric = metricFromProto(proto),
@@ -2424,8 +2455,8 @@ void TVectorIndexSettings::SerializeTo(Ydb::Table::VectorIndexSettings& settings
24242455
return Ydb::Table::VectorIndexSettings::VECTOR_TYPE_UNSPECIFIED;
24252456
}
24262457
};
2427-
2428-
2458+
2459+
24292460
if (const auto* distance = std::get_if<EDistance>(&Metric)) {
24302461
settings.set_distance(convertDistance(*distance));
24312462
} else if (const auto* similarity = std::get_if<ESimilarity>(&Metric)) {

ydb/public/sdk/cpp/client/ydb_table/table.h

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,10 @@ struct TExplicitPartitions {
174174
using TSelf = TExplicitPartitions;
175175

176176
FLUENT_SETTING_VECTOR(TValue, SplitPoints);
177-
177+
178178
template <typename TProto>
179179
static TExplicitPartitions FromProto(const TProto& proto);
180-
180+
181181
void SerializeTo(Ydb::Table::ExplicitPartitions& proto) const;
182182
};
183183

@@ -642,6 +642,13 @@ class TTableDescription {
642642
// common
643643
void AddSecondaryIndex(const TString& indexName, EIndexType type, const TVector<TString>& indexColumns);
644644
void AddSecondaryIndex(const TString& indexName, EIndexType type, const TVector<TString>& indexColumns, const TVector<TString>& dataColumns);
645+
void AddSecondaryIndex(
646+
const TString& indexName,
647+
EIndexType type,
648+
const TVector<TString>& indexColumns,
649+
const TVector<TString>& dataColumns,
650+
const TGlobalIndexSettings& globalIndexSettings
651+
);
645652
// sync
646653
void AddSyncSecondaryIndex(const TString& indexName, const TVector<TString>& indexColumns);
647654
void AddSyncSecondaryIndex(const TString& indexName, const TVector<TString>& indexColumns, const TVector<TString>& dataColumns);
@@ -855,6 +862,13 @@ class TTableBuilder {
855862
TTableBuilder& SetPrimaryKeyColumn(const TString& primaryKeyColumn);
856863

857864
// common
865+
TTableBuilder& AddSecondaryIndex(
866+
const TString& indexName,
867+
EIndexType type,
868+
const TVector<TString>& indexColumns,
869+
const TVector<TString>& dataColumns,
870+
const TGlobalIndexSettings& globalIndexSettings
871+
);
858872
TTableBuilder& AddSecondaryIndex(const TString& indexName, EIndexType type, const TVector<TString>& indexColumns, const TVector<TString>& dataColumns);
859873
TTableBuilder& AddSecondaryIndex(const TString& indexName, EIndexType type, const TVector<TString>& indexColumns);
860874
TTableBuilder& AddSecondaryIndex(const TString& indexName, EIndexType type, const TString& indexColumn);

0 commit comments

Comments
 (0)