* tests/test-fddl.lisp: Add :order-by for :fddl/big/1 as
reported by Ricardo Boccato Alves
+29 May 2007 Kevin Rosenberg <kevin@rosenberg.net>
+ * tests/test-fddl.lisp: Add :order-by for :fddl/big/1 as
+ reported by Ricardo Boccato Alves
+
02 May 2007 Kevin Rosenberg <kevin@rosenberg.net>
* sql/database.lisp: Add ability of WITH-DATABASE to return
multiple values (patch from Liam Healy)
02 May 2007 Kevin Rosenberg <kevin@rosenberg.net>
* sql/database.lisp: Add ability of WITH-DATABASE to return
multiple values (patch from Liam Healy)
-
-;; list current tables
+
+;; list current tables
(deftest :fddl/table/1
(sort (mapcar #'string-downcase
(clsql:list-tables :owner *test-database-user*))
#'string<)
("addr" "big" "company" "ea_join" "employee" "type_bigint" "type_table"))
(deftest :fddl/table/1
(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
+;; create a table, test for its existence, drop it and test again
(deftest :fddl/table/2
(progn (clsql:create-table [foo]
'(([id] integer)
(deftest :fddl/table/2
(progn (clsql:create-table [foo]
'(([id] integer)
(clsql:table-exists-p [foo] :owner *test-database-user*))))
t nil)
(clsql:table-exists-p [foo] :owner *test-database-user*))))
t nil)
-;; create a table, list its attributes and drop it
+;; create a table, list its attributes and drop it
(progn (clsql:create-table [foo]
'(([id] integer)
([height] float)
(progn (clsql:create-table [foo]
'(([id] integer)
([height] float)
(clsql:drop-table "MyMixedCase"))
((5) (6)))
(clsql:drop-table "MyMixedCase"))
((5) (6)))
(values
(clsql:table-exists-p [foo])
(progn
(let ((*backend-warning-behavior*
(values
(clsql:table-exists-p [foo])
(progn
(let ((*backend-warning-behavior*
- (if (member *test-database-type*
+ (if (member *test-database-type*
'(:postgresql :postgresql-socket))
:ignore
:warn)))
(case *test-database-underlying-type*
'(:postgresql :postgresql-socket))
:ignore
:warn)))
(case *test-database-underlying-type*
- (:mssql (clsql:create-table [foo]
+ (:mssql (clsql:create-table [foo]
'(([bar] integer :not-null :primary-key)
([baz] string :not-null :unique))))
'(([bar] integer :not-null :primary-key)
([baz] string :not-null :unique))))
- (t (clsql:create-table [foo]
+ (t (clsql:create-table [foo]
'(([bar] integer :not-null :unique :primary-key)
([baz] string :not-null :unique))))))
(clsql:table-exists-p [foo]))
(progn
(clsql:drop-table [foo])
(clsql:table-exists-p [foo])))
'(([bar] integer :not-null :unique :primary-key)
([baz] string :not-null :unique))))))
(clsql:table-exists-p [foo]))
(progn
(clsql:drop-table [foo])
(clsql:table-exists-p [foo])))
(values
(clsql:table-exists-p [foo])
(progn
(let ((*backend-warning-behavior*
(values
(clsql:table-exists-p [foo])
(progn
(let ((*backend-warning-behavior*
- (if (member *test-database-type*
+ (if (member *test-database-type*
'(:postgresql :postgresql-socket))
:ignore
:warn)))
'(:postgresql :postgresql-socket))
:ignore
:warn)))
- (clsql:create-table [foo] '(([bar] integer :not-null)
+ (clsql:create-table [foo] '(([bar] integer :not-null)
([baz] string :not-null))
([baz] string :not-null))
- :constraints '("UNIQUE (bar,baz)"
+ :constraints '("UNIQUE (bar,baz)"
"PRIMARY KEY (bar)")))
(clsql:table-exists-p [foo]))
(progn
(clsql:drop-table [foo])
(clsql:table-exists-p [foo])))
"PRIMARY KEY (bar)")))
(clsql:table-exists-p [foo]))
(progn
(clsql:drop-table [foo])
(clsql:table-exists-p [foo])))
(deftest :fddl/attributes/1
(apply #'values
(deftest :fddl/attributes/1
(apply #'values
(mapcar #'string-downcase
(clsql:list-attributes [employee]
:owner *test-database-user*))
(mapcar #'string-downcase
(clsql:list-attributes [employee]
:owner *test-database-user*))
"last_name" "managerid" "married")
(deftest :fddl/attributes/2
"last_name" "managerid" "married")
(deftest :fddl/attributes/2
- (apply #'values
- (sort
+ (apply #'values
+ (sort
(mapcar #'(lambda (a) (string-downcase (car a)))
(clsql:list-attribute-types [employee]
:owner *test-database-user*))
(mapcar #'(lambda (a) (string-downcase (car a)))
(clsql:list-attribute-types [employee]
:owner *test-database-user*))
:as [select [first-name] [last-name] [email]
:from [employee]
:where [= [managerid] 1]])
:as [select [first-name] [last-name] [email]
:from [employee]
:where [= [managerid] 1]])
(clsql:view-exists-p [lenins-group] :owner *test-database-user*)
(progn
(clsql:drop-view [lenins-group] :if-does-not-exist :ignore)
(clsql:view-exists-p [lenins-group] :owner *test-database-user*))))
t nil)
(clsql:view-exists-p [lenins-group] :owner *test-database-user*)
(progn
(clsql:drop-view [lenins-group] :if-does-not-exist :ignore)
(clsql:view-exists-p [lenins-group] :owner *test-database-user*))))
t nil)
-
- ;; create a view, list its attributes and drop it
+
+ ;; create a view, list its attributes and drop it
(when (clsql-sys:db-type-has-views? *test-database-underlying-type*)
(deftest :fddl/view/2
(progn (clsql:create-view [lenins-group]
(when (clsql-sys:db-type-has-views? *test-database-underlying-type*)
(deftest :fddl/view/2
(progn (clsql:create-view [lenins-group]
#'string<)
(clsql:drop-view [lenins-group] :if-does-not-exist :ignore)))
("email" "first_name" "last_name")))
#'string<)
(clsql:drop-view [lenins-group] :if-does-not-exist :ignore)))
("email" "first_name" "last_name")))
-
- ;; create a view, select stuff from it and drop it
+
+ ;; create a view, select stuff from it and drop it
(deftest :fddl/view/3
(progn (clsql:create-view [lenins-group]
:as [select [first-name] [last-name] [email]
:from [employee]
:where [= [managerid] 1]])
(deftest :fddl/view/3
(progn (clsql:create-view [lenins-group]
:as [select [first-name] [last-name] [email]
:from [employee]
:where [= [managerid] 1]])
- (let ((result
- (list
- ;; Shouldn't exist
+ (let ((result
+ (list
+ ;; Shouldn't exist
(clsql:select [first-name] [last-name] [email]
:from [lenins-group]
:where [= [last-name] "Lenin"])
(clsql:select [first-name] [last-name] [email]
:from [lenins-group]
:where [= [last-name] "Lenin"])
(car (clsql:select [first-name] [last-name] [email]
:from [lenins-group]
:where [= [last-name] "Stalin"])))))
(clsql:drop-view [lenins-group] :if-does-not-exist :ignore)
(apply #'values result)))
nil ("Josef" "Stalin" "stalin@soviet.org"))
(car (clsql:select [first-name] [last-name] [email]
:from [lenins-group]
:where [= [last-name] "Stalin"])))))
(clsql:drop-view [lenins-group] :if-does-not-exist :ignore)
(apply #'values result)))
nil ("Josef" "Stalin" "stalin@soviet.org"))
(deftest :fddl/view/4
(progn (clsql:create-view [lenins-group]
:column-list '([forename] [surname] [email])
:as [select [first-name] [last-name] [email]
:from [employee]
:where [= [managerid] 1]])
(deftest :fddl/view/4
(progn (clsql:create-view [lenins-group]
:column-list '([forename] [surname] [email])
:as [select [first-name] [last-name] [email]
:from [employee]
:where [= [managerid] 1]])
(clsql:select [forename] [surname] [email]
:from [lenins-group]
:where [= [surname] "Lenin"])
(clsql:select [forename] [surname] [email]
:from [lenins-group]
:where [= [surname] "Lenin"])
(car (clsql:select [forename] [surname] [email]
:from [lenins-group]
:where [= [surname] "Stalin"])))))
(car (clsql:select [forename] [surname] [email]
:from [lenins-group]
:where [= [surname] "Stalin"])))))
(apply #'values result)))
nil ("Josef" "Stalin" "stalin@soviet.org"))
(apply #'values result)))
nil ("Josef" "Stalin" "stalin@soviet.org"))
-;; create an index, test for existence, drop it and test again
+;; create an index, test for existence, drop it and test again
(deftest :fddl/index/1
(progn (clsql:create-index [bar] :on [employee] :attributes
'([first-name] [last-name] [email]) :unique t)
(deftest :fddl/index/1
(progn (clsql:create-index [bar] :on [employee] :attributes
'([first-name] [last-name] [email]) :unique t)
(clsql:index-exists-p [bar] :owner *test-database-user*))))
t nil)
(clsql:index-exists-p [bar] :owner *test-database-user*))))
t nil)
-;; create indexes with names as strings, symbols and in square brackets
+;; create indexes with names as strings, symbols and in square brackets
(deftest :fddl/index/2
(let ((names '("foo" foo [foo]))
(result '()))
(deftest :fddl/index/2
(let ((names '("foo" foo [foo]))
(result '()))
(apply #'values result))
t t t)
(apply #'values result))
t t t)
-;; test list-indexes with keyword :ON
+;; test list-indexes with keyword :ON
(deftest :fddl/index/3
(progn
(clsql:create-table [i3test] '(([a] (string 10))
(deftest :fddl/index/3
(progn
(clsql:create-table [i3test] '(([a] (string 10))
(clsql:table-exists-p [i3test])
(clsql:index-exists-p [foo])
(clsql:index-exists-p [bar])
(clsql:table-exists-p [i3test])
(clsql:index-exists-p [foo])
(clsql:index-exists-p [bar])
#'string-downcase
(clsql:list-indexes :on [i3test] :owner *test-database-user*))
#'string-lessp)
#'string-downcase
(clsql:list-indexes :on [i3test] :owner *test-database-user*))
#'string-lessp)
t)))
t t t ("bar" "foo") t)
t)))
t t t ("bar" "foo") t)
-;; create an sequence, test for existence, drop it and test again
+;; create an sequence, test for existence, drop it and test again
(deftest :fddl/sequence/1
(progn (clsql:create-sequence [foo])
(values
(deftest :fddl/sequence/1
(progn (clsql:create-sequence [foo])
(values
(clsql:drop-sequence [foo] :if-does-not-exist :ignore)))
6)
(clsql:drop-sequence [foo] :if-does-not-exist :ignore)))
6)
-(deftest :fddl/big/1
- (let ((rows (clsql:select [*] :from [big] :field-names nil)))
+(deftest :fddl/big/1
+ (let ((rows (clsql:select [*] :from [big] :order-by [i] :field-names nil)))
(values
(length rows)
(do ((i 0 (1+ i))
(values
(length rows)
(do ((i 0 (1+ i))
-(deftest :fddl/owner/1
- (and
- ;; user tables are an improper subset of all tables
- (= (length (intersection (clsql:list-tables :owner nil)
+(deftest :fddl/owner/1
+ (and
+ ;; user tables are an improper subset of all tables
+ (= (length (intersection (clsql:list-tables :owner nil)
(clsql:list-tables :owner :all)
:test #'string=))
(length (clsql:list-tables :owner nil)))
(clsql:list-tables :owner :all)
:test #'string=))
(length (clsql:list-tables :owner nil)))
- ;; user tables are a proper subset of all tables
- (> (length (clsql:list-tables :owner :all))
+ ;; user tables are a proper subset of all tables
+ (> (length (clsql:list-tables :owner :all))
(length (clsql:list-tables :owner nil))))
(length (clsql:list-tables :owner nil))))
-(deftest :fddl/cache-table-queries/1
- (list
+(deftest :fddl/cache-table-queries/1
+ (list
(gethash "EMPLOYEE" (clsql-sys::attribute-cache clsql:*default-database*))
(gethash "EMPLOYEE" (clsql-sys::attribute-cache clsql:*default-database*))
(clsql:cache-table-queries "EMPLOYEE" :action t)
(gethash "EMPLOYEE" (clsql-sys::attribute-cache clsql:*default-database*)))
(clsql:cache-table-queries "EMPLOYEE" :action t)
(gethash "EMPLOYEE" (clsql-sys::attribute-cache clsql:*default-database*)))
(clsql:list-attribute-types "EMPLOYEE")
(clsql:list-attribute-types "EMPLOYEE")
- (not
- (null
- (cadr
- (gethash "EMPLOYEE"
+ (not
+ (null
+ (cadr
+ (gethash "EMPLOYEE"
(clsql-sys::attribute-cache clsql:*default-database*))))))
(clsql-sys::attribute-cache clsql:*default-database*))))))
(clsql:cache-table-queries "EMPLOYEE" :action :flush)
(gethash "EMPLOYEE" (clsql-sys::attribute-cache clsql:*default-database*))))
(nil (t nil) t (t nil)))
(clsql:cache-table-queries "EMPLOYEE" :action :flush)
(gethash "EMPLOYEE" (clsql-sys::attribute-cache clsql:*default-database*))))
(nil (t nil) t (t nil)))