r8821: integrate usql support
[clsql.git] / usql / package.lisp
1 ;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
2 ;;;; ======================================================================
3 ;;;; File:    package.lisp
4 ;;;; Author:  Marcus Pearce <m.t.pearce@city.ac.uk>
5 ;;;; Created: 30/03/2004
6 ;;;; Updated: <04/04/2004 12:21:50 marcusp>
7 ;;;; ======================================================================
8 ;;;;
9 ;;;; Description ==========================================================
10 ;;;; ======================================================================
11 ;;;;
12 ;;;; Package definitions for CLSQL-USQL. 
13 ;;;;
14 ;;;; ======================================================================
15
16 (in-package #:cl-user)
17
18 (eval-when (:compile-toplevel :load-toplevel :execute)
19   
20 (defpackage #:clsql-usql-sys
21   (:nicknames #:usql-sys #:sql-sys)
22   (:use #:common-lisp #:clsql-base-sys #+lispworks #:clos)
23   ;; This is for working with the CMUCL/SBCL PCL MOP, which is kinda whacky
24   #+(or cmu sbcl)
25   (:shadowing-import-from #+cmu :pcl #+sbcl :sb-pcl 
26                           :built-in-class 
27                           :class-direct-slots
28                           :class-name
29                           :class-of
30                           :class-slots
31                           :compute-effective-slot-definition
32                           :direct-slot-definition-class
33                           :effective-slot-definition-class
34                           :find-class
35                           :slot-boundp
36                           :slot-definition-name
37                           :slot-definition-type
38                           :slot-value-using-class
39                           :standard-direct-slot-definition
40                           :standard-effective-slot-definition
41                           :validate-superclass
42                           :class-direct-superclasses
43                           :name
44                           :standard-class)
45   (:import-from :clsql-base-sys
46                 ;; conditions 
47                 :clsql-condition
48                 :clsql-error
49                 :clsql-simple-error
50                 :clsql-warning
51                 :clsql-simple-warning
52                 :clsql-invalid-spec-error
53                 :clsql-invalid-spec-error-connection-spec
54                 :clsql-invalid-spec-error-database-type
55                 :clsql-invalid-spec-error-template
56                 :clsql-connect-error
57                 :clsql-connect-error-database-type
58                 :clsql-connect-error-connection-spec
59                 :clsql-connect-error-errno
60                 :clsql-connect-error-error
61                 :clsql-sql-error
62                 :clsql-sql-error-database
63                 :clsql-sql-error-expression
64                 :clsql-sql-error-errno
65                 :clsql-sql-error-error
66                 :clsql-database-warning
67                 :clsql-database-warning-database
68                 :clsql-database-warning-message
69                 :clsql-exists-condition
70                 :clsql-exists-condition-new-db
71                 :clsql-exists-condition-old-db
72                 :clsql-exists-warning
73                 :clsql-exists-error
74                 :clsql-closed-error
75                 :clsql-closed-error-database
76                 :clsql-type-error
77                 :clsql-sql-syntax-error
78                 ;; db-interface
79                 :check-connection-spec
80                 :database-initialize-database-type
81                 :database-type-load-foreign
82                 :database-name-from-spec
83                 :database-create-sequence
84                 :database-drop-sequence
85                 :database-sequence-next
86                 :database-set-sequence-position
87                 :database-query-result-set
88                 :database-dump-result-set
89                 :database-store-next-row
90                 :database-get-type-specifier
91                 :database-list-tables
92                 :database-list-views
93                 :database-list-indexes
94                 :database-list-sequences
95                 :database-list-attributes
96                 :database-attribute-type
97                 :database-add-attribute
98                 :database-type 
99                 ;; initialize
100                 :*loaded-database-types*
101                 :reload-database-types
102                 :*default-database-type*
103                 :*initialized-database-types*
104                 :initialize-database-type
105                 ;; classes
106                 :database
107                 :closed-database
108                 :database-name
109                 :command-recording-stream
110                 :result-recording-stream
111                 :database-view-classes
112                 :database-schema
113                 :conn-pool
114                 :print-object 
115                 ;; utils
116                 :sql-escape)
117   (:export
118    ;; "Private" exports for use by interface packages
119    :check-connection-spec
120    :database-initialize-database-type
121    :database-type-load-foreign
122    :database-name-from-spec
123    :database-connect
124    :database-query
125    :database-execute-command
126    :database-create-sequence
127    :database-drop-sequence
128    :database-sequence-next
129    :database-set-sequence-position
130    :database-query-result-set
131    :database-dump-result-set
132    :database-store-next-row
133    :database-get-type-specifier
134    :database-list-tables
135    :database-table-exists-p
136    :database-list-views
137    :database-view-exists-p
138    :database-list-indexes
139    :database-index-exists-p
140    :database-list-sequences
141    :database-sequence-exists-p
142    :database-list-attributes
143    :database-attribute-type
144    .
145    ;; Shared exports for re-export by USQL. 
146    ;; I = Implemented, D = Documented
147    ;;  name                                 file       ID
148    ;;====================================================
149    #1=(;;------------------------------------------------
150        ;; CommonSQL API 
151        ;;------------------------------------------------
152       ;;FDML 
153        :select                            ; objects    xx
154        :cache-table-queries               ; 
155        :*cache-table-queries-default*     ; 
156        :delete-records                    ; sql        xx
157        :insert-records                    ; sql        xx
158        :update-records                    ; sql        xx
159        :execute-command                   ; sql        xx
160        :query                             ; sql        xx
161        :print-query                       ; sql        xx
162        :do-query                          ; sql        xx
163        :map-query                         ; sql        xx
164        :loop                              ; loop-ext   x
165        ;;FDDL
166        :create-table                      ; table      xx
167        :drop-table                        ; table      xx
168        :list-tables                       ; table      xx
169        :table-exists-p                    ; table      xx 
170        :list-attributes                   ; table      xx
171        :attribute-type                    ; table      xx
172        :list-attribute-types              ; table      xx
173        :create-view                       ; table      xx
174        :drop-view                         ; table      xx
175        :create-index                      ; table      xx               
176        :drop-index                        ; table      xx               
177        ;;OODDL
178        :standard-db-object                ; objects    xx
179        :def-view-class                    ; objects    xx
180        :create-view-from-class            ; objects    xx
181        :drop-view-from-class              ; objects    xx
182        ;;OODML
183        :instance-refreshed                ;
184        :update-object-joins               ;
185        :*default-update-objects-max-len*  ; 
186        :update-slot-from-record           ; objects    xx
187        :update-instance-from-records      ; objects    xx
188        :update-records-from-instance      ; objects    xx
189        :update-record-from-slot           ; objects    xx
190        :update-record-from-slots          ; objects    xx
191        :list-classes                      ; objects    xx
192        :delete-instance-records           ; objects    xx
193        ;;Symbolic SQL Syntax 
194        :sql                               ; syntax     xx
195        :sql-expression                    ; syntax     xx
196        :sql-operation                     ; syntax     xx
197        :sql-operator                      ; syntax     xx       
198        :disable-sql-reader-syntax         ; syntax     xx
199        :enable-sql-reader-syntax          ; syntax     xx
200        :locally-disable-sql-reader-syntax ; syntax     xx
201        :locally-enable-sql-reader-syntax  ; syntax     xx
202        :restore-sql-reader-syntax-state   ; syntax     xx
203
204        ;;------------------------------------------------
205        ;; Miscellaneous Extensions
206        ;;------------------------------------------------
207        ;;Initialization
208        :*loaded-database-types*           ; clsql-base xx
209        :reload-database-types             ; clsql-base xx
210        :closed-database                   ; database   xx
211        :database-type                     ; database   x
212        :in-schema                         ; classes    x
213        ;;FDDL 
214        :list-views                        ; table      xx
215        :view-exists-p                     ; table      xx
216        :list-indexes                      ; table      xx
217        :index-exists-p                    ; table      xx
218        :create-sequence                   ; table      xx
219        :drop-sequence                     ; table      xx
220        :list-sequences                    ; table      xx
221        :sequence-exists-p                 ; table      xx
222        :sequence-next                     ; table      xx
223        :sequence-last                     ; table      xx
224        :set-sequence-position             ; table      xx
225        ;;OODDL
226        :view-table                        ; metaclass  x
227        :create-sequence-from-class        ; objects    x
228        :drop-sequence-from-class          ; objects    x        
229        ;;OODML
230        :add-to-relation                   ; objects    x
231        :remove-from-relation              ; objects    x
232        :read-sql-value                    ; objects    x
233        :database-output-sql-as-type       ; objects    x
234        :database-get-type-specifier       ; objects    x
235        :database-output-sql               ; sql/class  xx
236
237        ;;-----------------------------------------------
238        ;; Conditions/Warnings/Errors
239        ;;-----------------------------------------------
240        :clsql-condition
241        :clsql-error
242        :clsql-simple-error
243        :clsql-warning
244        :clsql-simple-warning
245        :clsql-invalid-spec-error
246        :clsql-invalid-spec-error-connection-spec
247        :clsql-invalid-spec-error-database-type
248        :clsql-invalid-spec-error-template
249        :clsql-connect-error
250        :clsql-connect-error-database-type
251        :clsql-connect-error-connection-spec
252        :clsql-connect-error-errno
253        :clsql-connect-error-error
254        :clsql-sql-error
255        :clsql-type-error
256        :clsql-sql-error-database
257        :clsql-sql-error-expression
258        :clsql-sql-error-errno
259        :clsql-sql-error-error
260        :clsql-exists-condition
261        :clsql-exists-condition-new-db
262        :clsql-exists-condition-old-db
263        :clsql-exists-warning
264        :clsql-exists-error
265        :clsql-closed-error
266        :clsql-closed-error-database
267
268        ;;-----------------------------------------------
269        ;; Symbolic Sql Syntax 
270        ;;-----------------------------------------------
271        :sql-and-qualifier
272        :sql-escape
273        :sql-query
274        :sql-any
275        :sql-all
276        :sql-not
277        :sql-union
278        :sql-intersection
279        :sql-minus
280        :sql-group-by
281        :sql-having
282        :sql-null
283        :sql-not-null
284        :sql-exists
285        :sql-*
286        :sql-+
287        :sql-/
288        :sql-like
289        :sql-uplike
290        :sql-and
291        :sql-or
292        :sql-in
293        :sql-||
294        :sql-is
295        :sql-=
296        :sql-==
297        :sql-<
298        :sql->
299        :sql->=
300        :sql-<=
301        :sql-count
302        :sql-max
303        :sql-min
304        :sql-avg
305        :sql-sum
306        :sql-view-class
307        :sql_slot-value
308
309 ))
310   (:documentation "This is the INTERNAL SQL-Interface package of USQL."))
311
312
313 ;; see http://thread.gmane.org/gmane.lisp.lispworks.general/681
314 #+lispworks
315 (setf *packages-for-warn-on-redefinition* 
316       (delete "SQL" *packages-for-warn-on-redefinition* :test 'string=))
317
318 (defpackage #:clsql-usql
319   (:nicknames #:usql #:sql)
320   (:use :common-lisp)
321   (:import-from :clsql-usql-sys . #1#)
322   (:export . #1#)
323   (:documentation "This is the SQL-Interface package of USQL."))
324
325 );eval-when                                      
326
327