;;;; Author: Kevin M. Rosenberg
;;;; Created: Mar 2002
;;;;
-;;;; $Id$
-;;;;
-;;;; This file, part of CLSQL, is Copyright (c) 2002-2004 by Kevin M. Rosenberg
+;;;; This file, part of CLSQL, is Copyright (c) 2002-2010 by Kevin M. Rosenberg
;;;;
;;;; CLSQL users are granted the rights to distribute and use this software
;;;; as governed by the terms of the Lisp Lesser GNU Public License
results)
(destructuring-bind (int bigint) row
(push (list (integerp int)
- (if (and (eq :odbc *test-database-type*)
- (eq :postgresql *test-database-underlying-type*))
- ;; ODBC/Postgresql may return returns bigints as strings or integer
- ;; depending upon the platform
- t
- (integerp bigint)))
+ (integerp bigint))
results)))))
((t t) (t t) (t t) (t t) (t t) (t t) (t t) (t t) (t t) (t t) (t t)))
))
nil)
(deftest :basic/bigtext/2
- (dotimes (n 10)
- (with-dataset *ds-bigtext*
- (let* ((len (random 7500))
- (str (make-string len :initial-element #\a))
- (cmd (format nil "INSERT INTO testbigtext (a) VALUES ('~a')" str)))
- (execute-command cmd)
- (let ((a (first (query "SELECT a from testbigtext"
- :flatp t :field-names nil))))
- (assert (string= str a) (str a)
- "mismatch on a. inserted: ~a returned: ~a" len (length a)))
- )))
- nil)
-
- (deftest :basic/i18n/1
- (first (query "SELECT 'Iñtërnâtiônàlizætiøn'"
- :flatp t :field-names nil))
- "Iñtërnâtiônàlizætiøn")
+ (flet ((random-char ()
+ (let ((alphabet "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
+ (idx (random 52)))
+ (elt alphabet idx))))
+ (dotimes (n 10)
+ (with-dataset *ds-bigtext*
+ (let* ((len (random 7500))
+ (str (coerce (make-array len
+ :initial-contents (loop repeat len collect (random-char)))
+ 'string))
+ (cmd (format nil "INSERT INTO testbigtext (a) VALUES ('~a')" str)))
+ (execute-command cmd)
+ (let ((a (first (query "SELECT a from testbigtext"
+ :flatp t :field-names nil))))
+ (assert (string= str a) (str a)
+ "mismatch on randomized bigtext(~a) inserted: ~s returned: ~s" len str a))
+ ))))
+ nil)
- (deftest :basic/i18n/2
- (first (query "SELECT 'Iñtërnâtiônàližætiøn'"
- :flatp t :field-names nil))
- "Iñtërnâtiônàližætiøn")
+ (deftest :basic/reallybigintegers/1
+ (with-dataset *ds-reallybigintegers*
+ (let* ((a (1- (expt 2 64)))
+ (b (- (expt 2 64) 2))
+ (c (expt 2 63))
+ (d (expt 2 62))
+ (sql (format nil "INSERT INTO testreallybigintegers
+ VALUES (~A, ~A, ~A, ~A)"
+ a b c d)))
+ (query sql)
+ (let ((results
+ (query
+ (format nil "SELECT * FROM testreallybigintegers"))))
+ (equal `(,a ,b ,c ,d) (car results)))))
+ t)
))
(def-dataset *ds-bigtext*
(:setup "CREATE TABLE testbigtext(a varchar(7500))")
(:cleanup "DROP TABLE testbigtext"))
+
+(def-dataset *ds-reallybigintegers*
+ (:setup (lambda ()
+ (ignore-errors
+ (clsql:execute-command "DROP TABLE testreallybigintegers"))
+ (clsql:execute-command
+ "CREATE TABLE testreallybigintegers( a BIGINT UNSIGNED,
+ b BIGINT UNSIGNED,
+ c BIGINT UNSIGNED,
+ d BIGINT UNSIGNED )")))
+ (:cleanup "DROP TABLE testreallybigintegers"))