X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=sql%2Fpackage.lisp;h=8ef83815df05122b8dc6c5f941a224929f29829a;hp=1a11f9493a7d57faa1faf85091856ba9858b3474;hb=1b07d2fd927cf8f1943ac0a0b8c980d1dc707076;hpb=d62773c32c5bd4bf57a4eda31a7825a5607ec87f diff --git a/sql/package.lisp b/sql/package.lisp index 1a11f94..8ef8381 100644 --- a/sql/package.lisp +++ b/sql/package.lisp @@ -5,6 +5,8 @@ ;;;; Name: package.lisp ;;;; Purpose: Package definition for SQL interface ;;;; +;;;; $Id$ +;;;; ;;;; This file is part of CLSQL. ;;;; ;;;; CLSQL users are granted the rights to distribute and use this software @@ -18,11 +20,11 @@ ;;;; core packages. (eval-when (:compile-toplevel :load-toplevel :execute) - #+sbcl + #+sbcl (if (find-package 'sb-mop) (pushnew :clsql-sbcl-mop cl:*features*) (pushnew :clsql-sbcl-pcl cl:*features*)) - + #+cmu (if (eq (symbol-package 'pcl:find-class) (find-package 'common-lisp)) @@ -36,22 +38,26 @@ #+clsql-sbcl-mop #:sb-mop #+clsql-cmucl-mop #:mop #+allegro #:mop + #+clisp #:clos #+lispworks #:clos #+scl #:clos #+openmcl #:openmcl-mop) - + #+allegro - (:shadowing-import-from + (:shadowing-import-from #:excl) + #+clisp + (:shadowing-import-from + #:clos) #+lispworks - (:shadowing-import-from + (:shadowing-import-from #:clos) - #+clsql-sbcl-mop - (:shadowing-import-from + #+clsql-sbcl-mop + (:shadowing-import-from #:sb-pcl #:generic-function-lambda-list) #+clsql-sbcl-pcl - (:shadowing-import-from + (:shadowing-import-from #:sb-pcl #:name #:class-direct-slots @@ -69,12 +75,12 @@ #:class-precedence-list #:slot-definition-type #:class-direct-superclasses #:compute-class-precedence-list) - #+clsql-cmucl-mop - (:shadowing-import-from + #+clsql-cmucl-mop + (:shadowing-import-from #:pcl #:generic-function-lambda-list) #+clsql-cmucl-pcl - (:shadowing-import-from + (:shadowing-import-from #:pcl #:class-direct-slots #:name @@ -92,19 +98,19 @@ #:class-direct-superclasses #:compute-class-precedence-list) #+scl - (:shadowing-import-from + (:shadowing-import-from #:clos #:class-prototype ;; note: make-method-lambda is not fbound ) - + (:export ;; "Private" exports for use by interface packages #:check-connection-spec #:database-initialize-database-type #:database-type-load-foreign - #:database-name-from-spec #:database-connect #:database-disconnect + #:database-reconnect #:database-query #:database-execute-command #:database-create-sequence @@ -114,8 +120,8 @@ #:database-query-result-set #:database-dump-result-set #:database-store-next-row - #:database-get-type-specifier #:database-list-tables + #:database-list-tables-and-sequences #:database-table-exists-p #:database-list-views #:database-view-exists-p @@ -127,24 +133,35 @@ #:database-sequence-exists-p #:database-list-attributes #:database-attribute-type - #:database-describe-table #:database-type-library-loaded #:database-create #:database-destroy #:database-probe #:database-list - + #:db-backend-has-create/destroy-db? #:db-type-has-views? + #:db-type-has-bigint? + #:db-type-has-union? + #:db-type-has-prepared-stmt? #:db-type-has-subqueries? #:db-type-has-boolean-where? #:db-type-transaction-capable? #:db-type-has-fancy-math? #:db-type-default-case - #:db-type-use-column-on-drop-index? + #:db-type-use-column-on-drop-index? + #:db-type-use-fully-qualified-column-on-drop-index? + #:db-type-has-intersect? + #:db-type-has-except? #:database-underlying-type + #:database-get-type-specifier + #:read-sql-value + #:database-output-sql-as-type + #:*loaded-database-types* + #:reload-database-types + #:is-database-open - ;; Large objects + ;; Large objects #:database-create-large-object #:database-write-large-object #:database-read-large-object @@ -154,6 +171,12 @@ #:read-large-object #:delete-large-object + ;; Prepared statments + #:database-prepare + #:database-run-prepared + #:database-bind-parameter + #:database-free-prepared + ;; accessors for database class #:name #:connection-spec @@ -164,10 +187,9 @@ #:result-recording-stream #:record-caches #:view-classes - #:database-type #:database-state #:attribute-cache - + #:database-autocommit ;; utils.lisp #:without-interrupts @@ -177,329 +199,359 @@ #:symbol-name-default-case #:convert-to-db-default-case #:ensure-keyword - - - #:clsql-invalid-spec-error - #:clsql-invalid-spec-error-connection-spec - #:clsql-invalid-spec-error-database-type - #:clsql-invalid-spec-error-template - #:clsql-access-error - #:clsql-access-error-database-type - #:clsql-access-error-connection-spec - #:clsql-access-error-error - #:clsql-connect-error - #:clsql-connect-error-errno - #:clsql-sql-error - #:clsql-sql-error-database - #:clsql-sql-error-expression - #:clsql-sql-error-errno - #:clsql-sql-error-error - #:clsql-database-warning - #:clsql-database-warning-database - #:clsql-database-warning-message - #:clsql-exists-condition - #:clsql-exists-condition-new-db - #:clsql-exists-condition-old-db - #:clsql-exists-warning - #:clsql-exists-error - #:clsql-closed-error - #:clsql-closed-error-database - #:clsql-sql-syntax-error - #:clsql-type-error - #:clsql-odbc-error - #:clsql-odbc-error-message - - #:*loaded-database-types* - #:reload-database-types - #:*initialized-database-types* - #:initialize-database-type - #:*connect-if-exists* - #:*default-database* - #:connected-databases - #:database - #:find-database - #:is-database-open - #:database-type ; database x - - ;; utils.lisp + #:getenv #:number-to-sql-string #:float-to-sql-string #:sql-escape-quotes + #:sql-escape #:in - + + ;; Generic backends + #:generic-postgresql-database + #:generic-odbc-database + + ;; Subclasses of sql-expresssion (expressions.lisp) + #:sql-function-exp + #:sql-value-exp + #:sql-set-exp + #:sql-query-modifier-exp + #:sql-relational-exp + #:sql-upcase-like + #:sql-assignment-exp + #:sql-typecast-exp + #:sql-between-exp + #:sql-ident + #:sql-ident-attribute + #:sql-ident-table + . - ;; Shared exports for re-export by CLSQL package. - ;; I = Implemented, D = Documented - ;; name file ID - ;;==================================================== - #1=(;;------------------------------------------------ - ;; CommonSQL API - ;;------------------------------------------------ - ;;FDML - #:select ; objects xx - #:cache-table-queries ; - #:*cache-table-queries-default* ; - #:delete-records ; sql xx - #:insert-records ; sql xx - #:update-records ; sql xx - #:execute-command ; sql xx - #:query ; sql xx - #:print-query ; sql xx - #:do-query ; sql xx - #:map-query ; sql xx - #:for-each-row - #:loop - - ;;FDDL - #:create-table ; table xx - #:drop-table ; table xx - #:list-tables ; table xx - #:table-exists-p ; table xx - #:list-attributes ; table xx - #:attribute-type ; table xx - #:list-attribute-types ; table xx - #:*cache-table-queries-default* - #:create-view ; table xx - #:drop-view ; table xx - #:create-index ; table xx - #:drop-index ; table xx - #:truncate-database - ;;OODDL - #:standard-db-object ; objects xx - #:def-view-class ; objects xx - #:create-view-from-class ; objects xx - #:drop-view-from-class ; objects xx - ;;OODML - #:instance-refreshed ; objects xx - #:update-object-joins ; - #:*default-update-objects-max-len* ; - #:update-slot-from-record ; objects xx - #:update-instance-from-records ; objects xx - #:update-records-from-instance ; objects xx - #:update-record-from-slot ; objects xx - #:update-record-from-slots ; objects xx - #:list-classes ; objects xx - #:delete-instance-records ; objects xx - ;;Symbolic SQL Syntax - #:sql ; syntax xx - #:sql-expression ; syntax xx - #:sql-operation ; syntax xx - #:sql-operator ; syntax xx - #:disable-sql-reader-syntax ; syntax xx - #:enable-sql-reader-syntax ; syntax xx - #:locally-disable-sql-reader-syntax ; syntax xx - #:locally-enable-sql-reader-syntax ; syntax xx - #:restore-sql-reader-syntax-state ; syntax xx - - ;;FDDL - #:list-views ; table xx - #:view-exists-p ; table xx - #:list-indexes ; table xx - #:list-table-indexes ; table xx - #:index-exists-p ; table xx - #:create-sequence ; table xx - #:drop-sequence ; table xx - #:list-sequences ; table xx - #:sequence-exists-p ; table xx - #:sequence-next ; table xx - #:sequence-last ; table xx - #:set-sequence-position ; table xx - ;;OODDL - #:view-table ; metaclass x - #:universal-time ; objects xx - #:bigint - ;;OODML - #:*db-auto-sync* ; objects xx - #:add-to-relation ; objects x - #:remove-from-relation ; objects x - #:read-sql-value ; objects x - #:database-output-sql-as-type ; objects x - #:database-get-type-specifier ; objects x - #:database-output-sql ; sql/class xx - - ;; conditions - #:clsql-condition - #:clsql-error - #:clsql-simple-error - #:clsql-warning - #:clsql-simple-warning - - ;;----------------------------------------------- - ;; Symbolic Sql Syntax - ;;----------------------------------------------- - #:sql-and-qualifier - #:sql-escape - #:sql-query - #:sql-object-query - #:sql-any - #:sql-all - #:sql-not - #:sql-union - #:sql-intersection - #:sql-minus - #:sql-group-by - #:sql-having - #:sql-null - #:sql-not-null - #:sql-exists - #:sql-* - #:sql-+ - #:sql-/ - #:sql-like - #:sql-uplike - #:sql-and - #:sql-or - #:sql-in - #:sql-|| - #:sql-is - #:sql-= - #:sql-== - #:sql-< - #:sql-> - #:sql->= - #:sql-<= - #:sql-count - #:sql-max - #:sql-min - #:sql-avg - #:sql-sum - #:sql-view-class - #:sql_slot-value - - - - ;; time.lisp - #:bad-component - #:current-day - #:current-month - #:current-year - #:day-duration - #:db-timestring - #:decode-duration - #:decode-time - #:duration - #:duration+ - #:duration< - #:duration<= - #:duration= - #:duration> - #:duration>= - #:duration-day - #:duration-hour - #:duration-minute - #:duration-month - #:duration-second - #:duration-year - #:duration-reduce - #:duration-timestring - #:extract-roman - #:format-duration - #:format-time - #:get-time - #:utime->time - #:interval-clear - #:interval-contained - #:interval-data - #:interval-edit - #:interval-end - #:interval-match - #:interval-push - #:interval-relation - #:interval-start - #:interval-type - #:make-duration - #:make-interval - #:make-time - #:merged-time - #:midnight - #:month-name - #:parse-date-time - #:parse-timestring - #:parse-yearstring - #:print-date - #:roll - #:roll-to - #:time - #:time+ - #:time- - #:time-by-adding-duration - #:time-compare - #:time-difference - #:time-dow - #:time-element - #:time-max - #:time-min - #:time-mjd - #:time-msec - #:time-p - #:time-sec - #:time-well-formed - #:time-ymd - #:time< - #:time<= - #:time= - #:time> - #:time>= - #:timezone - #:universal-time - #:wall-time - #:wall-timestring - #:week-containing - #:gregorian-to-mjd - #:mjd-to-gregorian - - ;; recording.lisp -- SQL I/O Recording - #:record-sql-command - #:record-sql-result - #:add-sql-stream ; recording xx - #:delete-sql-stream ; recording xx - #:list-sql-streams ; recording xx - #:sql-recording-p ; recording xx - #:sql-stream ; recording xx - #:start-sql-recording ; recording xx - #:stop-sql-recording ; recording xx - - ;; database.lisp -- Connection - #:*default-database-type* ; clsql-base xx - #:*default-database* ; classes xx - #:connect ; database xx - #:*connect-if-exists* ; database xx - #:connected-databases ; database xx - #:database ; database xx - #:database-name ; database xx - #:disconnect ; database xx - #:reconnect ; database - #:find-database ; database xx - #:status ; database xx - #:with-database - #:with-default-database - #:disconnect-pooled - #:create-database - #:destroy-database - #:probe-database - #:list-databases - - #:describe-table - #:*backend-warning-behavior* - - ;; Transactions - #:with-transaction - #:commit-transaction - #:rollback-transaction - #:add-transaction-commit-hook - #:add-transaction-rollback-hook - #:commit ; transact xx - #:rollback ; transact xx - #:with-transaction ; transact xx . - #:start-transaction ; transact xx - #:in-transaction-p ; transact xx - #:database-start-transaction - #:database-abort-transaction - #:database-commit-transaction - #:transaction-level - #:transaction - )) - (:documentation "This is the INTERNAL SQL-Interface package of CLSQL.")) + + ;; Shared exports for re-export by CLSQL package. + #1=( + + ;; foreign library loading + #:*foreign-library-search-paths* + #:push-library-path + + ;; Condition system (conditions.lisp) + #:sql-user-error + #:sql-database-error + #:sql-database-data-error + #:sql-connection-error + #:sql-temporary-error + #:sql-timeout-error + #:sql-fatal-error + #:sql-error-error-id + #:sql-error-secondary-error-id + #:sql-error-database-message + ;; CLSQL Extensions + #:sql-condition + #:sql-error + #:sql-warning + #:sql-database-warning + #:sql-error-database + #:sql-error-database-type + #:sql-error-connection-spec + #:sql-error-expression + #:sql-warning-database + #:sql-user-error-message + #:*backend-warning-behavior* + + ;; Connection/initialisation (base-classes.lisp, database.lisp, + ;; initialize.lisp) + #:*default-database-type* + #:*default-database* + #:*initialized-database-types* + #:initialize-database-type + #:connect + #:disconnect + #:*connect-if-exists* + #:connected-databases + #:database + #:database-name + #:reconnect + #:find-database + #:status + ;; CLSQL Extensions + #:database-name-from-spec + #:database-type + #:with-database + #:with-default-database + #:disconnect-pooled + #:list-databases + #:create-database + #:destroy-database + #:probe-database + + ;; I/O Recording (recording.lisp) + #:add-sql-stream + #:delete-sql-stream + #:list-sql-streams + #:sql-recording-p + #:sql-stream + #:start-sql-recording + #:stop-sql-recording + + ;; FDDL (fddl.lisp) + #:create-table + #:drop-table + #:list-tables + #:table-exists-p + #:list-attributes + #:attribute-type + #:list-attribute-types + #:create-view + #:drop-view + #:create-index + #:drop-index + ;; CLSQL Extensions + #:truncate-database + #:list-views + #:view-exists-p + #:list-indexes + #:index-exists-p + #:create-sequence + #:drop-sequence + #:list-sequences + #:sequence-exists-p + #:sequence-next + #:sequence-last + #:set-sequence-position + + ;; FDML (fdml.lisp) + #:select + #:cache-table-queries + #:*cache-table-queries-default* + #:delete-records + #:insert-records + #:update-records + #:execute-command + #:query + #:print-query + #:do-query + #:map-query + #:loop + ;; CLSQL Extensions + #:prepare-sql + #:bind-parameter + #:run-prepared-sql + #:free-prepared-sql + + ;; Transaction handling (transaction.lisp) + #:with-transaction + #:commit + #:rollback + ;; CLSQL Extensions + #:add-transaction-commit-hook + #:add-transaction-rollback-hook + #:start-transaction + #:in-transaction-p + #:set-autocommit + + ;; OODDL (ooddl.lisp) + #:standard-db-object + #:def-view-class + #:create-view-from-class + #:drop-view-from-class + #:list-classes + #:universal-time + ;; CLSQL Extensions + #:view-table + #:bigint + #:varchar + #:generalized-boolean + #:mediumint + #:smallint + #:tinyint + #:*default-string-length* + + ;; OODML (oodml.lisp) + #:instance-refreshed + #:update-objects-joins + #:*default-update-objects-max-len* + #:*default-caching* + #:update-slot-from-record + #:update-instance-from-records + #:update-records-from-instance + #:update-record-from-slot + #:update-record-from-slots + #:delete-instance-records + ;; CLSQL Extensions + #:*db-auto-sync* + #:write-instance-to-stream + #:read-instance-from-stream + + ;; Symbolic SQL Syntax (syntax.lisp) + #:sql + #:sql-expression + #:sql-operation + #:sql-operator + #:disable-sql-reader-syntax + #:enable-sql-reader-syntax + #:locally-disable-sql-reader-syntax + #:locally-enable-sql-reader-syntax + #:restore-sql-reader-syntax-state + + ;; SQL operations (operations.lisp) + #:sql-query + #:sql-object-query + #:sql-any + #:sql-some + #:sql-all + #:sql-not + #:sql-union + #:sql-intersect + #:sql-minus + #:sql-except + #:sql-order-by + #:sql-null + #:sql-* + #:sql-+ + #:sql-/ + #:sql-- + #:sql-like + #:sql-and + #:sql-or + #:sql-in + #:sql-substr + #:sql-concat-op + #:sql-= + #:sql-< + #:sql-> + #:sql->= + #:sql-<= + #:sql-<> + #:sql-count + #:sql-max + #:sql-min + #:sql-avg + #:sql-sum + #:sql-function + #:sql-between + #:sql-distinct + #:sql-nvl + #:sql-slot-value + #:sql-userenv + ;; CLSQL Extensions + #:sql-concat + #:sql-substring + #:sql-limit + #:sql-group-by + #:sql-having + #:sql-not-null + #:sql-exists + #:sql-uplike + #:sql-is + #:sql-== + #:sql-the + #:sql-coalesce + #:sql-view-class + + ;; Time handling (time.lisp) + #:bad-component + #:current-day + #:current-month + #:current-year + #:day-duration + #:db-timestring + #:db-datestring + #:decode-duration + #:decode-time + #:decode-date + #:duration + #:duration+ + #:duration< + #:duration<= + #:duration= + #:duration> + #:duration>= + #:duration-day + #:duration-hour + #:duration-minute + #:duration-month + #:duration-second + #:duration-year + #:duration-reduce + #:duration-timestring + #:extract-roman + #:format-duration + #:format-time + #:format-date + #:get-time + #:get-date + #:utime->time + #:interval-clear + #:interval-contained + #:interval-data + #:interval-edit + #:interval-end + #:interval-match + #:interval-push + #:interval-relation + #:interval-start + #:interval-type + #:make-duration + #:make-interval + #:make-time + #:make-date + #:merged-time + #:midnight + #:month-name + #:parse-date-time + #:parse-timestring + #:parse-datestring + #:parse-yearstring + #:print-date + #:roll + #:roll-to + #:time + #:time+ + #:time- + #:time-by-adding-duration + #:time-compare + #:time-difference + #:time-dow + #:time-element + #:time-max + #:time-min + #:time-mjd + #:time-msec + #:time-p + #:time-sec + #:time-well-formed + #:time-ymd + #:time< + #:time<= + #:time= + #:time> + #:time>= + #:date + #:date+ + #:date- + #:date-difference + #:date-compare + #:date-dow + #:date-element + #:date-max + #:date-min + #:date-mjd + #:date-p + #:date-ymd + #:date< + #:date<= + #:date= + #:date> + #:date>= + #:timezone + #:universal-time + #:wall-time + #:wall-timestring + #:week-containing + #:gregorian-to-mjd + #:mjd-to-gregorian + #:iso-timestring + )) + (:documentation "This is the INTERNAL SQL-Interface package of CLSQL.")) (defpackage #:clsql @@ -514,12 +566,12 @@ (:export . #1#) (:documentation "This is the user package with CLSQL symbols.")) - ;; This is from USQL's pcl-patch + ;; This is from USQL's pcl-patch #+(or clsql-sbcl-pcl clsql-cmucl-pcl) (progn - ;; Note that this will no longer required for cmucl as of version 19a. + ;; Note that this will no longer required for cmucl as of version 19a. (in-package #+cmu :pcl #+sbcl :sb-pcl) - (defmacro pv-binding1 ((pv calls pv-table-symbol pv-parameters slot-vars) + (defmacro pv-binding1 ((pv calls pv-table-symbol pv-parameters slot-vars) &body body) `(pv-env (,pv ,calls ,pv-table-symbol ,pv-parameters) (let (,@(mapcar #'(lambda (slot-var p) `(,slot-var (get-slots-or-nil ,p))) @@ -529,18 +581,18 @@ ;; see http://thread.gmane.org/gmane.lisp.lispworks.general/681 #+lispworks -(setf *packages-for-warn-on-redefinition* +(setf *packages-for-warn-on-redefinition* (delete "SQL" *packages-for-warn-on-redefinition* :test 'string=)) #+sbcl (if (find-package 'sb-mop) (setq cl:*features* (delete :clsql-sbcl-mop cl:*features*)) (setq cl:*features* (delete :clsql-sbcl-pcl cl:*features*))) - + #+cmu (if (find-package 'mop) (setq cl:*features* (delete :clsql-cmucl-mop cl:*features*)) (setq cl:*features* (delete :clsql-cmucl-pcl cl:*features*))) -) ;eval-when +) ;eval-when