Skip to content

Commit 8bd0dce

Browse files
committed
python: support JSON types in query result
1 parent 6c1ca98 commit 8bd0dce

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

src_cpp/py_query_result.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,8 @@ py::object PyQueryResult::convertValueToPyObject(const Value& value) {
148148
auto Decimal = importCache->decimal.Decimal();
149149
return Decimal(value.toString());
150150
}
151-
case LogicalTypeID::STRING: {
151+
case LogicalTypeID::STRING:
152+
case LogicalTypeID::JSON: {
152153
return py::cast(value.getValue<std::string>());
153154
}
154155
case LogicalTypeID::BLOB: {

test/test_datatype.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,3 +370,12 @@ def test_large_array(conn_db_readwrite: ConnDB) -> None:
370370
sorted_df = df.sort_values(by="id").reset_index(drop=True)
371371
sorted_db_df = db_df.sort_values(by="id").reset_index(drop=True)
372372
assert sorted_df.equals(sorted_db_df)
373+
374+
375+
def test_json(conn_db_readonly: ConnDB) -> None:
376+
conn, _ = conn_db_readonly
377+
result = conn.execute('RETURN CAST(\'{"key": "value", "number": 42}\' AS JSON)')
378+
assert result.has_next()
379+
assert result.get_next() == [{"key": "value", "number": 42}]
380+
assert not result.has_next()
381+
result.close()

0 commit comments

Comments
 (0)