Re: [Patch] Oracle on Mac OS X with SBCL and OpenMCL

Kevin Rosenberg <kevin-HJRc7zDS/[email protected]>
Newsgroups gmane.lisp.clsql.devel
Message-ID <[email protected]>
I've committed your patch as is. I haven't had the time to work on
fixing the issue with UFFI and OpenMCL. I've uploaded version 2.11.15
with the changes.

In this release, the Oracle passes 216 out of 218 tests on
Allegro/Linux/x86.

Kevin









> 
> 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
> 

Content-Description: OpenMCL unit test output
> ******************************************************************************
> ***     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

> 
> +++ 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

-- 
Kevin Rosenberg
kevin-HJRc7zDS/[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.