15 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk)
* sql/classes.lisp: SELECT now accepts table identifiers as strings
- for CommonSQL compliance.
- * tests/test-fdml.lisp: added test for table identifiers as strings
- in SELECT.
+ for CommonSQL compliance. Add support for qualified sql identifiers
+ with aliased table names.
+ * tests/test-fdml.lisp: added tests for table identifiers as strings
+ in SELECT and for aliased definitions.
+ * tests/test-syntax.lisp: added tests for alias definitions.
15 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk)
* sql/sql.lisp: PRINT-QUERY now calls QUERY with result-types and
(convert-to-db-default-case (symbol-name type) database)))
(format *sql-stream* "~@[~A.~]~A"
(when qualifier
- (convert-to-db-default-case (sql-escape qualifier) database))
+ (typecase qualifier
+ (string (format nil "~s" qualifier))
+ (t (convert-to-db-default-case (sql-escape qualifier)
+ database))))
(sql-escape (convert-to-db-default-case name database))))
t))
(write-string " FROM " *sql-stream*)
(typecase from
(list (output-sql (apply #'vector from) database))
- (string (write-string from *sql-stream*))
+ (string (write-string
+ (sql-escape
+ (convert-to-db-default-case from database)) *sql-stream*))
(t (output-sql from database))))
(when inner-join
(write-string " INNER JOIN " *sql-stream*)
("Boris" "Josef" "Konstantin" "Leon" "Leonid" "Mikhail" "Nikita" "Vladamir"
"Yuri"))
+(deftest :fdml/select/26
+ (clsql:select ["table" first-name] ["table" last-name]
+ :from '([employee "table"] [employee "join"])
+ :where [and [= ["table" first-name]
+ ["join" first-name]]
+ [not [= ["table" emplid]
+ ["join" emplid]]]]
+ :order-by '(["table" last-name])
+ :result-types nil :field-names nil)
+ (("Vladamir" "Lenin") ("Vladamir" "Putin")))
+
;(deftest :fdml/select/11
; (clsql:select [emplid] :from [employee]
; :where [= [emplid] [any [select [companyid] :from [company]]]]
"FOO.BAR")
(deftest :syntax/ident/3
- (clsql:sql ["foo" bar])
- "FOO.BAR")
-
-;(deftest :syntax/ident/4
-; (clsql:sql [foo "bar"])
-; "FOO \"bar\"")
-
-(deftest :syntax/ident/5
(clsql:sql [foo :integer])
"FOO")
-(deftest :syntax/ident/6
+(deftest :syntax/ident/4
(clsql:sql [foo bar :integer])
"FOO.BAR")
+(deftest :syntax/ident/5
+ (clsql:sql [foo "bar"])
+ "FOO \"bar\"")
+
+(deftest :syntax/ident/6
+ (clsql:sql ["foo" bar])
+ "\"foo\".BAR")
+
(deftest :syntax/ident/7
(clsql:sql ["foo" bar :integer])
- "FOO.BAR")
+ "\"foo\".BAR")
+
(deftest :syntax/subquery/1