16 #include <google/spanner/v1/spanner.pb.h> 23 ReadPartition::ReadPartition(std::string transaction_id, std::string session_id,
24 std::string partition_token,
25 std::string table_name,
26 google::cloud::spanner::KeySet key_set,
27 std::vector<std::string> column_names,
28 google::cloud::spanner::ReadOptions read_options) {
29 proto_.set_session(std::move(session_id));
30 proto_.mutable_transaction()->set_id(std::move(transaction_id));
31 proto_.set_table(std::move(table_name));
32 proto_.set_index(std::move(read_options.index_name));
33 for (
auto& column : column_names) {
34 *proto_.mutable_columns()->Add() = std::move(column);
36 *proto_.mutable_key_set() = internal::ToProto(std::move(key_set));
37 proto_.set_limit(read_options.limit);
38 proto_.set_partition_token(std::move(partition_token));
42 google::protobuf::util::MessageDifferencer differencer;
43 return differencer.Compare(lhs.proto_, rhs.proto_);
52 std::string serialized_proto;
53 if (read_partition.proto_.SerializeToString(&serialized_proto)) {
54 return serialized_proto;
56 return Status(StatusCode::kInvalidArgument,
57 "Failed to serialize SqlPartition");
61 std::string
const& serialized_read_partition) {
62 google::spanner::v1::ReadRequest proto;
63 if (!proto.ParseFromString(serialized_read_partition)) {
64 return Status(StatusCode::kInvalidArgument,
65 "Failed to deserialize into SqlPartition");
71 ReadPartition MakeReadPartition(std::string transaction_id,
72 std::string session_id,
73 std::string partition_token,
74 std::string table_name, KeySet key_set,
75 std::vector<std::string> column_names,
76 ReadOptions read_options) {
77 return ReadPartition(std::move(transaction_id), std::move(session_id),
78 std::move(partition_token), std::move(table_name),
79 std::move(key_set), std::move(column_names),
80 std::move(read_options));
83 Connection::ReadParams MakeReadParams(ReadPartition
const& read_partition) {
84 return Connection::ReadParams{
85 MakeTransactionFromIds(read_partition.SessionId(),
86 read_partition.TransactionId()),
87 read_partition.TableName(),
88 FromProto(read_partition.KeySet()),
89 read_partition.ColumnNames(),
90 read_partition.ReadOptions(),
91 read_partition.PartitionToken()};
bool operator!=(ReadPartition const &lhs, ReadPartition const &rhs)
StatusOr< std::string > SerializeReadPartition(ReadPartition const &read_partition)
Serializes an instance of ReadPartition to a string of bytes.
StatusOr< ReadPartition > DeserializeReadPartition(std::string const &serialized_read_partition)
Deserializes the provided string into a ReadPartition.
Contains all the Cloud Spanner C++ client types and functions.
The ReadPartition class is a regular type that represents a single slice of a parallel Read operation...
#define SPANNER_CLIENT_NS
bool operator==(ReadPartition const &lhs, ReadPartition const &rhs)