Skip to content

Commit 603dc00

Browse files
authored
Merge branch 'main' into bigtable_execute_query_1
2 parents 6b784c1 + 4f54a93 commit 603dc00

File tree

7 files changed

+60
-57
lines changed

7 files changed

+60
-57
lines changed

google/cloud/bigtable/bound_query.cc

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,11 @@ namespace cloud {
1919
namespace bigtable {
2020
GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN
2121

22-
StatusOr<std::string> BoundQuery::prepared_query() const {
23-
return query_plan_->prepared_query();
24-
}
25-
26-
StatusOr<google::bigtable::v2::PrepareQueryResponse> BoundQuery::response() {
22+
StatusOr<google::bigtable::v2::PrepareQueryResponse> BoundQuery::response()
23+
const {
2724
return query_plan_->response();
2825
}
2926

30-
StatusOr<google::bigtable::v2::ResultSetMetadata> BoundQuery::metadata() const {
31-
return query_plan_->metadata();
32-
}
33-
3427
std::unordered_map<std::string, Value> const& BoundQuery::parameters() const {
3528
return parameters_;
3629
}
@@ -40,10 +33,6 @@ InstanceResource const& BoundQuery::instance() const { return instance_; }
4033
google::bigtable::v2::ExecuteQueryRequest BoundQuery::ToRequestProto() const {
4134
google::bigtable::v2::ExecuteQueryRequest result;
4235
*result.mutable_instance_name() = instance_.FullName();
43-
auto prepared_query = query_plan_->prepared_query();
44-
if (prepared_query.ok()) {
45-
*result.mutable_prepared_query() = query_plan_->prepared_query().value();
46-
}
4736

4837
google::protobuf::Map<std::string, google::bigtable::v2::Value> parameters;
4938
for (auto const& kv : parameters_) {

google/cloud/bigtable/bound_query.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class BoundQuery {
4848
BoundQuery& operator=(BoundQuery&&) = default;
4949

5050
// Accessors
51-
StatusOr<google::bigtable::v2::PrepareQueryResponse> response();
51+
StatusOr<google::bigtable::v2::PrepareQueryResponse> response() const;
5252
std::unordered_map<std::string, Value> const& parameters() const;
5353
InstanceResource const& instance() const;
5454

google/cloud/bigtable/bound_query_test.cc

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,6 @@ TEST(BoundQuery, FromPreparedQuery) {
3535
"SELECT * FROM my_table WHERE col1 = @val1 and col2 = @val2;");
3636
SqlStatement sql_statement(statement_contents);
3737
PrepareQueryResponse response;
38-
std::unordered_map<std::string, Value> parameters = {{"val1", Value(true)},
39-
{"val2", Value(2.0)}};
40-
4138
// The following variables are only meant to confirm the metadata is correctly
4239
// passed down to the BoundQuery.
4340
auto metadata = std::make_unique<google::bigtable::v2::ResultSetMetadata>();
@@ -47,18 +44,24 @@ TEST(BoundQuery, FromPreparedQuery) {
4744
schema->mutable_columns()->Add(std::move(column));
4845
metadata->set_allocated_proto_schema(schema.release());
4946
response.set_allocated_metadata(metadata.release());
47+
auto refresh_fn = [&response]() {
48+
return make_ready_future(StatusOr<PrepareQueryResponse>(response));
49+
};
50+
auto query_plan = bigtable_internal::QueryPlan::Create(
51+
CompletionQueue(fake_cq_impl), std::move(response),
52+
std::move(refresh_fn));
53+
std::unordered_map<std::string, Value> parameters = {{"val1", Value(true)},
54+
{"val2", Value(2.0)}};
5055

51-
PreparedQuery pq(CompletionQueue(fake_cq_impl), instance, sql_statement,
52-
response);
56+
PreparedQuery pq(instance, sql_statement, query_plan);
5357
auto bq = pq.BindParameters(parameters);
5458
EXPECT_EQ(instance.FullName(), bq.instance().FullName());
55-
EXPECT_STATUS_OK(bq.prepared_query());
56-
EXPECT_EQ(statement_contents, bq.prepared_query().value());
5759
EXPECT_EQ(parameters, bq.parameters());
58-
EXPECT_STATUS_OK(bq.metadata());
59-
EXPECT_TRUE(bq.metadata().value().has_proto_schema());
60-
EXPECT_EQ(1, bq.metadata().value().proto_schema().columns_size());
61-
EXPECT_EQ("col1", bq.metadata().value().proto_schema().columns()[0].name());
60+
EXPECT_STATUS_OK(bq.response());
61+
EXPECT_TRUE(bq.response()->metadata().has_proto_schema());
62+
EXPECT_EQ(1, bq.response()->metadata().proto_schema().columns_size());
63+
EXPECT_EQ("col1",
64+
bq.response()->metadata().proto_schema().columns()[0].name());
6265

6366
// Cancel all pending operations, satisfying any remaining futures.
6467
fake_cq_impl->SimulateCompletion(false);
@@ -72,15 +75,19 @@ TEST(BoundQuery, ToRequestProto) {
7275
"SELECT * FROM my_table WHERE col1 = @val1 and col2 = @val2;");
7376
SqlStatement sql_statement(statement_contents);
7477
PrepareQueryResponse response;
78+
auto refresh_fn = []() {
79+
return make_ready_future(StatusOr<PrepareQueryResponse>{});
80+
};
81+
auto query_plan = bigtable_internal::QueryPlan::Create(
82+
CompletionQueue(fake_cq_impl), response, std::move(refresh_fn));
7583
std::unordered_map<std::string, Value> parameters = {{"val1", Value(true)},
7684
{"val2", Value(2.0)}};
7785

78-
PreparedQuery pq(CompletionQueue(fake_cq_impl), instance, sql_statement,
79-
response);
86+
PreparedQuery pq(instance, sql_statement, query_plan);
8087
auto bq = pq.BindParameters(parameters);
8188
google::bigtable::v2::ExecuteQueryRequest proto = bq.ToRequestProto();
8289
EXPECT_EQ(instance.FullName(), proto.instance_name());
83-
EXPECT_EQ(statement_contents, proto.prepared_query());
90+
EXPECT_EQ("", proto.prepared_query());
8491

8592
// Test param contents.
8693
EXPECT_EQ(parameters.size(), proto.mutable_params()->size());

google/cloud/bigtable/client_test.cc

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// limitations under the License.
1414

1515
#include "google/cloud/bigtable/client.h"
16+
#include "google/cloud/bigtable/internal/query_plan.h"
1617
#include "google/cloud/bigtable/mocks/mock_data_connection.h"
1718
#include "google/cloud/bigtable/mocks/mock_query_row.h"
1819
#include "google/cloud/bigtable/mocks/mock_row_reader.h"
@@ -44,9 +45,18 @@ TEST(Client, PrepareQuery) {
4445
EXPECT_EQ("projects/the-project/instances/the-instance",
4546
params.instance.FullName());
4647
EXPECT_EQ("SELECT * FROM the-table", params.sql_statement.sql());
47-
PreparedQuery q(CompletionQueue{fake_cq_impl}, params.instance,
48-
params.sql_statement, PrepareQueryResponse{});
49-
return q;
48+
49+
std::unordered_map<std::string, bigtable::Value> parameters;
50+
google::bigtable::v2::PrepareQueryResponse pq_response;
51+
auto refresh_fn = [&pq_response]() {
52+
return make_ready_future(
53+
StatusOr<google::bigtable::v2::PrepareQueryResponse>(
54+
pq_response));
55+
};
56+
auto query_plan = bigtable_internal::QueryPlan::Create(
57+
CompletionQueue(fake_cq_impl), std::move(pq_response),
58+
std::move(refresh_fn));
59+
return bigtable::PreparedQuery(instance, sql, std::move(query_plan));
5060
});
5161

5262
Client client(std::move(conn_mock));
@@ -67,9 +77,20 @@ TEST(Client, AsyncPrepareQuery) {
6777
EXPECT_EQ("projects/the-project/instances/the-instance",
6878
params.instance.FullName());
6979
EXPECT_EQ("SELECT * FROM the-table", params.sql_statement.sql());
70-
PreparedQuery q(CompletionQueue{fake_cq_impl}, params.instance,
71-
params.sql_statement, PrepareQueryResponse{});
72-
return make_ready_future(make_status_or(std::move(q)));
80+
81+
std::unordered_map<std::string, bigtable::Value> parameters;
82+
google::bigtable::v2::PrepareQueryResponse pq_response;
83+
auto refresh_fn = [&pq_response]() {
84+
return make_ready_future(
85+
StatusOr<google::bigtable::v2::PrepareQueryResponse>(
86+
pq_response));
87+
};
88+
auto query_plan = bigtable_internal::QueryPlan::Create(
89+
CompletionQueue(fake_cq_impl), std::move(pq_response),
90+
std::move(refresh_fn));
91+
StatusOr<bigtable::PreparedQuery> result =
92+
bigtable::PreparedQuery(instance, sql, std::move(query_plan));
93+
return make_ready_future(result);
7394
});
7495
Client client(std::move(conn_mock));
7596
auto prepared_query = client.AsyncPrepareQuery(instance, sql);

google/cloud/bigtable/prepared_query.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ BoundQuery PreparedQuery::BindParameters(
2626
}
2727

2828
InstanceResource const& PreparedQuery::instance() const { return instance_; }
29+
2930
SqlStatement const& PreparedQuery::sql_statement() const {
3031
return sql_statement_;
3132
}

google/cloud/bigtable/prepared_query.h

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -44,27 +44,6 @@ class PreparedQuery {
4444
InstanceResource const& instance() const;
4545
SqlStatement const& sql_statement() const;
4646

47-
// While we work on the Bigtable GoogleSQL functionality, we will keep this
48-
// constructor as public, but this will be converted to private as
49-
// originally intended once other classes that orchestrate PreparedQuery
50-
// are implemented.
51-
GOOGLE_CLOUD_CPP_DEPRECATED("use the other constructor")
52-
PreparedQuery(CompletionQueue cq, InstanceResource instance,
53-
SqlStatement sql_statement,
54-
google::bigtable::v2::PrepareQueryResponse response)
55-
: instance_(std::move(instance)),
56-
sql_statement_(std::move(sql_statement)) {
57-
*response.mutable_prepared_query() = sql_statement_.sql();
58-
59-
// For now, the refresh function has no effect, and we simply return a new
60-
// prepared query response.
61-
query_plan_ = bigtable_internal::QueryPlan::Create(
62-
std::move(cq), std::move(response), [] {
63-
return make_ready_future(
64-
StatusOr<google::bigtable::v2::PrepareQueryResponse>{});
65-
});
66-
}
67-
6847
PreparedQuery(InstanceResource instance, SqlStatement sql_statement,
6948
std::shared_ptr<bigtable_internal::QueryPlan> query_plan)
7049
: instance_(std::move(instance)),

google/cloud/bigtable/prepared_query_test.cc

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,14 @@ TEST(PreparedQuery, DefaultConstructor) {
3333
"SELECT * FROM my_table WHERE col1 = @val1 and col2 = @val2;");
3434
SqlStatement sql_statement(statement_contents);
3535
PrepareQueryResponse response;
36-
PreparedQuery q(CompletionQueue(fake_cq_impl), instance, sql_statement,
37-
response);
36+
auto refresh_fn = [&response]() {
37+
return make_ready_future(
38+
StatusOr<google::bigtable::v2::PrepareQueryResponse>(response));
39+
};
40+
auto query_plan = bigtable_internal::QueryPlan::Create(
41+
CompletionQueue(fake_cq_impl), std::move(response),
42+
std::move(refresh_fn));
43+
PreparedQuery q(instance, sql_statement, query_plan);
3844
EXPECT_EQ(instance.FullName(), q.instance().FullName());
3945
EXPECT_EQ(statement_contents, q.sql_statement().sql());
4046

0 commit comments

Comments
 (0)