From 62547c6f6925d82c6fbc46801700b9256cf2c253 Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Fri, 21 May 2004 03:06:38 +0000 Subject: [PATCH] r9422: 20 May 2004 Kevin Rosenberg (kevin@rosenberg.net) * db-oracle/make9.sh: add makefile for building with Oracle 9 client libraries * sql/table.lisp: Add logic for dealing with Oracle 10g vs. previous Oracle versions with the PURGE option required for drop table. This needs to be converted to a generic function and moved to db-oracle/oracle-sql.lisp 2 --- ChangeLog | 7 +++++++ db-oracle/make.sh | 2 ++ db-oracle/make9.sh | 12 ++++++++++++ db-oracle/oracle-loader.lisp | 1 + db-oracle/oracle-sql.lisp | 2 +- sql/table.lisp | 16 +++++++++++----- 6 files changed, 34 insertions(+), 6 deletions(-) create mode 100755 db-oracle/make9.sh diff --git a/ChangeLog b/ChangeLog index b3254f6..132a108 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +20 May 2004 Kevin Rosenberg (kevin@rosenberg.net) + * db-oracle/make9.sh: add makefile for building with Oracle 9 client + libraries + * sql/table.lisp: Add logic for dealing with Oracle 10g vs. previous + Oracle versions with the PURGE option required for drop table. This needs + to be converted to a generic function and moved to db-oracle/oracle-sql.lisp + 20 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) * sql/classes.lisp: remove unused PARAMS slot in SQL-IDENT-ATTRIBUTE. * sql/syntax.lisp: remove unused PARAMS keyword arg to SQL-EXPRESSION. diff --git a/db-oracle/make.sh b/db-oracle/make.sh index ca5353e..504357a 100755 --- a/db-oracle/make.sh +++ b/db-oracle/make.sh @@ -1,3 +1,5 @@ +# Make shared library for Oracle 10 + if [ -z "$ORACLE_HOME" ]; then ORACLE_HOME=/10g/app/product/10.1.0/db_1 fi diff --git a/db-oracle/make9.sh b/db-oracle/make9.sh new file mode 100755 index 0000000..0174332 --- /dev/null +++ b/db-oracle/make9.sh @@ -0,0 +1,12 @@ +# Make shared library for Oracle 9 + +if [ -z "$ORACLE_HOME" ]; then + ORACLE_HOME=/9i +fi + +EMPTY_LIBS=-lclntst9 +LIBS="-lagent9 -lagtsh -lclntsh -lclntst9 -lclient9 -lvsn9 -lcommon9 -lskgxp9 -lmm -lnls9 -lcore9 -lgeneric9 -ltrace9 -ldl -lgcc -lm" +OBJECTS="rdbms/lib/defopt.o" +LIBNAME=oracle + +gcc -shared ${ORACLE_HOME}/rdbms/lib/homts.o -L ${ORACLE_HOME}/lib $LIBS -o ${LIBNAME}.so diff --git a/db-oracle/oracle-loader.lisp b/db-oracle/oracle-loader.lisp index 0a37721..0af49cc 100644 --- a/db-oracle/oracle-loader.lisp +++ b/db-oracle/oracle-loader.lisp @@ -20,6 +20,7 @@ (uffi:find-foreign-library "oracle" `(,(make-pathname :directory (pathname-directory *load-truename*)) + "/9i/lib/" "/usr/lib/clsql/" "/sw/lib/clsql/" "/home/kevin/debian/src/clsql/db-oracle/") diff --git a/db-oracle/oracle-sql.lisp b/db-oracle/oracle-sql.lisp index 40a3cb1..08551a8 100644 --- a/db-oracle/oracle-sql.lisp +++ b/db-oracle/oracle-sql.lisp @@ -793,7 +793,7 @@ the length of that format.") (cond ((search " 10g " str) 10) - ((search " 9g " str) + ((search "Oracle9i " str) 10))) diff --git a/sql/table.lisp b/sql/table.lisp index 72895cf..67b474d 100644 --- a/sql/table.lisp +++ b/sql/table.lisp @@ -55,7 +55,7 @@ supports transactions." (execute-command stmt :database database))) (defun drop-table (name &key (if-does-not-exist :error) - (database *default-database*)) + (database *default-database*)) "Drops the table called NAME from DATABASE which defaults to *DEFAULT-DATABASE*. If the table does not exist and IF-DOES-NOT-EXIST is :ignore then DROP-TABLE returns nil whereas @@ -67,10 +67,16 @@ an error is signalled if IF-DOES-NOT-EXIST is :error." (return-from drop-table nil))) (:error t)) - (let ((expr (concatenate 'string "DROP TABLE " table-name - (if (eq :oracle (database-type database)) - " PURGE" - "")))) + + ;; Fixme: move to clsql-oracle + (let ((expr (concatenate 'string "DROP TABLE " table-name))) + (when (and (find-package 'clsql-oracle) + (eq :oracle (database-type database)) + (eql 9 (slot-value database + (intern (symbol-name '#:major-version-number) + (symbol-name '#:clsql-oracle))))) + (setq expr (concatenate 'string expr " PURGE"))) + (execute-command expr :database database)))) (defun list-tables (&key (owner nil) (database *default-database*)) -- 2.34.1