15 #ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_CLIENT_H
16 #define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_CLIENT_H
18 #include "google/cloud/spanner/batch_dml_result.h"
19 #include "google/cloud/spanner/client_options.h"
20 #include "google/cloud/spanner/commit_options.h"
21 #include "google/cloud/spanner/commit_result.h"
22 #include "google/cloud/spanner/connection.h"
23 #include "google/cloud/spanner/connection_options.h"
24 #include "google/cloud/spanner/database.h"
25 #include "google/cloud/spanner/internal/defaults.h"
26 #include "google/cloud/spanner/keys.h"
27 #include "google/cloud/spanner/mutations.h"
28 #include "google/cloud/spanner/partition_options.h"
29 #include "google/cloud/spanner/query_options.h"
30 #include "google/cloud/spanner/query_partition.h"
31 #include "google/cloud/spanner/read_options.h"
32 #include "google/cloud/spanner/read_partition.h"
33 #include "google/cloud/spanner/results.h"
34 #include "google/cloud/spanner/retry_policy.h"
35 #include "google/cloud/spanner/session_pool_options.h"
36 #include "google/cloud/spanner/sql_statement.h"
37 #include "google/cloud/spanner/transaction.h"
38 #include "google/cloud/spanner/version.h"
39 #include "google/cloud/backoff_policy.h"
40 #include "google/cloud/internal/non_constructible.h"
41 #include "google/cloud/options.h"
42 #include "google/cloud/status.h"
43 #include "google/cloud/status_or.h"
44 #include <google/spanner/v1/spanner.pb.h>
45 #include <grpcpp/grpcpp.h>
47 #include <initializer_list>
134 : conn_(std::move(conn)),
135 opts_(internal::MergeOptions(
137 spanner_internal::DefaultOptions(conn_->
options()))) {}
144 std::initializer_list<internal::NonConstructible>)
162 return a.conn_ == b.conn_;
193 std::vector<std::string> columns,
Options opts
= {});
202 std::string table,
KeySet keys,
203 std::vector<std::string> columns,
Options opts
= {});
211 std::vector<std::string> columns,
Options opts
= {});
217 std::vector<std::string> columns,
219 return Read(std::move(table)
, std::move(keys)
, std::move(columns)
,
223 std::vector<std::string> columns,
224 std::initializer_list<internal::NonConstructible>) {
225 return Read(std::move(table)
, std::move(keys)
, std::move(columns)
);
228 std::string table,
KeySet keys,
229 std::vector<std::string> columns,
231 return Read(std::move(transaction_options)
, std::move(table)
,
235 std::string table,
KeySet keys,
236 std::vector<std::string> columns,
237 std::initializer_list<internal::NonConstructible>) {
238 return Read(std::move(transaction_options)
, std::move(table)
,
239 std::move(keys)
, std::move(columns)
);
242 std::vector<std::string> columns,
244 return Read(std::move(transaction)
, std::move(table)
, std::move(keys)
,
248 std::vector<std::string> columns,
249 std::initializer_list<internal::NonConstructible>) {
250 return Read(std::move(transaction)
, std::move(table)
, std::move(keys)
,
304 std::vector<std::string> columns,
Options opts
= {});
310 std::vector<std::string> columns,
ReadOptions const& read_options,
313 std::move(keys)
, std::move(columns)
,
319 std::vector<std::string> columns,
320 std::initializer_list<internal::NonConstructible>) {
322 std::move(keys)
, std::move(columns)
);
404 std::initializer_list<internal::NonConstructible>) {
409 return ExecuteQuery(std::move(transaction_options)
, std::move(statement)
,
414 std::initializer_list<internal::NonConstructible>) {
415 return ExecuteQuery(std::move(transaction_options)
, std::move(statement)
);
423 std::initializer_list<internal::NonConstructible>) {
431 std::initializer_list<internal::NonConstructible>) {
494 std::initializer_list<internal::NonConstructible>) {
500 return ProfileQuery(std::move(transaction_options)
, std::move(statement)
,
505 std::initializer_list<internal::NonConstructible>) {
506 return ProfileQuery(std::move(transaction_options)
, std::move(statement)
);
516 std::initializer_list<internal::NonConstructible>) {
556 std::initializer_list<internal::NonConstructible>) {
586 return ExecuteDml(std::move(transaction)
, std::move(statement)
,
591 std::initializer_list<internal::NonConstructible>) {
592 return ExecuteDml(std::move(transaction)
, std::move(statement)
);
625 return ProfileDml(std::move(transaction)
, std::move(statement)
,
630 std::initializer_list<internal::NonConstructible>) {
631 return ProfileDml(std::move(transaction)
, std::move(statement)
);
663 return AnalyzeSql(std::move(transaction)
, std::move(statement)
,
668 std::initializer_list<internal::NonConstructible>) {
669 return AnalyzeSql(std::move(transaction)
, std::move(statement)
);
750 std::function<StatusOr<Mutations>(
Transaction)>
const& mutator,
751 std::unique_ptr<TransactionRerunPolicy> rerun_policy,
752 std::unique_ptr<BackoffPolicy> backoff_policy,
Options opts
= {});
757 std::function<StatusOr<Mutations>(
Transaction)>
const& mutator,
758 std::unique_ptr<TransactionRerunPolicy> rerun_policy,
759 std::unique_ptr<BackoffPolicy> backoff_policy,
761 return Commit(mutator
, std::move(rerun_policy)
, std::move(backoff_policy)
,
765 std::function<StatusOr<Mutations>(
Transaction)>
const& mutator,
766 std::unique_ptr<TransactionRerunPolicy> rerun_policy,
767 std::unique_ptr<BackoffPolicy> backoff_policy,
768 std::initializer_list<internal::NonConstructible>) {
769 return Commit(mutator
, std::move(rerun_policy)
, std::move(backoff_policy)
);
785 std::function<StatusOr<Mutations>(
Transaction)>
const& mutator,
791 std::function<StatusOr<Mutations>(
Transaction)>
const& mutator,
796 std::function<StatusOr<Mutations>(
Transaction)>
const& mutator,
797 std::initializer_list<internal::NonConstructible>) {
820 Mutations mutations, std::initializer_list<internal::NonConstructible>) {
821 return Commit(std::move(mutations)
);
857 return Commit(std::move(transaction)
, std::move(mutations)
,
862 std::initializer_list<internal::NonConstructible>) {
863 return Commit(std::move(transaction)
, std::move(mutations)
);
916 std::initializer_list<internal::NonConstructible>) {
972 Database const& db, ConnectionOptions
const& connection_options,
991 Database const& db, ConnectionOptions
const& connection_options,
993 std::unique_ptr<RetryPolicy> retry_policy,
994 std::unique_ptr<BackoffPolicy> backoff_policy);