-
Notifications
You must be signed in to change notification settings - Fork 28
Open
Description
(let* ((pq (dbi:prepare conn "SELECT * FROM visit"))
(query (dbi:execute pq nil)))
(dbi:fetch-all query))
above code run in hunchentoot will lead to memory leak in MySQL
https://blog.actorsfit.in/a?ID=01800-28830ddf-a436-4fff-b97d-d952487c8948
the result set of mysql_store_result(), mysql_use_result(), and mysql_list_dbs() must call mysql_free_result() to release the memory used by the result set after completing the operation on the result set.
(defmethod execute-using-connection ((conn dbd-mysql-connection) (query dbd-mysql-query) params)
(let* (took-usec
(result
(with-error-handler conn
(with-took-usec took-usec
(query (funcall (query-prepared query) params)
:database (connection-handle conn)
:store nil)))))
(return-or-close (owner-pool result) result)
(next-result-set result)
(cond
((mysql-use-store query)
(multiple-value-bind (rows count)
(fetch-all-rows result)
**(cl-mysql-system::mysql-free-result (cl-mysql-system::result-set result))**
(sql-log (query-sql query) params count took-usec)
(setf result (make-mysql-result-list rows count))
(setf (query-row-count query) count)))
(t
(sql-log (query-sql query) params nil took-usec)))
(setf (query-results query) result)
query))
Metadata
Metadata
Assignees
Labels
No labels