Skip to content
This repository was archived by the owner on Sep 16, 2025. It is now read-only.

Commit c555cb1

Browse files
jasonf20navado
andauthored
Added support for queries that return scalar results (#11)
* Added support for queries that return scalar results A scalar result is returned as: ``` [ { "status": "Success", "kind": "upsolver_scalar_query_response", "result": { "scalar": { "value": "<value_here>", "valueType": "<value_type_here>" } } } ] ``` This commit transforms this result into a 1x1 grid with a column name of `valueType`. * v0.1.8 --------- Co-authored-by: Robert Navado <837482+navado@users.noreply.github.com>
1 parent 2f11ef8 commit c555cb1

File tree

4 files changed

+22
-6
lines changed

4 files changed

+22
-6
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "upsolver-sdk-python"
3-
version = "0.1.7"
3+
version = "0.1.8"
44
description = "Python SDK for Upsolver"
55
authors = ["Upsolver Team <info@upsolver.com>"]
66

upsolver/client/poller.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,14 @@ def extract_json() -> dict:
9292

9393
if 'result' in rjson:
9494
result = rjson['result']
95-
grid = result['grid'] # columns, data, ...
96-
column_names = [c['name'] for c in grid['columns']]
97-
data_w_columns: ExecutionResult = [dict(zip(column_names, row)) for row in grid['data']]
95+
if rjson['kind'] == 'upsolver_scalar_query_response':
96+
scalar = result['scalar']
97+
column_name = [scalar['valueType']]
98+
data_w_columns: ExecutionResult = [dict(zip([column_name], [scalar]))]
99+
else:
100+
grid = result['grid'] # columns, data, ...
101+
column_name = [c['name'] for c in grid['columns']]
102+
data_w_columns: ExecutionResult = [dict(zip(column_name, row)) for row in grid['data']]
98103

99104
return data_w_columns, result.get('next')
100105
else:

upsolver/dbapi/examples.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,9 @@
7676
except BaseException as e:
7777
print('Caught error on closed connection')
7878
# %%
79+
job_name = '' # Job name here
80+
print('Execute a `SHOW CREATE` statement:')
81+
result1 = cursor.execute(f'show create job {job_name};')
82+
print('create job statement:')
83+
result2 = cursor.fetchone()
84+
print(result2)

upsolver/dbapi/utils.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,12 @@ def extract_json() -> dict:
8383

8484
if 'result' in rjson:
8585
result = rjson['result']
86-
result['grid']['has_next_page'] = result.get('next') is not None
87-
return result['grid'], result.get('next')
86+
if rjson['kind'] == 'upsolver_scalar_query_response':
87+
scalar = result['scalar']
88+
columns = [{'name': scalar['valueType'], 'columnType': {'clazz': 'StringColumnType'}}]
89+
return {'columns': columns, 'data': [scalar]}, result.get('next')
90+
else:
91+
result['grid']['has_next_page'] = result.get('next') is not None
92+
return result['grid'], result.get('next')
8893
else:
8994
return rjson, None

0 commit comments

Comments
 (0)