@@ -998,88 +998,88 @@ pysqlite_cursor_execute_json_impl(pysqlite_Cursor *self, PyObject *sql,
998998 return NULL ;
999999 }
10001000 Py_DECREF (result );
1001-
1001+
10021002 // Check if we have a statement with results
10031003 if (!self -> statement || sqlite3_column_count (self -> statement -> st ) == 0 ) {
10041004 // No results to convert to JSON, return empty JSON array
10051005 return PyUnicode_FromString ("[]" );
10061006 }
1007-
1007+
10081008 // Build a JSON query that wraps the original query
10091009 sqlite3_stmt * stmt = self -> statement -> st ;
10101010 int numcols = sqlite3_column_count (stmt );
1011-
1011+
10121012 // Build the json_object parameters
10131013 PyObject * column_list = PyList_New (0 );
10141014 if (!column_list ) {
10151015 return NULL ;
10161016 }
1017-
1017+
10181018 for (int i = 0 ; i < numcols ; i ++ ) {
10191019 const char * colname = sqlite3_column_name (stmt , i );
10201020 if (!colname ) {
10211021 Py_DECREF (column_list );
10221022 return PyErr_NoMemory ();
10231023 }
1024-
1024+
10251025 // Add column name as quoted string literal for json_object keys
10261026 PyObject * colname_obj = PyUnicode_FromFormat ("'%s'" , colname );
10271027 if (!colname_obj ) {
10281028 Py_DECREF (column_list );
10291029 return NULL ;
10301030 }
1031-
1031+
10321032 if (PyList_Append (column_list , colname_obj ) < 0 ) {
10331033 Py_DECREF (colname_obj );
10341034 Py_DECREF (column_list );
10351035 return NULL ;
10361036 }
10371037 Py_DECREF (colname_obj );
1038-
1038+
10391039 // Add column reference
10401040 PyObject * colref_obj = PyUnicode_FromFormat ("row.%s" , colname );
10411041 if (!colref_obj ) {
10421042 Py_DECREF (column_list );
10431043 return NULL ;
10441044 }
1045-
1045+
10461046 if (PyList_Append (column_list , colref_obj ) < 0 ) {
10471047 Py_DECREF (colref_obj );
10481048 Py_DECREF (column_list );
10491049 return NULL ;
10501050 }
10511051 Py_DECREF (colref_obj );
10521052 }
1053-
1053+
10541054 // Join the column list with commas
10551055 PyObject * comma = PyUnicode_FromString ("," );
10561056 if (!comma ) {
10571057 Py_DECREF (column_list );
10581058 return NULL ;
10591059 }
1060-
1060+
10611061 PyObject * column_str = PyUnicode_Join (comma , column_list );
10621062 Py_DECREF (comma );
10631063 if (!column_str ) {
10641064 Py_DECREF (column_list );
10651065 return NULL ;
10661066 }
1067-
1067+
10681068 // Complete the JSON query
10691069 PyObject * full_query = PyUnicode_FromFormat ("SELECT json_group_array(json_object(%S)) FROM (%U) AS row" , column_str , sql );
10701070 Py_DECREF (column_str );
10711071 Py_DECREF (column_list );
10721072 if (!full_query ) {
10731073 return NULL ;
10741074 }
1075-
1075+
10761076 // Execute the JSON query
10771077 pysqlite_Statement * json_stmt = pysqlite_statement_create (self -> connection , full_query );
10781078 Py_DECREF (full_query );
10791079 if (!json_stmt ) {
10801080 return NULL ;
10811081 }
1082-
1082+
10831083 // Bind parameters if needed
10841084 if (parameters != NULL && parameters != Py_None ) {
10851085 bind_parameters (self -> connection -> state , json_stmt , parameters );
@@ -1088,7 +1088,7 @@ pysqlite_cursor_execute_json_impl(pysqlite_Cursor *self, PyObject *sql,
10881088 return NULL ;
10891089 }
10901090 }
1091-
1091+
10921092 // Execute the statement
10931093 int rc = stmt_step (json_stmt -> st );
10941094 if (rc != SQLITE_ROW ) {
@@ -1102,7 +1102,7 @@ pysqlite_cursor_execute_json_impl(pysqlite_Cursor *self, PyObject *sql,
11021102 return NULL ;
11031103 }
11041104 }
1105-
1105+
11061106 // Get the JSON result
11071107 const char * json_result = (const char * )sqlite3_column_text (json_stmt -> st , 0 );
11081108 PyObject * result_str = NULL ;
@@ -1112,7 +1112,7 @@ pysqlite_cursor_execute_json_impl(pysqlite_Cursor *self, PyObject *sql,
11121112 // NULL result, return empty JSON array
11131113 result_str = PyUnicode_FromString ("[]" );
11141114 }
1115-
1115+
11161116 Py_DECREF (json_stmt );
11171117 return result_str ;
11181118}
0 commit comments