[Patch] Oracle on Mac OS X with SBCL and OpenMCL
James Bielman <[email protected]>
| Newsgroups | gmane.lisp.clsql.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi,
The Oracle backend in CLSQL 2.11.14 doesn't work out of the box on
SBCL or OpenMCL under Mac OS X. The following patch fixes this for
me using SBCL 0.8.12 or OpenMCL 0.14.2-p1 and Oracle 10.1.0.3.0 (10g)
and appears to not break under SBCL/Linux/x86 (also Oracle 10g).
I'm not certain if I ran the unit tests correctly; I got 6 failures
for Oracle on SBCL/x86 before and after applying this patch. Oracle
under OpenMCL fails 12/213 tests (including the same 6 as SBCL). I've
attached the OpenMCL test output.
James
--- oracle-sql.lisp.orig 2004-07-13 11:36:31.000000000 -0700
+++ oracle-sql.lisp 2004-07-13 14:13:21.000000000 -0700
@@ -508,6 +508,12 @@
;; 21 bytes. See pp. 3-10, 3-26, and 6-13 of OCI documentation
;; for more details.
+;; Mac OS X Note: According to table 6-8 in the Oracle 9i OCI
+;; documentation, PRECISION may actually be an sb2 instead of a
+;; single byte if performing an "implicit describe". Using a
+;; signed short instead of an unsigned byte fixes a Mac OS X bug
+;; where PRECISION is always zero. -- JJB 20040713
+
;; When calling OCI C code to handle the conversion, we have
;; only two numeric types available to pass the return value:
;; double-float and signed-long. It would be possible to
@@ -554,7 +560,10 @@
;; below, beware!) try setting this value into COLSIZE, calling OCI,
;; then looking at the value in COLSIZE. (setf colsize #x12345678)
;; debugging only
-
+
+;; Mac OS X Note: This workaround fails on a bigendian platform so
+;; I've changed the data type of COLNAME to :unsigned-short as per
+;; the Oracle 9i OCI documentation. -- JJB 20040713
(uffi:def-type byte-pointer (* :byte))
(uffi:def-type ulong-pointer (* :unsigned-long))
@@ -567,11 +576,11 @@
(with-slots (errhp) database
(uffi:with-foreign-objects ((dtype-foreign :unsigned-short)
(parmdp :pointer-void)
- (precision :byte)
+ (precision :short)
(scale :byte)
(colname '(* :unsigned-char))
(colnamelen :unsigned-long)
- (colsize :unsigned-long)
+ (colsize :unsigned-short)
(colsizesize :unsigned-long)
(defnp ':pointer-void))
(let ((buffer nil)
@@ -614,7 +623,7 @@
+oci-attr-scale+
(deref-vp errhp))
(let ((*scale (uffi:deref-pointer scale :byte))
- (*precision (uffi:deref-pointer precision :byte)))
+ (*precision (uffi:deref-pointer precision :short)))
;;(format t "scale=~d, precision=~d~%" *scale *precision)
(cond
@@ -629,7 +638,7 @@
dtype #.SQLT-FLT)))))
;; Default to SQL-STR
(t
- (setf (uffi:deref-pointer colsize :unsigned-long) 0)
+ (setf (uffi:deref-pointer colsize :unsigned-short) 0)
(setf dtype #.SQLT-STR)
(oci-attr-get (deref-vp parmdp)
+oci-dtype-param+
@@ -637,7 +646,7 @@
+unsigned-int-null-pointer+
+oci-attr-data-size+
(deref-vp errhp))
- (let ((colsize-including-null (1+ (uffi:deref-pointer colsize :unsigned-long))))
+ (let ((colsize-including-null (1+ (uffi:deref-pointer colsize :unsigned-short))))
(setf buffer (acquire-foreign-resource
:unsigned-char (* +n-buf-rows+ colsize-including-null)))
(setf sizeof colsize-including-null))))
@@ -719,7 +728,21 @@
;; handle errors very gracefully (since they're part of the
;; error-handling mechanism themselves) so we just assert they
;; work.
+
+ ;; Using (SETF DEREF-VP) to initialize this pointer fails in OpenMCL
+ ;; due to incorrect evaluation of the :POINTER-VOID argument to
+ ;; UFFI:DEREF-POINTER:
+ ;;
+ ;; > Error in process listener(1): Unknown foreign type: :g10
+ ;; > While executing: ccl::%parse-foreign-type
+ ;;
+ ;; The following works around this for OpenMCL as I'm not
+ ;; certain where the actual problem is. -- JJB 20040713
+ #+openmcl
+ (setf (uffi:deref-pointer envhp :pointer-void) +null-void-pointer+)
+ #-openmcl
(setf (deref-vp envhp) +null-void-pointer+)
+
#-oci7
(oci-env-create envhp +oci-default+ +null-void-pointer+
+null-void-pointer+ +null-void-pointer+
_______________________________________________
CLSQL-Devel mailing list
[email protected]
http://lists.b9.com/mailman/listinfo/clsql-devel
openmcl-test-output.txt
(application/octet-stream, 16 KB)
******************************************************************************
*** CLSQL Test Suite begun at 2004-07-13 15:15:45
*** OpenMCL
*** Version (Beta: Darwin) 0.14.2-p1 on Power Macintosh
*** Database SQLITE backend.
******************************************************************************
Doing 210 pending tests of 210 tests total.
:INT/CONVERT/1 :INT/CONVERT/2 :INT/CONVERT/3 :INT/CONVERT/4 :INT/CONVERT/5
:CONNECTION/1 :CONNECTION/2 :CONNECTION/3 :BASIC/TYPE/1 :BASIC/TYPE/2
:BASIC/SELECT/1 :BASIC/SELECT/2 :BASIC/SELECT/3 :BASIC/MAP/1 :BASIC/MAP/2
:BASIC/MAP/3 :BASIC/MAP/4 :BASIC/DO/1 :BASIC/DO/2 :BASIC/BIGINT/1 :FDDL/TABLE/1
:FDDL/TABLE/2 :FDDL/TABLE/3 :FDDL/TABLE/4 :FDDL/TABLE/5 :FDDL/ATTRIBUTES/1
:FDDL/ATTRIBUTES/2 :FDDL/ATTRIBUTES/3 :FDDL/ATTRIBUTES/4 :FDDL/ATTRIBUTES/5
:FDDL/ATTRIBUTES/6 :FDDL/ATTRIBUTES/7 :FDDL/VIEW/1 :FDDL/VIEW/2 :FDDL/VIEW/3
:FDDL/INDEX/1 :FDDL/INDEX/2 :FDDL/INDEX/3 :FDDL/SEQUENCE/1 :FDDL/SEQUENCE/2
:FDDL/SEQUENCE/3 :FDDL/BIG/1 :FDML/INSERT/1 :FDML/INSERT/2 :FDML/INSERT/3
:FDML/INSERT/4 :FDML/UPDATE/1 :FDML/UPDATE/2 :FDML/QUERY/1 :FDML/QUERY/2
:FDML/QUERY/3 :FDML/QUERY/4 :FDML/QUERY/5 :FDML/QUERY/6 :FDML/QUERY/7
:FDML/QUERY/8 :FDML/EXECUTE-COMMAND/1 :FDML/SELECT/2 :FDML/SELECT/3
:FDML/SELECT/4 :FDML/SELECT/5 :FDML/SELECT/6 :FDML/SELECT/7 :FDML/SELECT/8
:FDML/SELECT/9 :FDML/SELECT/12 :FDML/SELECT/13 :FDML/SELECT/14 :FDML/SELECT/15
:FDML/SELECT/16 :FDML/SELECT/17 :FDML/SELECT/18 :FDML/SELECT/19 :FDML/SELECT/20
:FDML/SELECT/22 :FDML/SELECT/23 :FDML/SELECT/24 :FDML/SELECT/25 :FDML/SELECT/26
:FDML/SELECT/27 :FDML/SELECT/28 :FDML/SELECT/29 :FDML/SELECT/30 :FDML/SELECT/31
:FDML/SELECT/34 :FDML/DO-QUERY/1 :FDML/MAP-QUERY/1 :FDML/MAP-QUERY/2
:FDML/MAP-QUERY/3 :FDML/MAP-QUERY/4 :FDML/LOOP/1 :FDML/LOOP/2 :FDML/LOOP/3
:FDML/TRANSACTION/1 :FDML/TRANSACTION/2 :FDML/TRANSACTION/3 :FDML/TRANSACTION/4
:OODDL/METACLASS/1 :OODDL/METACLASS/2 :OODDL/JOIN/1 :OODDL/JOIN/2 :OODDL/JOIN/3
:OODDL/TIME/1 :OODDL/TIME/2 :OODDL/TIME/3 :OODML/SELECT/1 :OODML/SELECT/2
:OODML/SELECT/3 :OODML/SELECT/4 :OODML/SELECT/6 :OODML/SELECT/7 :OODML/SELECT/8
:OODML/SELECT/9 :OODML/SELECT/10 :OODML/SELECT/11 :OODM/RETRIEVAL/1
:OODM/RETRIEVAL/2 :OODM/RETRIEVAL/3 :OODM/RETRIEVAL/4 :OODM/RETRIEVAL/5
:OODM/RETRIEVAL/6 :OODM/RETRIEVAL/7 :OODM/RETRIEVAL/8 :OODM/RETRIEVAL/9
:OODML/UPDATE-RECORDS/1 :OODML/UPDATE-RECORDS/2 :OODML/UPDATE-RECORDS/3
:OODML/UPDATE-INSTANCE/1 :OODML/UPDATE-INSTANCE/2 :OODML/DO-QUERY/1
:OODML/DO-QUERY/2 :OODML/MAP-QUERY/1 :OODML/MAP-QUERY/2 :OODML/ITERATION/3
:OODML/CACHE/1 :OODML/CACHE/2 :OODML/REFRESH/1 :OODML/REFRESH/2
:OODML/REFRESH/3 :OODML/REFRESH/4 :OODML/UOJ/1 :OODML/BIG/1 :SYNTAX/GENERIC/1
:SYNTAX/GENERIC/2 :SYNTAX/GENERIC/3 :SYNTAX/GENERIC/4 :SYNTAX/GENERIC/5
:SYNTAX/IDENT/1 :SYNTAX/IDENT/2 :SYNTAX/IDENT/3 :SYNTAX/IDENT/4 :SYNTAX/IDENT/5
:SYNTAX/IDENT/6 :SYNTAX/IDENT/7 :SYNTAX/SUBQUERY/1 :SYNTAX/SUBQUERY/2
:SYNTAX/SUBQUERY/3 :SYNTAX/SUBQUERY/4 :SYNTAX/SUBQUERY/5 :SYNTAX/AGGREGATE/1
:SYNTAX/AGGREGATE/2 :SYNTAX/AGGREGATE/3 :SYNTAX/AGGREGATE/4 :SYNTAX/AGGREGATE/5
:SYNTAX/LOGICAL/1 :SYNTAX/LOGICAL/2 :SYNTAX/LOGICAL/3 :SYNTAX/NULL/1
:SYNTAX/NULL/2 :SYNTAX/NULL/3 :SYNTAX/NULL/4 :SYNTAX/RELATIONAL/1
:SYNTAX/RELATIONAL/2 :SYNTAX/RELATIONAL/3 :SYNTAX/RELATIONAL/4
:SYNTAX/RELATIONAL/5 :SYNTAX/RELATIONAL/6 :SYNTAX/BETWEEN/1 :SYNTAX/BETWEEN/2
:SYNTAX/ARITHMETIC/1 :SYNTAX/ARITHMETIC/2 :SYNTAX/ARITHMETIC/3
:SYNTAX/ARITHMETIC/4 :SYNTAX/ARITHMETIC/5 :SYNTAX/ARITHMETIC/6 :SYNTAX/SUBSTR/1
:SYNTAX/SUBSTRING/1 :SYNTAX/CONCAT/1 :SYNTAX/CONCAT/2 :SYNTAX/PATTERN/1
:SYNTAX/PATTERN/2 :SYNTAX/DISTINCT/1 :SYNTAX/DISTINCT/2 :SYNTAX/ORDER-BY/1
:SYNTAX/GROUP-BY/1 :SYNTAX/COALESCE/1 :SYNTAX/COALESCE/2 :SYNTAX/NVL/1
:SYNTAX/SETS/1 :SYNTAX/SETS/2 :SYNTAX/SETS/3 :SYNTAX/SETS/4 :SYNTAX/FUNCTION/1
:SYNTAX/FUNCTION/2 :SYNTAX/QUERY/1 :SYNTAX/QUERY/2 :SYNTAX/QUERY/3
:SYNTAX/QUERY/4 :SYNTAX/EXPRESSION1 :SYNTAX/EXPRESSION/2
No tests failed.
Tests skipped:
fddl/view/4 not supported by sqlite
fdml/select/1 fancy math not supported
fdml/select/10 not supported by sqlite
fdml/select/11 boolean where not supported
fdml/select/21 not supported by sqlite
fdml/select/32 not supported by sqlite
fdml/select/33 not supported by sqlite
oodml/select/5 boolean where not supported
******************************************************************************
*** CLSQL Test Suite begun at 2004-07-13 15:15:52
*** OpenMCL
*** Version (Beta: Darwin) 0.14.2-p1 on Power Macintosh
*** Database ORACLE backend.
******************************************************************************
Doing 213 pending tests of 213 tests total.
:INT/CONVERT/1 :INT/CONVERT/2 :INT/CONVERT/3 :INT/CONVERT/4 :INT/CONVERT/5
:CONNECTION/1 :CONNECTION/2 :CONNECTION/3 :BASIC/TYPE/1 :BASIC/TYPE/2
:BASIC/SELECT/1 :BASIC/SELECT/2 :BASIC/SELECT/3 :BASIC/MAP/1 :BASIC/MAP/2
:BASIC/MAP/3 :BASIC/MAP/4 :BASIC/DO/1 :BASIC/DO/2 :FDDL/TABLE/1
Test :FDDL/TABLE/2 failed
Form: (progn (clsql-sys:create-table #<sql-ident-attribute FOO> '((#<sql-ident-attribute ID> integer) (#<sql-ident-attribute HEIGHT> float) (#<sql-ident-attribute NAME> (string 24)) (#<sql-ident-attribute COMMENTS> clsql-tests::longchar))) (values (clsql-sys:table-exists-p #<sql-ident-attribute FOO> :owner clsql-tests::*test-database-user*) (progn (clsql-sys:drop-table #<sql-ident-attribute FOO> :if-does-not-exist :ignore) (clsql-sys:table-exists-p #<sql-ident-attribute FOO> :owner clsql-tests::*test-database-user*))))
Expected values: t
nil
Actual value: #<unbound-variable #x6517C8E>.
Test :FDDL/TABLE/3 failed
Form: (apply #'values (progn (clsql-sys:create-table #<sql-ident-attribute FOO> '((#<sql-ident-attribute ID> integer) (#<sql-ident-attribute HEIGHT> float) (#<sql-ident-attribute NAME> (char 255)) (#<sql-ident-attribute COMMENTS> clsql-tests::longchar))) (prog1 (sort (mapcar #'string-downcase (clsql-sys:list-attributes #<sql-ident-attribute FOO>)) #'string<) (clsql-sys:drop-table #<sql-ident-attribute FOO> :if-does-not-exist :ignore))))
Expected values: "comments"
"height"
"id"
"name"
Actual value: #<unbound-variable #x65164FE>.
:FDDL/TABLE/4 :FDDL/TABLE/5 :FDDL/ATTRIBUTES/1 :FDDL/ATTRIBUTES/2
:FDDL/ATTRIBUTES/3
Test :FDDL/ATTRIBUTES/4 failed
Form: (multiple-value-bind (type length clsql-tests::scale clsql-tests::nullable) (clsql-sys:attribute-type #<sql-ident-attribute FIRST_NAME> #<sql-ident-attribute EMPLOYEE>) (values (clsql-sys:in type :varchar :varchar2) length clsql-tests::scale clsql-tests::nullable))
Expected values: t
30
nil
1
Actual values: t
30.0D0
nil
1.
:FDDL/ATTRIBUTES/5 :FDDL/ATTRIBUTES/6 :FDDL/ATTRIBUTES/7 :FDDL/VIEW/1
:FDDL/VIEW/2 :FDDL/VIEW/3 :FDDL/VIEW/4 :FDDL/INDEX/1 :FDDL/INDEX/2
:FDDL/INDEX/3 :FDDL/SEQUENCE/1 :FDDL/SEQUENCE/2
Test :FDDL/SEQUENCE/3 failed
Form: (progn (clsql-sys:create-sequence #<sql-ident-attribute FOO>) (clsql-sys:set-sequence-position #<sql-ident-attribute FOO> 5) (prog1 (clsql-sys:sequence-next #<sql-ident-attribute FOO>) (clsql-sys:drop-sequence #<sql-ident-attribute FOO> :if-does-not-exist :ignore)))
Expected value: 6
Actual value: #<clsql-sys:sql-database-error #x655C18E>.
:FDDL/BIG/1 :FDML/INSERT/1 :FDML/INSERT/2 :FDML/INSERT/3
Test :FDML/INSERT/4 failed
Form: (progn (clsql-sys:create-table #<sql-ident-attribute EMPLOYEE2> '((#<sql-ident-attribute FORENAME> string) (#<sql-ident-attribute SURNAME> string) (#<sql-ident-attribute EMAIL> string))) (clsql-sys:insert-records :into #<sql-ident-attribute EMPLOYEE2> :query (clsql-sys:sql-query #<sql-ident-attribute FIRST_NAME> #<sql-ident-attribute LAST_NAME> #<sql-ident-attribute EMAIL> :from #<sql-ident-attribute EMPLOYEE>) :attributes '(clsql-tests::forename clsql-tests::surname clsql-tests::email)) (prog1 (equal (clsql-sys:select #<sql-ident-attribute *> :from #<sql-ident-attribute EMPLOYEE2>) (clsql-sys:select #<sql-ident-attribute FIRST_NAME> #<sql-ident-attribute LAST_NAME> #<sql-ident-attribute EMAIL> :from #<sql-ident-attribute EMPLOYEE>)) (clsql-sys:drop-table #<sql-ident-attribute EMPLOYEE2> :if-does-not-exist :ignore)))
Expected value: t
Actual value: #<unbound-variable #x6596786>.
:FDML/UPDATE/1 :FDML/UPDATE/2 :FDML/QUERY/1 :FDML/QUERY/2 :FDML/QUERY/3
:FDML/QUERY/4 :FDML/QUERY/5 :FDML/QUERY/6 :FDML/QUERY/7
Test :FDML/EXECUTE-COMMAND/1 failed
Form: (values (clsql-sys:table-exists-p #<sql-ident-attribute FOO> :owner clsql-tests::*test-database-user*) (progn (clsql-sys:execute-command "create table foo (bar integer)") (clsql-sys:table-exists-p #<sql-ident-attribute FOO> :owner clsql-tests::*test-database-user*)) (progn (clsql-sys:execute-command "drop table foo") (clsql-sys:table-exists-p #<sql-ident-attribute FOO> :owner clsql-tests::*test-database-user*)))
Expected values: nil
t
nil
Actual value: #<clsql-sys:sql-database-error #x65B30FE>.
:FDML/SELECT/1 :FDML/SELECT/2 :FDML/SELECT/3 :FDML/SELECT/4 :FDML/SELECT/5
:FDML/SELECT/6 :FDML/SELECT/7 :FDML/SELECT/8 :FDML/SELECT/9 :FDML/SELECT/10
:FDML/SELECT/12 :FDML/SELECT/13 :FDML/SELECT/14 :FDML/SELECT/15 :FDML/SELECT/16
:FDML/SELECT/17 :FDML/SELECT/18 :FDML/SELECT/19 :FDML/SELECT/20 :FDML/SELECT/22
:FDML/SELECT/23 :FDML/SELECT/24 :FDML/SELECT/25 :FDML/SELECT/26 :FDML/SELECT/27
:FDML/SELECT/28 :FDML/SELECT/29 :FDML/SELECT/30 :FDML/SELECT/31 :FDML/SELECT/32
:FDML/SELECT/33 :FDML/SELECT/34 :FDML/DO-QUERY/1 :FDML/MAP-QUERY/1
:FDML/MAP-QUERY/2 :FDML/MAP-QUERY/3 :FDML/MAP-QUERY/4 :FDML/LOOP/1 :FDML/LOOP/2
:FDML/LOOP/3 :FDML/TRANSACTION/1 :FDML/TRANSACTION/2 :FDML/TRANSACTION/3
:FDML/TRANSACTION/4 :OODDL/METACLASS/1 :OODDL/METACLASS/2 :OODDL/JOIN/1
:OODDL/JOIN/2 :OODDL/JOIN/3 :OODDL/TIME/1 :OODDL/TIME/2 :OODDL/TIME/3
:OODML/SELECT/1 :OODML/SELECT/2 :OODML/SELECT/3 :OODML/SELECT/4 :OODML/SELECT/6
:OODML/SELECT/7 :OODML/SELECT/8 :OODML/SELECT/9 :OODML/SELECT/10
:OODML/SELECT/11 :OODM/RETRIEVAL/1 :OODM/RETRIEVAL/2 :OODM/RETRIEVAL/3
:OODM/RETRIEVAL/4 :OODM/RETRIEVAL/5 :OODM/RETRIEVAL/6 :OODM/RETRIEVAL/7
:OODM/RETRIEVAL/8 :OODM/RETRIEVAL/9 :OODML/UPDATE-RECORDS/1
:OODML/UPDATE-RECORDS/2 :OODML/UPDATE-RECORDS/3
Test :OODML/UPDATE-INSTANCE/1 failed
Form: (values (concatenate 'string (slot-value clsql-tests::employee1 'clsql-tests::first-name) " " (slot-value clsql-tests::employee1 'clsql-tests::last-name) ": " (slot-value clsql-tests::employee1 'clsql-tests::email)) (progn (clsql-sys:update-records #<sql-ident-attribute EMPLOYEE> :av-pairs '((#<sql-ident-attribute FIRST_NAME> "Ivan") (#<sql-ident-attribute LAST_NAME> "Petrov") (#<sql-ident-attribute EMAIL> "[email protected]")) :where (clsql-sys:sql-= #<sql-ident-attribute EMPLID> 1)) (clsql-sys:update-instance-from-records clsql-tests::employee1) (concatenate 'string (slot-value clsql-tests::employee1 'clsql-tests::first-name) " " (slot-value clsql-tests::employee1 'clsql-tests::last-name) ": " (slot-value clsql-tests::employee1 'clsql-tests::email))) (progn (clsql-sys:update-records #<sql-ident-attribute EMPLOYEE> :av-pairs '((#<sql-ident-attribute FIRST_NAME> "Vladamir") (#<sql-
ident-attribute LAST_NAME> "Lenin") (#<sql-ident-attribute EMAIL> "[email protected]")) :wh
ere (clsql-sys:sql-= #<sql-ident-attribute EMPLID> 1)) (clsql-sys:update-instance-from-records clsql-tests::employee1) (concatenate 'string (slot-value clsql-tests::employee1 'clsql-tests::first-name) " " (slot-value clsql-tests::employee1 'clsql-tests::last-name) ": " (slot-value clsql-tests::employee1 'clsql-tests::email))))
Expected values: "Vladamir Lenin: [email protected]"
"Ivan Petrov: [email protected]"
"Vladamir Lenin: [email protected]"
Actual value: #<ccl::bad-slot-type #x65E579E>.
:OODML/UPDATE-INSTANCE/2
Test :OODML/DO-QUERY/1 failed
Form: (let ((clsql-tests::result 'nil)) (clsql-sys:do-query ((clsql-tests::e) (clsql-sys:sql-query 'clsql-tests::employee :order-by #<sql-ident-attribute EMPLOYEE.EMPLID>)) (push (slot-value clsql-tests::e 'clsql-tests::last-name) clsql-tests::result)) clsql-tests::result)
Expected value: ("Putin" "Yeltsin" "Gorbachev" "Chernenko" "Andropov" "Brezhnev" "Kruschev" "Trotsky" "Stalin" "Lenin")
Actual value: ("Putin" "Yeltsin" "Gorbachev" "Chernenko" "Andropov" "Brezhnev" "Kruschev" "Trotsky" "Stalin" "Petrov").
Test :OODML/DO-QUERY/2 failed
Form: (let ((clsql-tests::result 'nil)) (clsql-sys:do-query ((clsql-tests::e clsql-tests::c) (clsql-sys:sql-query 'clsql-tests::employee 'clsql-tests::company :where (clsql-sys:sql-= (clsql-sys:sql-slot-value 'clsql-tests::employee 'clsql-tests::last-name) "Lenin"))) (push (list (slot-value clsql-tests::e 'clsql-tests::last-name) (slot-value clsql-tests::c 'clsql-tests::name)) clsql-tests::result)) clsql-tests::result)
Expected value: (("Lenin" "Widgets Inc."))
Actual value: nil.
Test :OODML/MAP-QUERY/1 failed
Form: (clsql-sys:map-query 'list #'clsql-tests::last-name (clsql-sys:sql-query 'clsql-tests::employee :order-by #<sql-ident-attribute EMPLOYEE.EMPLID>))
Expected value: ("Lenin" "Stalin" "Trotsky" "Kruschev" "Brezhnev" "Andropov" "Chernenko" "Gorbachev" "Yeltsin" "Putin")
Actual value: ("Petrov" "Stalin" "Trotsky" "Kruschev" "Brezhnev" "Andropov" "Chernenko" "Gorbachev" "Yeltsin" "Putin").
Test :OODML/MAP-QUERY/2 failed
Form: (clsql-sys:map-query 'list #'(lambda (clsql-tests::e clsql-tests::c) (list (slot-value clsql-tests::e 'clsql-tests::last-name) (slot-value clsql-tests::c 'clsql-tests::name))) (clsql-sys:sql-query 'clsql-tests::employee 'clsql-tests::company :where (clsql-sys:sql-= (clsql-sys:sql-slot-value 'clsql-tests::employee 'clsql-tests::last-name) "Lenin")))
Expected value: (("Lenin" "Widgets Inc."))
Actual value: nil.
Test :OODML/ITERATION/3 failed
Form: (loop clsql-tests::for (clsql-tests::e) clsql-tests::being the clsql-tests::records clsql-tests::in (clsql-sys:sql-query 'clsql-tests::employee :where (clsql-sys:sql-< #<sql-ident-attribute EMPLID> 4) :order-by #<sql-ident-attribute EMPLOYEE.EMPLID>) clsql-tests::collect (slot-value clsql-tests::e 'clsql-tests::last-name))
Expected value: ("Lenin" "Stalin" "Trotsky")
Actual value: ("Petrov" "Stalin" "Trotsky").
:OODML/CACHE/1 :OODML/CACHE/2 :OODML/REFRESH/1 :OODML/REFRESH/2
:OODML/REFRESH/3 :OODML/REFRESH/4 :OODML/UOJ/1 :OODML/BIG/1 :SYNTAX/GENERIC/1
:SYNTAX/GENERIC/2 :SYNTAX/GENERIC/3 :SYNTAX/GENERIC/4 :SYNTAX/GENERIC/5
:SYNTAX/IDENT/1 :SYNTAX/IDENT/2 :SYNTAX/IDENT/3 :SYNTAX/IDENT/4 :SYNTAX/IDENT/5
:SYNTAX/IDENT/6 :SYNTAX/IDENT/7 :SYNTAX/SUBQUERY/1 :SYNTAX/SUBQUERY/2
:SYNTAX/SUBQUERY/3 :SYNTAX/SUBQUERY/4 :SYNTAX/SUBQUERY/5 :SYNTAX/AGGREGATE/1
:SYNTAX/AGGREGATE/2 :SYNTAX/AGGREGATE/3 :SYNTAX/AGGREGATE/4 :SYNTAX/AGGREGATE/5
:SYNTAX/LOGICAL/1 :SYNTAX/LOGICAL/2 :SYNTAX/LOGICAL/3 :SYNTAX/NULL/1
:SYNTAX/NULL/2 :SYNTAX/NULL/3 :SYNTAX/NULL/4 :SYNTAX/RELATIONAL/1
:SYNTAX/RELATIONAL/2 :SYNTAX/RELATIONAL/3 :SYNTAX/RELATIONAL/4
:SYNTAX/RELATIONAL/5 :SYNTAX/RELATIONAL/6 :SYNTAX/BETWEEN/1 :SYNTAX/BETWEEN/2
:SYNTAX/ARITHMETIC/1 :SYNTAX/ARITHMETIC/2 :SYNTAX/ARITHMETIC/3
:SYNTAX/ARITHMETIC/4 :SYNTAX/ARITHMETIC/5 :SYNTAX/ARITHMETIC/6 :SYNTAX/SUBSTR/1
:SYNTAX/SUBSTRING/1 :SYNTAX/CONCAT/1 :SYNTAX/CONCAT/2 :SYNTAX/PATTERN/1
:SYNTAX/PATTERN/2 :SYNTAX/DISTINCT/1 :SYNTAX/DISTINCT/2 :SYNTAX/ORDER-BY/1
:SYNTAX/GROUP-BY/1 :SYNTAX/COALESCE/1 :SYNTAX/COALESCE/2 :SYNTAX/NVL/1
:SYNTAX/SETS/1 :SYNTAX/SETS/2 :SYNTAX/SETS/3 :SYNTAX/SETS/4 :SYNTAX/FUNCTION/1
:SYNTAX/FUNCTION/2 :SYNTAX/QUERY/1 :SYNTAX/QUERY/2 :SYNTAX/QUERY/3
:SYNTAX/QUERY/4 :SYNTAX/EXPRESSION1 :SYNTAX/EXPRESSION/2
12 out of 213 total tests failed: :FDDL/TABLE/2, :FDDL/TABLE/3, :FDDL/ATTRIBUTES/4,
:FDDL/SEQUENCE/3, :FDML/INSERT/4, :FDML/EXECUTE-COMMAND/1,
:OODML/UPDATE-INSTANCE/1, :OODML/DO-QUERY/1, :OODML/DO-QUERY/2,
:OODML/MAP-QUERY/1, :OODML/MAP-QUERY/2, :OODML/ITERATION/3.
Tests skipped:
basic/bigint/1 bigint not supported
fdml/query/8 syntax not supported
fdml/select/11 boolean where not supported
fdml/select/21 syntax not supported
oodml/select/5 boolean where not supported