Skip to content

Sync sdks 11 #331

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Oct 31, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion examples/basic_example/basic_example.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -508,4 +508,4 @@ bool Run(const TDriver& driver) {
}

return true;
}
}
62 changes: 62 additions & 0 deletions include/ydb-cpp-sdk/client/draft/ydb_view.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#pragma once

#include <ydb-cpp-sdk/client/driver/driver.h>
#include <ydb-cpp-sdk/client/scheme/scheme.h>

namespace Ydb::View {
class DescribeViewResult;
}

namespace NYdb {
class TProtoAccessor;
}

namespace NYql {
class TIssues;
}

namespace NYdb::NView {

class TDescribeViewResult;
using TAsyncDescribeViewResult = NThreading::TFuture<TDescribeViewResult>;

struct TDescribeViewSettings : public TOperationRequestSettings<TDescribeViewSettings> {
using TSelf = TDescribeViewSettings;
};

class TViewDescription {
public:
explicit TViewDescription(const Ydb::View::DescribeViewResult& desc);

const std::string& GetQueryText() const;

private:
std::string QueryText_;
};

class TDescribeViewResult : public NScheme::TDescribePathResult {
friend class NYdb::TProtoAccessor;
const Ydb::View::DescribeViewResult& GetProto() const;

public:
TDescribeViewResult(TStatus&& status, Ydb::View::DescribeViewResult&& desc);
TViewDescription GetViewDescription() const;

private:
std::unique_ptr<Ydb::View::DescribeViewResult> Proto_;
};

class TViewClient {
class TImpl;

public:
TViewClient(const TDriver& driver, const TCommonClientSettings& settings = TCommonClientSettings());

TAsyncDescribeViewResult DescribeView(const std::string& path,
const TDescribeViewSettings& settings = TDescribeViewSettings());

private:
std::shared_ptr<TImpl> Impl_;
};

} // namespace NYdb::NView
3 changes: 3 additions & 0 deletions include/ydb-cpp-sdk/client/proto/accessor.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#pragma once

#include <src/api/protos/draft/ydb_replication.pb.h>
#include <src/api/protos/draft/ydb_view.pb.h>
#include <src/api/protos/ydb_coordination.pb.h>
#include <src/api/protos/ydb_export.pb.h>
#include <src/api/protos/ydb_import.pb.h>
Expand All @@ -10,6 +11,7 @@
#include <src/api/protos/ydb_value.pb.h>

#include <ydb-cpp-sdk/client/draft/ydb_replication.h>
#include <ydb-cpp-sdk/client/draft/ydb_view.h>
#include <ydb-cpp-sdk/client/coordination/coordination.h>
#include <ydb-cpp-sdk/client/export/export.h>
#include <ydb-cpp-sdk/client/import/import.h>
Expand Down Expand Up @@ -46,6 +48,7 @@ class TProtoAccessor {
static const Ydb::Monitoring::SelfCheckResult& GetProto(const NYdb::NMonitoring::TSelfCheckResult& selfCheckResult);
static const Ydb::Coordination::DescribeNodeResult& GetProto(const NYdb::NCoordination::TNodeDescription &describeNodeResult);
static const Ydb::Replication::DescribeReplicationResult& GetProto(const NYdb::NReplication::TDescribeReplicationResult& desc);
static const Ydb::View::DescribeViewResult& GetProto(const NYdb::NView::TDescribeViewResult& desc);

static NTable::TQueryStats FromProto(const Ydb::TableStats::QueryStats& queryStats);
static NTable::TTableDescription FromProto(const Ydb::Table::CreateTableRequest& request);
Expand Down
1 change: 1 addition & 0 deletions include/ydb-cpp-sdk/client/query/client.h
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ class TTransaction;
class TSession {
friend class TQueryClient;
friend class TTransaction;
friend class TExecuteQueryIterator;
public:
const std::string& GetId() const;

Expand Down
4 changes: 2 additions & 2 deletions include/ydb-cpp-sdk/client/query/query.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ struct TExecuteQuerySettings : public TRequestSettings<TExecuteQuerySettings> {
FLUENT_SETTING_DEFAULT(EExecMode, ExecMode, EExecMode::Execute);
FLUENT_SETTING_DEFAULT(EStatsMode, StatsMode, EStatsMode::None);
FLUENT_SETTING_OPTIONAL(bool, ConcurrentResultSets);
FLUENT_SETTING(std::string, PoolId);
FLUENT_SETTING(std::string, ResourcePool);
};

struct TBeginTxSettings : public TRequestSettings<TBeginTxSettings> {};
Expand All @@ -98,7 +98,7 @@ struct TExecuteScriptSettings : public TOperationRequestSettings<TExecuteScriptS
FLUENT_SETTING_DEFAULT(EExecMode, ExecMode, EExecMode::Execute);
FLUENT_SETTING_DEFAULT(EStatsMode, StatsMode, EStatsMode::None);
FLUENT_SETTING(TDuration, ResultsTtl);
FLUENT_SETTING(std::string, PoolId);
FLUENT_SETTING(std::string, ResourcePool);
};

class TQueryContent {
Expand Down
79 changes: 51 additions & 28 deletions include/ydb-cpp-sdk/client/table/table.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class DescribeTableResult;
class ExplicitPartitions;
class GlobalIndexSettings;
class VectorIndexSettings;
class KMeansTreeSettings;
class PartitioningSettings;
class DateTypeColumnModeSettings;
class TtlSettings;
Expand Down Expand Up @@ -187,8 +188,7 @@ struct TExplicitPartitions {

FLUENT_SETTING_VECTOR(TValue, SplitPoints);

template <typename TProto>
static TExplicitPartitions FromProto(const TProto& proto);
static TExplicitPartitions FromProto(const Ydb::Table::ExplicitPartitions& proto);

void SerializeTo(Ydb::Table::ExplicitPartitions& proto) const;
};
Expand All @@ -199,47 +199,67 @@ struct TGlobalIndexSettings {
TPartitioningSettings PartitioningSettings;
TUniformOrExplicitPartitions Partitions;

template <typename TProto>
static TGlobalIndexSettings FromProto(const TProto& proto);
static TGlobalIndexSettings FromProto(const Ydb::Table::GlobalIndexSettings& proto);

void SerializeTo(Ydb::Table::GlobalIndexSettings& proto) const;
};

struct TVectorIndexSettings {
public:
enum class EDistance {
Cosine,
enum class EMetric {
Unspecified = 0,
InnerProduct,
CosineSimilarity,
CosineDistance,
Manhattan,
Euclidean,
};

Unknown = std::numeric_limits<int>::max()
enum class EVectorType {
Unspecified = 0,
Float,
Uint8,
Int8,
Bit,
};

enum class ESimilarity {
Cosine,
InnerProduct,
EMetric Metric = EMetric::Unspecified;
EVectorType VectorType = EVectorType::Unspecified;
uint32_t VectorDimension = 0;

Unknown = std::numeric_limits<int>::max()
static TVectorIndexSettings FromProto(const Ydb::Table::VectorIndexSettings& proto);

void SerializeTo(Ydb::Table::VectorIndexSettings& settings) const;

void Out(IOutputStream &o) const;
};

struct TKMeansTreeSettings {
public:
enum class EMetric {
Unspecified = 0,
InnerProduct,
CosineSimilarity,
CosineDistance,
Manhattan,
Euclidean,
};

enum class EVectorType {
Unspecified = 0,
Float,
Uint8,
Int8,
Bit,

Unknown = std::numeric_limits<int>::max()
};
using TMetric = std::variant<std::monostate, EDistance, ESimilarity>;

TMetric Metric;
EVectorType VectorType;
uint32_t VectorDimension;
TVectorIndexSettings Settings;
uint32_t Clusters = 0;
uint32_t Levels = 0;

template <typename TProto>
static TVectorIndexSettings FromProto(const TProto& proto);
static TKMeansTreeSettings FromProto(const Ydb::Table::KMeansTreeSettings& proto);

void SerializeTo(Ydb::Table::VectorIndexSettings& settings) const;
void SerializeTo(Ydb::Table::KMeansTreeSettings& settings) const;

void Out(IOutputStream &o) const;
};
Expand All @@ -255,7 +275,7 @@ class TIndexDescription {
const std::vector<std::string>& indexColumns,
const std::vector<std::string>& dataColumns = {},
const std::vector<TGlobalIndexSettings>& globalIndexSettings = {},
const std::optional<TVectorIndexSettings>& vectorIndexSettings = {}
const std::variant<std::monostate, TKMeansTreeSettings>& specializedIndexSettings = {}
);

TIndexDescription(
Expand All @@ -269,7 +289,7 @@ class TIndexDescription {
EIndexType GetIndexType() const;
const std::vector<std::string>& GetIndexColumns() const;
const std::vector<std::string>& GetDataColumns() const;
const std::optional<TVectorIndexSettings>& GetVectorIndexSettings() const;
const std::variant<std::monostate, TKMeansTreeSettings>& GetVectorIndexSettings() const;
uint64_t GetSizeBytes() const;

void SerializeTo(Ydb::Table::TableIndex& proto) const;
Expand All @@ -289,8 +309,8 @@ class TIndexDescription {
std::vector<std::string> IndexColumns_;
std::vector<std::string> DataColumns_;
std::vector<TGlobalIndexSettings> GlobalIndexSettings_;
std::optional<TVectorIndexSettings> VectorIndexSettings_;
uint64_t SizeBytes = 0;
std::variant<std::monostate, TKMeansTreeSettings> SpecializedIndexSettings_;
uint64_t SizeBytes_ = 0;
};

struct TRenameIndex {
Expand Down Expand Up @@ -665,8 +685,8 @@ class TTableDescription {
void AddUniqueSecondaryIndex(const std::string& indexName, const std::vector<std::string>& indexColumns);
void AddUniqueSecondaryIndex(const std::string& indexName, const std::vector<std::string>& indexColumns, const std::vector<std::string>& dataColumns);
// vector KMeansTree
void AddVectorKMeansTreeSecondaryIndex(const std::string& indexName, const std::vector<std::string>& indexColumns, const TVectorIndexSettings& vectorIndexSettings);
void AddVectorKMeansTreeSecondaryIndex(const std::string& indexName, const std::vector<std::string>& indexColumns, const std::vector<std::string>& dataColumns, const TVectorIndexSettings& vectorIndexSettings);
void AddVectorKMeansTreeIndex(const std::string& indexName, const std::vector<std::string>& indexColumns, const TKMeansTreeSettings& indexSettings);
void AddVectorKMeansTreeIndex(const std::string& indexName, const std::vector<std::string>& indexColumns, const std::vector<std::string>& dataColumns, const TKMeansTreeSettings& indexSettings);

// default
void AddSecondaryIndex(const std::string& indexName, const std::vector<std::string>& indexColumns);
Expand Down Expand Up @@ -889,8 +909,8 @@ class TTableBuilder {
TTableBuilder& AddUniqueSecondaryIndex(const std::string& indexName, const std::vector<std::string>& indexColumns, const std::vector<std::string>& dataColumns);

// vector KMeansTree
TTableBuilder& AddVectorKMeansTreeSecondaryIndex(const std::string& indexName, const std::vector<std::string>& indexColumns, const TVectorIndexSettings& vectorIndexSettings);
TTableBuilder& AddVectorKMeansTreeSecondaryIndex(const std::string& indexName, const std::vector<std::string>& indexColumns, const std::vector<std::string>& dataColumns, const TVectorIndexSettings& vectorIndexSettings);
TTableBuilder& AddVectorKMeansTreeIndex(const std::string& indexName, const std::vector<std::string>& indexColumns, const TKMeansTreeSettings& indexSettings);
TTableBuilder& AddVectorKMeansTreeIndex(const std::string& indexName, const std::vector<std::string>& indexColumns, const std::vector<std::string>& dataColumns, const TKMeansTreeSettings& indexSettings);

// default
TTableBuilder& AddSecondaryIndex(const std::string& indexName, const std::vector<std::string>& indexColumns, const std::vector<std::string>& dataColumns);
Expand Down Expand Up @@ -963,6 +983,9 @@ class TCopyItem {

TCopyItem& SetOmitIndexes();
bool OmitIndexes() const;

void Out(IOutputStream& out) const;

private:
std::string Source_;
std::string Destination_;
Expand Down
5 changes: 5 additions & 0 deletions include/ydb-cpp-sdk/client/topic/read_events.h
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,10 @@ struct TReadSessionEvent {
return CompressedMessages;
}

void SetReadInTransaction() {
ReadInTransaction = true;
}

//! Commits all messages in batch.
void Commit();

Expand All @@ -218,6 +222,7 @@ struct TReadSessionEvent {
std::vector<TMessage> Messages;
std::vector<TCompressedMessage> CompressedMessages;
std::vector<std::pair<uint64_t, uint64_t>> OffsetRanges;
bool ReadInTransaction = false;
};

//! Acknowledgement for commit request.
Expand Down
2 changes: 1 addition & 1 deletion include/ydb-cpp-sdk/client/value/value.h
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ class TTypeBuilder : public TMoveOnly {
struct TDecimalValue {
std::string ToString() const;
TDecimalValue(const Ydb::Value& decimalValueProto, const TDecimalType& decimalType);
TDecimalValue(const std::string& decimalString, uint8_t precision = 22, uint8_t scale = 9);
TDecimalValue(const std::string& decimalString, uint8_t precision, uint8_t scale);

TDecimalType DecimalType_;
uint64_t Low_;
Expand Down
10 changes: 10 additions & 0 deletions src/api/grpc/draft/ydb_view_v1.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
syntax = "proto3";

package Ydb.View.V1;
option java_package = "com.yandex.ydb.view.v1";

import "src/api/protos/draft/ydb_view.proto";

service ViewService {
rpc DescribeView(View.DescribeViewRequest) returns (View.DescribeViewResponse);
}
28 changes: 28 additions & 0 deletions src/api/protos/draft/ydb_view.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
syntax = "proto3";
option cc_enable_arenas = true;

package Ydb.View;
option java_package = "com.yandex.ydb.view";

import "src/api/protos/annotations/validation.proto";
import "src/api/protos/ydb_operation.proto";
import "src/api/protos/ydb_scheme.proto";

message DescribeViewRequest {
Ydb.Operations.OperationParams operation_params = 1;
// The path to the view.
string path = 2 [(required) = true];
}

message DescribeViewResponse {
// The result of the request will be inside the operation proto.
Ydb.Operations.Operation operation = 1;
}

message DescribeViewResult {
// Description of a generic scheme object.
Ydb.Scheme.Entry self = 1;

// View-specific fields.
string query_text = 2;
}
Loading
Loading