Skip to content

Commit 51c1ecb

Browse files
mdesmethashhar
authored andcommitted
Provide read-only property query on dbapi Cursor
1 parent a3470da commit 51c1ecb

File tree

4 files changed

+20
-9
lines changed

4 files changed

+20
-9
lines changed

tests/integration/test_dbapi_integration.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ def test_select_query(trino_connection):
8282
assert columns["coordinator"] == "boolean"
8383
assert columns["state"] == "varchar"
8484
assert cur.query_id is not None
85+
assert cur.query == "SELECT * FROM system.runtime.nodes"
8586
assert cur.stats is not None
8687

8788

tests/unit/test_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1006,7 +1006,7 @@ def json(self):
10061006
with mock.patch.object(req, 'post', return_value=MockResponse()) as mock_post:
10071007
query = TrinoQuery(
10081008
request=req,
1009-
sql=sql
1009+
query=sql
10101010
)
10111011
result = query.execute(additional_http_headers=additional_headers)
10121012

trino/client.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -732,7 +732,7 @@ class TrinoQuery(object):
732732
def __init__(
733733
self,
734734
request: TrinoRequest,
735-
sql: str,
735+
query: str,
736736
legacy_primitive_types: bool = False,
737737
) -> None:
738738
self._query_id: Optional[str] = None
@@ -746,7 +746,7 @@ def __init__(
746746
self._update_type = None
747747
self._update_count = None
748748
self._next_uri = None
749-
self._sql = sql
749+
self._query = query
750750
self._result: Optional[TrinoResult] = None
751751
self._legacy_primitive_types = legacy_primitive_types
752752
self._row_mapper: Optional[RowMapper] = None
@@ -755,6 +755,10 @@ def __init__(
755755
def query_id(self) -> Optional[str]:
756756
return self._query_id
757757

758+
@property
759+
def query(self) -> Optional[str]:
760+
return self._query
761+
758762
@property
759763
def columns(self):
760764
if self.query_id:
@@ -799,7 +803,7 @@ def execute(self, additional_http_headers=None) -> TrinoResult:
799803
if self.cancelled:
800804
raise exceptions.TrinoUserError("Query has been cancelled", self.query_id)
801805

802-
response = self._request.post(self._sql, additional_http_headers)
806+
response = self._request.post(self._query, additional_http_headers)
803807
status = self._request.process(response)
804808
self._info_uri = status.info_uri
805809
self._query_id = status.id

trino/dbapi.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,12 @@ def query_id(self) -> Optional[str]:
343343
return self._query.query_id
344344
return None
345345

346+
@property
347+
def query(self) -> Optional[str]:
348+
if self._query is not None:
349+
return self._query.query
350+
return None
351+
346352
@property
347353
def warnings(self):
348354
if self._query is not None:
@@ -364,7 +370,7 @@ def _prepare_statement(self, statement: str, name: str) -> None:
364370
:param name: name that will be assigned to the prepared statement.
365371
"""
366372
sql = f"PREPARE {name} FROM {statement}"
367-
query = trino.client.TrinoQuery(self.connection._create_request(), sql=sql,
373+
query = trino.client.TrinoQuery(self.connection._create_request(), query=sql,
368374
legacy_primitive_types=self._legacy_primitive_types)
369375
query.execute()
370376

@@ -374,7 +380,7 @@ def _execute_prepared_statement(
374380
params
375381
):
376382
sql = 'EXECUTE ' + statement_name + ' USING ' + ','.join(map(self._format_prepared_param, params))
377-
return trino.client.TrinoQuery(self._request, sql=sql, legacy_primitive_types=self._legacy_primitive_types)
383+
return trino.client.TrinoQuery(self._request, query=sql, legacy_primitive_types=self._legacy_primitive_types)
378384

379385
def _format_prepared_param(self, param):
380386
"""
@@ -454,7 +460,7 @@ def _format_prepared_param(self, param):
454460

455461
def _deallocate_prepared_statement(self, statement_name: str) -> None:
456462
sql = 'DEALLOCATE PREPARE ' + statement_name
457-
query = trino.client.TrinoQuery(self.connection._create_request(), sql=sql,
463+
query = trino.client.TrinoQuery(self.connection._create_request(), query=sql,
458464
legacy_primitive_types=self._legacy_primitive_types)
459465
query.execute()
460466

@@ -486,7 +492,7 @@ def execute(self, operation, params=None):
486492
self._deallocate_prepared_statement(statement_name)
487493

488494
else:
489-
self._query = trino.client.TrinoQuery(self._request, sql=operation,
495+
self._query = trino.client.TrinoQuery(self._request, query=operation,
490496
legacy_primitive_types=self._legacy_primitive_types)
491497
self._iterator = iter(self._query.execute())
492498
return self
@@ -582,7 +588,7 @@ def describe(self, sql: str) -> List[DescribeOutput]:
582588
sql = f"DESCRIBE OUTPUT {statement_name}"
583589
self._query = trino.client.TrinoQuery(
584590
self._request,
585-
sql=sql,
591+
query=sql,
586592
legacy_primitive_types=self._legacy_primitive_types,
587593
)
588594
result = self._query.execute()

0 commit comments

Comments
 (0)