Skip to content

Commit 2f0942b

Browse files
authored
feat(bigquery): expose continuous query in config (googleapis#13130)
internal b/450329593
1 parent a4960ef commit 2f0942b

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

bigquery/query.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,9 @@ type QueryConfig struct {
168168
//
169169
// Note: This feature is not yet generally available.
170170
MaxSlots int32
171+
172+
// Whether to run the query as continuous or a regular query.
173+
Continuous bool
171174
}
172175

173176
func (qc *QueryConfig) toBQ() (*bq.JobConfiguration, error) {
@@ -184,6 +187,7 @@ func (qc *QueryConfig) toBQ() (*bq.JobConfiguration, error) {
184187
DestinationEncryptionConfiguration: qc.DestinationEncryptionConfig.toBQ(),
185188
SchemaUpdateOptions: qc.SchemaUpdateOptions,
186189
CreateSession: qc.CreateSession,
190+
Continuous: qc.Continuous,
187191
}
188192
if len(qc.TableDefinitions) > 0 {
189193
qconf.TableDefinitions = make(map[string]bq.ExternalDataConfiguration)
@@ -271,6 +275,7 @@ func bqToQueryConfig(q *bq.JobConfiguration, c *Client) (*QueryConfig, error) {
271275
DestinationEncryptionConfig: bqToEncryptionConfig(qq.DestinationEncryptionConfiguration),
272276
SchemaUpdateOptions: qq.SchemaUpdateOptions,
273277
CreateSession: qq.CreateSession,
278+
Continuous: qq.Continuous,
274279
}
275280
qc.UseStandardSQL = !qc.UseLegacySQL
276281
qc.Reservation = q.Reservation
@@ -478,6 +483,7 @@ func (q *Query) probeFastPath() (*bq.QueryRequest, error) {
478483
q.QueryConfig.DestinationEncryptionConfig != nil ||
479484
q.QueryConfig.SchemaUpdateOptions != nil ||
480485
q.QueryConfig.JobTimeout != 0 ||
486+
q.QueryConfig.Continuous ||
481487
// User has defined the jobID generation behavior
482488
q.JobIDConfig.JobID != "" {
483489
return nil, fmt.Errorf("QueryConfig incompatible with fastPath")

bigquery/query_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,20 @@ func TestQuery(t *testing.T) {
373373
return j
374374
}(),
375375
},
376+
{
377+
dst: c.Dataset("dataset-id").Table("table-id"),
378+
src: &QueryConfig{
379+
Q: "query string",
380+
DefaultProjectID: "def-project-id",
381+
DefaultDatasetID: "def-dataset-id",
382+
Continuous: true,
383+
},
384+
want: func() *bq.Job {
385+
j := defaultQueryJob()
386+
j.Configuration.Query.Continuous = true
387+
return j
388+
}(),
389+
},
376390
}
377391
for i, tc := range testCases {
378392
query := c.Query("")
@@ -526,6 +540,14 @@ func TestProbeFastPath(t *testing.T) {
526540
},
527541
wantErr: true,
528542
},
543+
{
544+
// fail, continuous query
545+
inCfg: QueryConfig{
546+
Q: "foo",
547+
Continuous: true,
548+
},
549+
wantErr: true,
550+
},
529551
}
530552
for i, tc := range testCases {
531553
in := &Query{

0 commit comments

Comments
 (0)