From 984c09aeebeca1f0dcc1948f3beef4b153f155ef Mon Sep 17 00:00:00 2001 From: Arun Sharma Date: Mon, 8 Jun 2026 19:42:44 -0700 Subject: [PATCH] Preserve JSON-like string parameters --- src_cpp/py_connection.cpp | 14 -------------- test/test_parameter.py | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src_cpp/py_connection.cpp b/src_cpp/py_connection.cpp index 7c7667a..8f93519 100644 --- a/src_cpp/py_connection.cpp +++ b/src_cpp/py_connection.cpp @@ -984,20 +984,6 @@ Value PyConnection::transformPythonValue(const py::handle& val) { } Value PyConnection::transformPythonValueFromParameter(const py::handle& val) { - if (py::isinstance(val)) { - auto strVal = py::cast(val); - if (!strVal.empty() && (strVal.front() == '{' || strVal.front() == '[')) { - auto jsonModule = py::module_::import("json"); - try { - auto parsed = jsonModule.attr("loads")(val); - auto parsedType = pyLogicalTypeFromParameter(parsed); - if (parsedType.containsAny()) { - return Value(LogicalType::JSON(), strVal); - } - return transformPythonValueFromParameterAs(parsed, parsedType); - } catch (...) {} - } - } auto type = pyLogicalTypeFromParameter(val); return transformPythonValueFromParameterAs(val, type); } diff --git a/test/test_parameter.py b/test/test_parameter.py index a3c8a9f..af4d6fd 100644 --- a/test/test_parameter.py +++ b/test/test_parameter.py @@ -117,6 +117,25 @@ def test_str_param(conn_db_readonly: ConnDB) -> None: result.close() +def test_json_like_string_param_round_trips_as_string(conn_db_empty: ConnDB) -> None: + conn, _ = conn_db_empty + conn.execute("CREATE NODE TABLE T(id STRING PRIMARY KEY, cfg STRING)") + + value = '{"curator_enabled": false, "x": [1, 2, null]}' + result = conn.execute( + """ + CREATE (t:T {id: "a"}) + SET t.cfg = $cfg + RETURN t.cfg + """, + {"cfg": value}, + ) + + assert result.get_next() == [value] + assert not result.has_next() + result.close() + + def test_date_param(conn_db_readonly: ConnDB) -> None: conn, _ = conn_db_readonly result = conn.execute(