-(defstruct mysql-result-set
- (res-ptr (uffi:make-null-pointer 'mysql-mysql-res)
- :type mysql-mysql-res-ptr-def)
- (field-types nil :type cons)
- (full-set nil :type boolean))
-
-(defmethod database-dump-result-set (result-set (database mysql-database))
- (mysql-free-result (mysql-result-set-res-ptr result-set))
- t)
-
-
-(defmethod database-store-next-row (result-set (database mysql-database) list)
- (let* ((res-ptr (mysql-result-set-res-ptr result-set))
- (row (mysql-fetch-row res-ptr)))
- (declare (type mysql-mysql-res-ptr-def res-ptr)
- (type mysql-row-def row))
- (unless (uffi:null-pointer-p row)
- (loop for i from 0 below (mysql-num-fields res-ptr)
- for rest on list
- do
- (setf (car rest)
- (uffi:convert-from-foreign-string (uffi:deref-array row 'mysql-row i))))
- list)))
-
-
-(defmethod database-execute-command (sql-expression (database mysql-database))
- (uffi:with-cstring (sql-native sql-expression)
- (let ((mysql-ptr (database-mysql-ptr database)))
- (declare (type mysql-mysql-ptr-def mysql-ptr))
- (if (zerop (mysql-query mysql-ptr sql-native))
- t
- (error 'clsql-sql-error
- :database database
- :expression sql-expression
- :errno (mysql-errno mysql-ptr)
- :error (mysql-error-string mysql-ptr))))))
-
-
-