(#.$SQL_SMALLINT (get-cast-short data-ptr)) ;; ??
(#.$SQL_INTEGER (get-cast-int data-ptr))
(#.$SQL_BIGINT (get-cast-big data-ptr))
- (#.$SQL_DECIMAL
- (let ((*read-base* 10))
- (read-from-string (get-cast-foreign-string data-ptr))))
+ ;; TODO: Change this to read in rationals instead of doubles
+ ((#.$SQL_DECIMAL #.$SQL_NUMERIC)
+ (let* ((*read-base* 10)
+ (*read-default-float-format* 'double-float)
+ (str (get-cast-foreign-string data-ptr)))
+ (read-from-string str)))
(#.$SQL_BIT (get-cast-byte data-ptr))
(t
(case c-type
(get-cast-binary data-ptr out-len *binary-format*))
((#.$SQL_C_SSHORT #.$SQL_C_STINYINT) ; LMH short ints
(get-cast-short data-ptr)) ; LMH
- (#.$SQL_C_SBIGINT (uffi:allocate-foreign-object #.$ODBC-BIG-TYPE)
- (get-cast-short data-ptr))
+ (#.$SQL_C_SBIGINT (get-cast-big data-ptr))
#+ignore
(#.$SQL_C_CHAR
(code-char (get-cast-short data-ptr)))