Skip to content

Commit d7f275e

Browse files
committed
impl: add async InsertJob
1 parent 62fadfd commit d7f275e

File tree

11 files changed

+467
-27
lines changed

11 files changed

+467
-27
lines changed

google/cloud/bigquery_unified/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ set(bigquery_unified_library_files
135135
connection.h
136136
idempotency_policy.cc
137137
idempotency_policy.h
138+
internal/async_rest_long_running_operation_custom.h
138139
internal/connection_impl.cc
139140
internal/connection_impl.h
140141
internal/default_options.cc

google/cloud/bigquery_unified/client.cc

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,13 @@ StreamRange<google::cloud::bigquery::v2::ListFormatJob> Client::ListJobs(
6868
}
6969

7070
future<StatusOr<google::cloud::bigquery::v2::Job>> Client::InsertJob(
71-
google::cloud::bigquery::v2::InsertJobRequest const& request,
72-
Options opts) {
73-
return make_ready_future<StatusOr<google::cloud::bigquery::v2::Job>>(
74-
internal::UnimplementedError("not implemented"));
71+
google::cloud::bigquery::v2::Job const& job, Options opts) {
72+
return connection_->InsertJob(
73+
job, internal::MergeOptions(std::move(opts), options_));
7574
}
7675

7776
StatusOr<google::cloud::bigquery::v2::JobReference> Client::InsertJob(
78-
google::cloud::NoAwaitTag,
79-
google::cloud::bigquery::v2::InsertJobRequest const& request,
77+
google::cloud::NoAwaitTag, google::cloud::bigquery::v2::Job const& job,
8078
Options opts) {
8179
return internal::UnimplementedError("not implemented");
8280
}

google/cloud/bigquery_unified/client.h

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,27 +92,25 @@ class Client {
9292
google::cloud::bigquery::v2::JobReference const& job_reference,
9393
Options opts = {});
9494

95+
// DeleteJob
96+
Status DeleteJob(google::cloud::bigquery::v2::DeleteJobRequest const& request,
97+
Options opts = {});
98+
9599
// GetJob
96100
StatusOr<google::cloud::bigquery::v2::Job> GetJob(
97101
google::cloud::bigquery::v2::GetJobRequest const& request,
98102
Options opts = {});
99103

100-
// DeleteJob
101-
Status DeleteJob(google::cloud::bigquery::v2::DeleteJobRequest const& request,
102-
Options opts = {});
103-
104104
// ListJobs
105105
StreamRange<google::cloud::bigquery::v2::ListFormatJob> ListJobs(
106106
google::cloud::bigquery::v2::ListJobsRequest request, Options opts = {});
107107

108108
// InsertJob
109109
future<StatusOr<google::cloud::bigquery::v2::Job>> InsertJob(
110-
google::cloud::bigquery::v2::InsertJobRequest const& request,
111-
Options opts = {});
110+
google::cloud::bigquery::v2::Job const& job, Options opts = {});
112111

113112
StatusOr<google::cloud::bigquery::v2::JobReference> InsertJob(
114-
google::cloud::NoAwaitTag,
115-
google::cloud::bigquery::v2::InsertJobRequest const& request,
113+
google::cloud::NoAwaitTag, google::cloud::bigquery::v2::Job const& job,
116114
Options opts = {});
117115

118116
future<StatusOr<google::cloud::bigquery::v2::Job>> InsertJob(

google/cloud/bigquery_unified/connection.cc

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,16 +71,14 @@ StreamRange<google::cloud::bigquery::v2::ListFormatJob> Connection::ListJobs(
7171

7272
// InsertJob
7373
future<StatusOr<google::cloud::bigquery::v2::Job>> Connection::InsertJob(
74-
google::cloud::bigquery::v2::InsertJobRequest const& request,
75-
Options opts) {
74+
google::cloud::bigquery::v2::Job const& job, Options opts) {
7675
return google::cloud::make_ready_future<
7776
StatusOr<google::cloud::bigquery::v2::Job>>(
7877
Status(StatusCode::kUnimplemented, "not implemented"));
7978
}
8079

8180
StatusOr<google::cloud::bigquery::v2::JobReference> Connection::InsertJob(
82-
google::cloud::NoAwaitTag,
83-
google::cloud::bigquery::v2::InsertJobRequest const& request,
81+
google::cloud::NoAwaitTag, google::cloud::bigquery::v2::Job const& job,
8482
Options opts) {
8583
return internal::UnimplementedError("not implemented");
8684
}

google/cloud/bigquery_unified/connection.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,10 @@ class Connection {
7777

7878
// InsertJob
7979
virtual future<StatusOr<google::cloud::bigquery::v2::Job>> InsertJob(
80-
google::cloud::bigquery::v2::InsertJobRequest const& request,
81-
Options opts);
80+
google::cloud::bigquery::v2::Job const& job, Options opts);
8281

8382
virtual StatusOr<google::cloud::bigquery::v2::JobReference> InsertJob(
84-
google::cloud::NoAwaitTag,
85-
google::cloud::bigquery::v2::InsertJobRequest const& request,
83+
google::cloud::NoAwaitTag, google::cloud::bigquery::v2::Job const& job,
8684
Options opts);
8785

8886
virtual future<StatusOr<google::cloud::bigquery::v2::Job>> InsertJob(

google/cloud/bigquery_unified/google_cloud_cpp_bigquery_bigquery_unified.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ google_cloud_cpp_bigquery_bigquery_unified_hdrs = [
2020
"client.h",
2121
"connection.h",
2222
"idempotency_policy.h",
23+
"internal/async_rest_long_running_operation_custom.h",
2324
"internal/connection_impl.h",
2425
"internal/default_options.h",
2526
"job_options.h",

google/cloud/bigquery_unified/integration_tests/job_integration_test.cc

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

1515
#include "google/cloud/bigquery_unified/client.h"
16+
#include "google/cloud/bigquery_unified/job_options.h"
1617
#include "google/cloud/bigquery_unified/testing_util/status_matchers.h"
1718
#include "google/cloud/bigquery_unified/version.h"
1819
#include "google/cloud/internal/getenv.h"
@@ -22,6 +23,7 @@ namespace google::cloud::bigquery_unified {
2223
GOOGLE_CLOUD_CPP_BIGQUERY_INLINE_NAMESPACE_BEGIN
2324
namespace {
2425

26+
using ::google::cloud::bigquery_unified::testing_util::IsOk;
2527
using ::testing::Eq;
2628

2729
class JobIntegrationTest : public ::testing::Test {
@@ -34,6 +36,35 @@ class JobIntegrationTest : public ::testing::Test {
3436
std::string project_id_;
3537
};
3638

39+
TEST_F(JobIntegrationTest, InsertJob) {
40+
namespace bigquery_proto = google::cloud::bigquery::v2;
41+
42+
bigquery_proto::JobConfigurationQuery query;
43+
query.mutable_use_legacy_sql()->set_value(false);
44+
query.set_query(
45+
"SELECT name, state, year, sum(number) as total "
46+
"FROM `bigquery-public-data.usa_names.usa_1910_2013` "
47+
"WHERE year >= 2000 "
48+
"GROUP BY name, state, year "
49+
"LIMIT 100");
50+
51+
bigquery_proto::JobConfiguration config;
52+
*config.mutable_query() = query;
53+
config.mutable_labels()->insert({"test_suite", "job_integration_test"});
54+
config.mutable_labels()->insert({"test_case", "insert_job"});
55+
56+
bigquery_proto::Job query_job_request;
57+
*query_job_request.mutable_configuration() = config;
58+
std::shared_ptr<Connection> connection =
59+
google::cloud::bigquery_unified::MakeConnection();
60+
auto client = google::cloud::bigquery_unified::Client(connection);
61+
62+
auto options =
63+
google::cloud::Options{}.set<BillingProjectOption>(project_id_);
64+
auto query_job = client.InsertJob(query_job_request, options).get();
65+
EXPECT_THAT(query_job, IsOk());
66+
}
67+
3768
TEST_F(JobIntegrationTest, GetJob) {
3869
namespace bigquery_proto = google::cloud::bigquery::v2;
3970
std::shared_ptr<Connection> connection =

0 commit comments

Comments
 (0)