Skip to content

Commit d171791

Browse files
authored
Merge pull request googleapis#1992 from dhermes/fix-1607
Adding BigQuery support for legacy SQL.
2 parents e653b95 + 21ae0c9 commit d171791

File tree

4 files changed

+30
-0
lines changed

4 files changed

+30
-0
lines changed

gcloud/bigquery/job.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -869,6 +869,7 @@ class _AsyncQueryConfiguration(object):
869869
_flatten_results = None
870870
_priority = None
871871
_use_query_cache = None
872+
_use_legacy_sql = None
872873
_write_disposition = None
873874

874875

@@ -927,6 +928,12 @@ def __init__(self, name, query, client):
927928
https://cloud.google.com/bigquery/docs/reference/v2/jobs#configuration.query.useQueryCache
928929
"""
929930

931+
use_legacy_sql = _TypedProperty('use_legacy_sql', bool)
932+
"""See:
933+
https://cloud.google.com/bigquery/docs/\
934+
reference/v2/jobs#configuration.query.useLegacySql
935+
"""
936+
930937
write_disposition = WriteDisposition('write_disposition')
931938
"""See:
932939
https://cloud.google.com/bigquery/docs/reference/v2/jobs#configuration.query.writeDisposition
@@ -965,6 +972,8 @@ def _populate_config_resource(self, configuration):
965972
configuration['priority'] = self.priority
966973
if self.use_query_cache is not None:
967974
configuration['useQueryCache'] = self.use_query_cache
975+
if self.use_legacy_sql is not None:
976+
configuration['useLegacySql'] = self.use_legacy_sql
968977
if self.write_disposition is not None:
969978
configuration['writeDisposition'] = self.write_disposition
970979

gcloud/bigquery/query.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class _SyncQueryConfiguration(object):
3434
_timeout_ms = None
3535
_preserve_nulls = None
3636
_use_query_cache = None
37+
_use_legacy_sql = None
3738

3839

3940
class QueryResults(object):
@@ -233,6 +234,12 @@ def schema(self):
233234
https://cloud.google.com/bigquery/docs/reference/v2/jobs/query#useQueryCache
234235
"""
235236

237+
use_legacy_sql = _TypedProperty('use_legacy_sql', bool)
238+
"""See:
239+
https://cloud.google.com/bigquery/docs/\
240+
reference/v2/jobs/query#useLegacySql
241+
"""
242+
236243
def _set_properties(self, api_response):
237244
"""Update properties from resource in body of ``api_response``
238245
@@ -264,6 +271,9 @@ def _build_resource(self):
264271
if self.use_query_cache is not None:
265272
resource['useQueryCache'] = self.use_query_cache
266273

274+
if self.use_legacy_sql is not None:
275+
resource['useLegacySql'] = self.use_legacy_sql
276+
267277
if self.dry_run is not None:
268278
resource['dryRun'] = self.dry_run
269279

gcloud/bigquery/test_job.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1248,6 +1248,11 @@ def _verifyBooleanResourceProperties(self, job, config):
12481248
config['useQueryCache'])
12491249
else:
12501250
self.assertTrue(job.use_query_cache is None)
1251+
if 'useLegacySql' in config:
1252+
self.assertEqual(job.use_legacy_sql,
1253+
config['useLegacySql'])
1254+
else:
1255+
self.assertTrue(job.use_legacy_sql is None)
12511256

12521257
def _verifyResourceProperties(self, job, resource):
12531258
self._verifyReadonlyResourceProperties(job, resource)
@@ -1310,6 +1315,7 @@ def test_ctor(self):
13101315
self.assertTrue(job.flatten_results is None)
13111316
self.assertTrue(job.priority is None)
13121317
self.assertTrue(job.use_query_cache is None)
1318+
self.assertTrue(job.use_legacy_sql is None)
13131319
self.assertTrue(job.write_disposition is None)
13141320

13151321
def test_from_api_repr_missing_identity(self):
@@ -1420,6 +1426,7 @@ def test_begin_w_alternate_client(self):
14201426
'flattenResults': True,
14211427
'priority': 'INTERACTIVE',
14221428
'useQueryCache': True,
1429+
'useLegacySql': True,
14231430
'writeDisposition': 'WRITE_TRUNCATE',
14241431
}
14251432
RESOURCE['configuration']['query'] = QUERY_CONFIGURATION
@@ -1439,6 +1446,7 @@ def test_begin_w_alternate_client(self):
14391446
job.flatten_results = True
14401447
job.priority = 'INTERACTIVE'
14411448
job.use_query_cache = True
1449+
job.use_legacy_sql = True
14421450
job.write_disposition = 'WRITE_TRUNCATE'
14431451

14441452
job.begin(client=client2)

gcloud/bigquery/test_query.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ def test_ctor(self):
136136
self.assertTrue(query.max_results is None)
137137
self.assertTrue(query.preserve_nulls is None)
138138
self.assertTrue(query.use_query_cache is None)
139+
self.assertTrue(query.use_legacy_sql is None)
139140

140141
def test_job_wo_jobid(self):
141142
client = _Client(self.PROJECT)
@@ -206,6 +207,7 @@ def test_run_w_alternate_client(self):
206207
query.preserve_nulls = True
207208
query.timeout_ms = 20000
208209
query.use_query_cache = False
210+
query.use_legacy_sql = True
209211
query.dry_run = True
210212

211213
query.run(client=client2)
@@ -226,6 +228,7 @@ def test_run_w_alternate_client(self):
226228
'preserveNulls': True,
227229
'timeoutMs': 20000,
228230
'useQueryCache': False,
231+
'useLegacySql': True,
229232
}
230233
self.assertEqual(req['data'], SENT)
231234
self._verifyResourceProperties(query, RESOURCE)

0 commit comments

Comments
 (0)