r9424: * db-oracle/oracle-sql: Use clsql-specific error conditions. Use owner...
authorKevin M. Rosenberg <kevin@rosenberg.net>
Fri, 21 May 2004 14:33:46 +0000 (14:33 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Fri, 21 May 2004 14:33:46 +0000 (14:33 +0000)
ChangeLog
db-oracle/oracle-api.lisp
db-oracle/oracle-sql.lisp
debian/control

index 132a1087a86912c3a5a11e12e0498e4a1d123c6e..9f6d7937d2661c7bddd0e43ee7d22c33b043879e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,5 @@
 20 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
 20 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * db-oracle/oracle-sql: Use clsql-specific error conditions. Use owner keyword.
        * 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
        * 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
index 1ac8ea81245161e45de37f54dd66eeac7f12ad5c..e63351fcde4f5e878d0596fec7ddbd6895fec770 100644 (file)
             (#.+oci-error+
              (handle-oci-error :database database :nulls-ok nulls-ok))
             (#.+oci-no-data+
             (#.+oci-error+
              (handle-oci-error :database database :nulls-ok nulls-ok))
             (#.+oci-no-data+
-             (error "OCI No Data Found"))
+             (error 'sql-database-error :message "OCI No Data Found"))
             (#.+oci-success-with-info+
             (#.+oci-success-with-info+
-             (error "internal error: unexpected +oci-SUCCESS-WITH-INFO"))
+             (error 'sql-database-error :message "internal error: unexpected +oci-success-with-info"))
             (#.+oci-no-data+
             (#.+oci-no-data+
-             (error "OCI No Data"))
+             (error 'sql-database-error :message "OCI No Data"))
             (#.+oci-invalid-handle+
             (#.+oci-invalid-handle+
-             (error "OCI Invalid Handle"))
+             (error 'sql-database-error :message "OCI Invalid Handle"))
             (#.+oci-need-data+
             (#.+oci-need-data+
-             (error "OCI Need Data"))
+             (error 'sql-database-error :message "OCI Need Data"))
             (#.+oci-still-executing+
             (#.+oci-still-executing+
-             (error "OCI Still Executing"))
+             (error 'sql-temporary-error :message "OCI Still Executing"))
             (#.+oci-continue+
             (#.+oci-continue+
-             (error "OCI Continue"))
+             (error 'sql-database-error :message "OCI Continue"))
             (1804
             (1804
-             (error "Check ORACLE_HOME and NLS settings."))
+             (error 'sql-database-error :message "Check ORACLE_HOME and NLS settings."))
             (t
             (t
-             (error "OCI unknown error, code=~A" result))))))))
+             (error 'sql-database-error
+                    :message
+                    (format nil "OCI unknown error, code=~A" result)))))))))
   
 
 (defmacro def-raw-oci-routine
   
 
 (defmacro def-raw-oci-routine
 
 (defun oci-check-return (value)
   (when (= value +oci-invalid-handle+)
 
 (defun oci-check-return (value)
   (when (= value +oci-invalid-handle+)
-    (error "Invalid Handle")))
+    (error 'sql-database-error :message "Invalid Handle")))
 
 (defun oci-get-handle (&key type)
   (if (null *oci-initialized*)
 
 (defun oci-get-handle (&key type)
   (if (null *oci-initialized*)
     (:security
      "OCISecurity")
     (t
     (:security
      "OCISecurity")
     (t
-     (error "'~s' is not a valid OCI handle type" type))))
+     (error 'sql-database-error
+           :message
+           (format nil "'~s' is not a valid OCI handle type" type)))))
 
 (defun oci-environment ()
   (let ((envhp (oci-get-handle :type :env)))
 
 (defun oci-environment ()
   (let ((envhp (oci-get-handle :type :env)))
index 08551a8004aebe4f3bd6789346529c096ef62d8f..a041f87fa89329955538d67a23a5a2546011d353 100644 (file)
@@ -159,9 +159,8 @@ the length of that format.")
 (defun osucc (code)
   (declare (type fixnum code))
   (unless (= code +oci-success+)
 (defun osucc (code)
   (declare (type fixnum code))
   (unless (= code +oci-success+)
-    (error 'dbi-error
-          :format-control "unexpected OCI failure, code=~S"
-          :format-arguments (list code))))
+    (error 'sql-database-error
+          :message (format nil "unexpected OCI failure, code=~S" code))))
 
 
 ;;; Enabling this can be handy for low-level debugging.
 
 
 ;;; Enabling this can be handy for low-level debugging.
@@ -236,10 +235,17 @@ the length of that format.")
           (second  (1- (ub 6))))
       (encode-universal-time second minute hour day month year))))
 
           (second  (1- (ub 6))))
       (encode-universal-time second minute hour day month year))))
 
+(defun owner-phrase (owner)
+  (if owner
+      (format nil " WHERE OWNER='~A'" owner)
+    ""))
+
 (defmethod database-list-tables ((database oracle-database) &key owner)
   (mapcar #'car 
 (defmethod database-list-tables ((database oracle-database) &key owner)
   (mapcar #'car 
-         (database-query "select table_name from user_tables"
-                         database nil nil))
+         (database-query 
+          (concatenate 'string "select table_name from user_tables"
+                       (owner-phrase owner))
+          database nil nil))
   #+nil
   (values (database-query "select TABLE_NAME from all_catalog
                where owner not in ('PUBLIC','SYSTEM','SYS','WMSYS','EXFSYS','CTXSYS','WKSYS','WK_TEST','MDSYS','DMSYS','OLAPSYS','ORDSYS','XDB')"
   #+nil
   (values (database-query "select TABLE_NAME from all_catalog
                where owner not in ('PUBLIC','SYSTEM','SYS','WMSYS','EXFSYS','CTXSYS','WKSYS','WK_TEST','MDSYS','DMSYS','OLAPSYS','ORDSYS','XDB')"
@@ -248,15 +254,20 @@ the length of that format.")
 
 (defmethod database-list-views ((database oracle-database)
                                  &key owner)
 
 (defmethod database-list-views ((database oracle-database)
                                  &key owner)
-  ;; (database-query "select table_name from all_catalog" database nil nil)
   (mapcar #'car
   (mapcar #'car
-         (database-query "select view_name from user_views" database nil nil)))
+         (database-query
+          (concatenate 'string "select view_name from user_views"
+                       (owner-phrase owner))
+          database nil nil)))
 
 
 (defmethod database-list-indexes ((database oracle-database)
                                   &key (owner nil))
   (mapcar #'car
 
 
 (defmethod database-list-indexes ((database oracle-database)
                                   &key (owner nil))
   (mapcar #'car
-         (database-query "select index_name from user_indexes" database nil nil)))
+         (database-query 
+          (concatenate 'string "select index_name from user_indexes"
+                       (owner-phrase owner))
+          database nil nil)))
 
 (defmethod list-all-table-columns (table (db oracle-database))
   (declare (string table))
 
 (defmethod list-all-table-columns (table (db oracle-database))
   (declare (string table))
@@ -288,8 +299,11 @@ the length of that format.")
   (mapcar #'car
          (database-query
           (format nil
   (mapcar #'car
          (database-query
           (format nil
-                  "select column_name from user_tab_columns where table_name='~A'"
-                  table)
+                  "select column_name from user_tab_columns where table_name='~A'~A"
+                  table
+                  (if owner
+                      (format nil " AND OWNER='~A'" owner)
+                    ""))
           database nil nil)))
 
 (defmethod database-attribute-type (attribute (table string)
           database nil nil)))
 
 (defmethod database-attribute-type (attribute (table string)
@@ -298,8 +312,11 @@ the length of that format.")
   (let ((rows
         (database-query
          (format nil
   (let ((rows
         (database-query
          (format nil
-                 "select data_type,data_length,data_precision,data_scale,nullable from user_tab_columns where table_name='~A' and column_name='~A'"
-                 table attribute)
+                 "select data_type,data_length,data_precision,data_scale,nullable from user_tab_columns where table_name='~A' and column_name='~A'~A"
+                 table attribute
+                 (if owner
+                     (format nil " AND OWNER='~A'" owner)
+                   ""))                  
          database :auto nil)))
     (destructuring-bind (type length precision scale nullable) (car rows)
       (values (ensure-keyword type) length precision scale 
          database :auto nil)))
     (destructuring-bind (type length precision scale nullable) (car rows)
       (values (ensure-keyword type) length precision scale 
@@ -331,7 +348,7 @@ the length of that format.")
 (defstruct (oracle-result-set (:print-function print-query-cursor)
                               (:conc-name qc-)
                               (:constructor %make-query-cursor))
 (defstruct (oracle-result-set (:print-function print-query-cursor)
                               (:conc-name qc-)
                               (:constructor %make-query-cursor))
-  (db (error "missing DB")              ; db conn. this table is associated with
+  (db (error "missing DB")   ; db conn. this table is associated with
     :type oracle-database
     :read-only t)
   (stmthp (error "missing STMTHP")      ; the statement handle used to create
     :type oracle-database
     :read-only t)
   (stmthp (error "missing STMTHP")      ; the statement handle used to create
@@ -363,7 +380,7 @@ the length of that format.")
   ;;(declare (optimize (speed 3)))
   (cond ((zerop (qc-n-from-oci qc))
         (if eof-errorp
   ;;(declare (optimize (speed 3)))
   (cond ((zerop (qc-n-from-oci qc))
         (if eof-errorp
-            (error 'clsql-error :message
+            (error 'sql-database-error :message
                    (format nil "no more rows available in ~S" qc))
           eof-value))
        ((>= (qc-n-to-dbi qc)
                    (format nil "no more rows available in ~S" qc))
           eof-value))
        ((>= (qc-n-to-dbi qc)
@@ -862,8 +879,10 @@ the length of that format.")
                 ) :database database)))
 
 (defmethod database-list-sequences ((database oracle-database) &key owner)
                 ) :database database)))
 
 (defmethod database-list-sequences ((database oracle-database) &key owner)
-  (mapcar #'car (database-query "select sequence_name from user_sequences" 
-                               database nil nil)))
+  (mapcar #'car (database-query 
+                (concatenate 'string "select sequence_name from user_sequences" 
+                             (owner-phrase owner))
+                database nil nil)))
 
 (defmethod database-execute-command (sql-expression (database oracle-database))
   (database-query sql-expression database nil nil)
 
 (defmethod database-execute-command (sql-expression (database oracle-database))
   (database-query sql-expression database nil nil)
index b6d3a78b56b386378f89c45d0de4b4ad8d44d2b4..ec328260915835fc5caac7ced4fb0bd2cd61a93a 100644 (file)
@@ -82,7 +82,7 @@ Description: CLSQL database backend, SQLite
 
 Package: cl-sql-tests
 Architecture: all
 
 Package: cl-sql-tests
 Architecture: all
-Depends: cl-sql, cl-sql-postgresql, cl-sql-postgresql-socket, cl-sql-mysql, cl-sql-sqlite, cl-sql-odbc, rt
+Depends: cl-sql, cl-sql-postgresql, cl-sql-postgresql-socket, cl-sql-mysql, cl-sql-sqlite, cl-sql-odbc, cl-rt
 Suggests: acl-installer, libmyodbc, unixodbc,cl-sql-aodbc 
 Description: Testing suite for CLSQL
  This package contains a test suite for CLSQL. It requires manual
 Suggests: acl-installer, libmyodbc, unixodbc,cl-sql-aodbc 
 Description: Testing suite for CLSQL
  This package contains a test suite for CLSQL. It requires manual