r9491: * db-oracle/oracle-objects.lisp: Add database-get-type-specifier for
[clsql.git] / tests / test-fddl.lisp
index 301c37c0af89f440ac8dd135253ac9ef331a60fe..a206f80d7a0dd13cc231483ce456574b6c496cc4 100644 (file)
        
 ;; list current tables 
 (deftest :fddl/table/1
-    (apply #'values 
-           (sort (mapcar #'string-downcase
-                         (clsql:list-tables :owner *test-database-user*))
-                 #'string<))
-  "addr" "company" "ea_join" "employee" "type_bigint" "type_table")
+    (sort (mapcar #'string-downcase
+                 (clsql:list-tables :owner *test-database-user*))
+     #'string<)
+  ("addr" "big" "company" "ea_join" "employee" "type_bigint" "type_table"))
 
 ;; create a table, test for its existence, drop it and test again 
 (deftest :fddl/table/2
@@ -87,7 +86,7 @@
                     (clsql:list-attributes [employee]
                                           :owner *test-database-user*))
             #'string<))
-  "birthday" "ecompanyid" "email" "emplid" "first_name" "groupid" "height"
+  "bd_utime" "birthday" "ecompanyid" "email" "emplid" "first_name" "groupid" "height"
   "last_name" "managerid" "married")
 
 (deftest :fddl/attributes/2
@@ -97,7 +96,7 @@
                     (clsql:list-attribute-types [employee]
                                                :owner *test-database-user*))
             #'string<))
-  "birthday" "ecompanyid" "email" "emplid" "first_name" "groupid" "height"
+  "bd_utime" "birthday" "ecompanyid" "email" "emplid" "first_name" "groupid" "height"
   "last_name" "managerid" "married")
 
 ;; Attribute types are vendor specific so need to test a range
     (and (member (clsql:attribute-type [height] [employee]) '(:float :float8 :number)) t)
   t)
 
+(deftest :fddl/attributes/7
+    (and (member (clsql:attribute-type [bd_utime] [employee]) '(:bigint :int8 :char)) t)
+  t)
 
 
 ;; create a view, test for existence, drop it and test again
         (clsql:drop-sequence [foo] :if-does-not-exist :ignore)))
   6)
 
+(deftest :fddl/big/1 
+    (let ((rows (clsql:select [*] :from [big] :field-names nil)))
+      (values
+       (length rows)
+       (do ((i 0 (1+ i))
+           (max (expt 2 60))
+           (rest rows (cdr rest)))
+          ((= i (length rows)) t)
+        (let ((index (1+ i))
+              (int (first (car rest)))
+              (bigint (second (car rest))))
+          (when (and (or (eq *test-database-type* :oracle)
+                         (and (eq *test-database-type* :odbc)
+                              (eq *test-database-underlying-type* :postgresql)))
+                     (stringp bigint))
+            (setf bigint (parse-integer bigint)))
+          (unless (and (eql int index)
+                       (eql bigint (truncate max index)))
+            (return nil))))))
+  555 t)
+
+          
 ))
 
 #.(clsql:restore-sql-reader-syntax-state)