Changeset combined,2.1.2 for combined/src/odbc/parameter.lisp
- Timestamp:
- 11/28/2007 03:50:39 AM (19 years ago)
- branch-nick:
- 64-bit
- revision id:
- dsowen@tux-20071128035039-edmhe5hgjsmjzt4w
- File:
-
- 1 edited
-
combined/src/odbc/parameter.lisp (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
combined/src/odbc/parameter.lisp
r2.1.1 r2.1.2 56 56 ;;;; dso: not so sure about this one and its callers 57 57 (defun bind-parameter (hstmt pos param) 58 (setf (slot-value param 'ind-ptr) 58 (setf (slot-value param 'ind-ptr) 59 59 (cffi:foreign-alloc 'sql-len)) 60 (%sql-bind-parameter 60 (%sql-bind-parameter 61 61 hstmt 62 62 pos … … 97 97 ()) 98 98 99 ;; dso+ 99 100 (defmethod initialize-parameter ((param string-parameter) args) 100 101 (let ((length-of-buffer (or (car args) *default-string-parameter-size*))) … … 108 109 (setf value-ptr (alloc-chars length-of-buffer))))) 109 110 111 ;; dso+ 110 112 (defmethod set-parameter-value ((param string-parameter) value) 111 113 (cond 112 114 ((null value) 113 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long) 114 $SQL_NULL_DATA) 115 (put-string (slot-value param 'value-ptr) "")) 116 (t 117 (cffi:lisp-string-to-foreign value (slot-value param 'value-ptr) (1+ (length value))) 118 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long) 119 (length value))))) 120 115 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 116 $SQL_NULL_DATA) 117 (put-string (slot-value param 'value-ptr) "")) 118 (t 119 (cffi:lisp-string-to-foreign value 120 (slot-value param 'value-ptr) 121 (1+ (length value))) 122 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 123 (length value))))) 124 125 ;; dso+ 121 126 (defmethod get-parameter-value ((param string-parameter)) 122 (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) :long)))127 (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len))) 123 128 (if (= len $SQL_NULL_DATA) 124 nil125 (progn126 (get-string (slot-value param 'value-ptr) len)))))129 nil 130 (progn 131 (get-string (slot-value param 'value-ptr) len))))) 127 132 128 133 ;;------------------------ … … 132 137 ()) 133 138 139 ;; dso+ 134 140 (defmethod initialize-parameter ((param unicode-string-parameter) args) 135 (let ((length-of-buffer (* 2 (or (car args) *default-string-parameter-size*)))) 141 (let ((length-of-buffer 142 (* 2 (or (car args) *default-string-parameter-size*)))) 136 143 (with-slots (value-type parameter-type buffer-length 137 144 column-size value-ptr … … 143 150 (setf value-ptr (cffi:foreign-alloc :uint8 :count length-of-buffer))))) 144 151 152 ;; dso+ 145 153 (defmethod set-parameter-value ((param unicode-string-parameter) value) 146 154 (cond 147 155 ((null value) 148 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long) 149 $SQL_NULL_DATA) 150 ;; not necessary 151 (%put-unicode-string (slot-value param 'value-ptr) "")) 152 (t 153 (%put-unicode-string (slot-value param 'value-ptr) value) 154 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long) 155 (* 2 (length value)))))) 156 156 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 157 $SQL_NULL_DATA) 158 ;; not necessary 159 (%put-unicode-string (slot-value param 'value-ptr) "")) 160 (t 161 (%put-unicode-string (slot-value param 'value-ptr) value) 162 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 163 (* 2 (length value)))))) 164 165 ;; dso+ 157 166 (defmethod get-parameter-value ((param unicode-string-parameter)) 158 (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) :long)))167 (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len))) 159 168 (if (= len $SQL_NULL_DATA) 160 nil161 (progn162 (%get-unicode-string (slot-value param 'value-ptr) len)))))169 nil 170 (progn 171 (%get-unicode-string (slot-value param 'value-ptr) len))))) 163 172 164 173 ;;---------------------- … … 169 178 ()) 170 179 180 ;; dso+ 171 181 (defmethod initialize-parameter ((param integer-parameter) args) 172 182 (assert (not args)) … … 179 189 180 190 (defmethod set-parameter-value ((param integer-parameter) value) 181 (cond 191 (cond 182 192 ((null value) 183 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)184 $SQL_NULL_DATA))185 (t (setf (cffi:mem-ref (slot-value param 'value-ptr) :long)186 value)187 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long) 0))))193 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 194 $SQL_NULL_DATA)) 195 (t (setf (cffi:mem-ref (slot-value param 'value-ptr) 'sql-integer) 196 value) 197 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 0)))) 188 198 189 199 (defmethod get-parameter-value ((param integer-parameter)) 190 (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) :long)))200 (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len))) 191 201 (if (= len $SQL_NULL_DATA) 192 nil193 (progn194 (cffi:mem-ref (slot-value param 'value-ptr) :long)))))202 nil 203 (progn 204 (cffi:mem-ref (slot-value param 'value-ptr) 'sql-integer))))) 195 205 196 206 … … 202 212 ()) 203 213 214 ;; dso+ 204 215 (defmethod initialize-parameter ((param double-parameter) args) 205 216 (assert (not args)) 206 (with-slots (value-type parameter-type buffer-length value-ptr 207 ind-ptr) param 208 (setf value-type $SQL_C_DOUBLE) 209 (setf parameter-type $SQL_DOUBLE) 210 (setf buffer-length 8) 211 (setf value-ptr (cffi:foreign-alloc :double )))) 212 217 (with-slots (value-type parameter-type buffer-length value-ptr 218 ind-ptr) param 219 (setf value-type $SQL_C_DOUBLE) 220 (setf parameter-type $SQL_DOUBLE) 221 (setf buffer-length 8) 222 (setf value-ptr (cffi:foreign-alloc :double)))) 223 224 ;; dso+ 213 225 (defmethod set-parameter-value ((param double-parameter) value) 214 (cond 215 ((null value) 216 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long) 217 $SQL_NULL_DATA)) 218 (t 219 (setf (cffi:mem-ref (slot-value param 'value-ptr) :double) 220 (coerce value 'double-float)) 221 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long) 8)))) 222 226 (cond 227 ((null value) 228 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 229 $SQL_NULL_DATA)) 230 (t 231 (setf (cffi:mem-ref (slot-value param 'value-ptr) :double) 232 (coerce value 'double-float)) 233 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 8)))) 234 235 ;; dso+ 223 236 (defmethod get-parameter-value ((param double-parameter)) 224 (if (= (cffi:mem-ref (slot-value param 'ind-ptr) :long) $SQL_NULL_DATA)237 (if (= (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) $SQL_NULL_DATA) 225 238 nil 226 239 (cffi:mem-ref (slot-value param 'value-ptr) :double))) … … 243 256 (setf value-ptr (cffi:foreign-alloc :uchar :count 24)))) 244 257 245 258 ;; dso+ 246 259 (defmethod set-parameter-value ((param date-parameter) value) 247 260 (if (null value) 248 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long)261 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 249 262 $SQL_NULL_DATA) 250 (progn 251 ;; fixme warum 1? 252 (setf (cffi:mem-ref (slot-value param 'ind-ptr) :long) 1) 253 (multiple-value-bind (sec min hour day month year) 254 (decode-universal-time 255 (funcall *date-datatype-to-universal-time* value)) 256 (%put-sql-c-timestamp (slot-value param 'value-ptr) year month day hour min sec 0))))) 257 263 (progn 264 ;; fixme warum 1? 265 (setf (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len) 1) 266 (multiple-value-bind (sec min hour day month year) 267 (decode-universal-time 268 (funcall *date-datatype-to-universal-time* value)) 269 (%put-sql-c-timestamp (slot-value param 'value-ptr) year month day hour min sec 0))))) 270 271 ;; dso+ 258 272 (defmethod get-parameter-value ((param date-parameter)) 259 (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) :long)))260 (if (= len $SQL_NULL_DATA) 261 nil262 (funcall *universal-time-to-date-dataype*263 (timestamp-to-universal-time (slot-value param 'value-ptr))))))273 (let ((len (cffi:mem-ref (slot-value param 'ind-ptr) 'sql-len))) 274 (if (= len $SQL_NULL_DATA) 275 nil 276 (funcall *universal-time-to-date-dataype* 277 (timestamp-to-universal-time (slot-value param 'value-ptr)))))) 264 278 265 279
Note: See TracChangeset
for help on using the changeset viewer.
