;; inserts a record using all values only and then deletes it
(deftest :fdml/insert/1
- (progn
+ (let ((now (get-universal-time)))
(clsql:insert-records :into [employee]
- :values `(11 1 "Yuri" "Gagarin" "gagarin@soviet.org"
- 1 1 1.85 t ,(clsql:get-time)))
+ :values `(11 1 "Yuri" "Gagarin" "gagarin@soviet.org"
+ 1 1 1.85 t ,(clsql:utime->time now) ,now))
(values
(clsql:select [first-name] [last-name] [email]
:from [employee] :where [= [emplid] 11])
("1" "2" "3" "4"))
(deftest :fdml/select/21
- (clsql:select [substr [first-name] 1 4] :from [employee]
+ (clsql:select [substring [first-name] 1 4] :from [employee]
:flatp t :order-by [emplid] :field-names nil)
("Vlad" "Jose" "Leon" "Niki" "Leon" "Yuri" "Kons" "Mikh" "Bori" "Vlad"))
:flatp t :result-types nil :field-names nil)))
("Lenin" "Stalin" "Trotsky" "Kruschev"))
+;; test escaping of single quotes
+(deftest :fdml/select/35
+ (clsql:select "What's up doc?" :from [employee] :flatp t :field-names nil)
+ ("What's up doc?" "What's up doc?" "What's up doc?" "What's up doc?"
+ "What's up doc?" "What's up doc?" "What's up doc?" "What's up doc?"
+ "What's up doc?" "What's up doc?"))
+
+;; test proper treatment of backslash (depending on backend)
+(deftest :fdml/select/36
+ (clsql:select "foo\\bar\\baz" :from [employee] :flatp t :field-names nil)
+ ("foo\\bar\\baz" "foo\\bar\\baz" "foo\\bar\\baz" "foo\\bar\\baz"
+ "foo\\bar\\baz" "foo\\bar\\baz" "foo\\bar\\baz" "foo\\bar\\baz"
+ "foo\\bar\\baz" "foo\\bar\\baz"))
+
(deftest :fdml/do-query/1
(let ((result '()))
(clsql:do-query ((name) [select [last-name] :from [employee]
:flatp t)
results)
(apply #'values (nreverse results)))
- nil :committed nil ("lenin-nospam@soviet.org") :committed
- nil ("lenin@soviet.org"))
+ nil nil nil ("lenin-nospam@soviet.org") nil nil ("lenin@soviet.org"))
;; runs a valid update and an invalid one within a transaction and checks
;; that the valid update is rolled back when the invalid one fails.