r9478: 25 May 2004 Kevin Rosenberg <kevin@rosenberg.net>
[clsql/s11.git] / sql / package.lisp
blobe7572771e272b120f4c3ca4e20d2063de58761ea
1 ;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
4 ;;;;
5 ;;;; Name: package.lisp
6 ;;;; Purpose: Package definition for SQL interface
7 ;;;;
8 ;;;; $Id$
9 ;;;;
10 ;;;; This file is part of CLSQL.
11 ;;;;
12 ;;;; CLSQL users are granted the rights to distribute and use this software
13 ;;;; as governed by the terms of the Lisp Lesser GNU Public License
14 ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
15 ;;;; *************************************************************************
17 (in-package #:cl-user)
19 ;;;; This file makes the required package definitions for CLSQL's
20 ;;;; core packages.
22 (eval-when (:compile-toplevel :load-toplevel :execute)
23 #+sbcl
24 (if (find-package 'sb-mop)
25 (pushnew :clsql-sbcl-mop cl:*features*)
26 (pushnew :clsql-sbcl-pcl cl:*features*))
28 #+cmu
29 (if (eq (symbol-package 'pcl:find-class)
30 (find-package 'common-lisp))
31 (pushnew :clsql-cmucl-mop cl:*features*)
32 (pushnew :clsql-cmucl-pcl cl:*features*)))
35 (eval-when (:compile-toplevel :load-toplevel :execute)
36 (defpackage #:clsql-sys
37 (:use #:common-lisp
38 #+clsql-sbcl-mop #:sb-mop
39 #+clsql-cmucl-mop #:mop
40 #+allegro #:mop
41 #+lispworks #:clos
42 #+scl #:clos
43 #+openmcl #:openmcl-mop)
45 #+allegro
46 (:shadowing-import-from
47 #:excl)
48 #+lispworks
49 (:shadowing-import-from
50 #:clos)
51 #+clsql-sbcl-mop
52 (:shadowing-import-from
53 #:sb-pcl
54 #:generic-function-lambda-list)
55 #+clsql-sbcl-pcl
56 (:shadowing-import-from
57 #:sb-pcl
58 #:name
59 #:class-direct-slots
60 #:class-of #:class-name #:class-slots #:find-class
61 #:slot-boundp
62 #:standard-class
63 #:slot-definition-name #:finalize-inheritance
64 #:standard-direct-slot-definition
65 #:standard-effective-slot-definition #:validate-superclass
66 #:direct-slot-definition-class #:compute-effective-slot-definition
67 #:effective-slot-definition-class
68 #:slot-value-using-class
69 #:class-prototype #:generic-function-method-class #:intern-eql-specializer
70 #:make-method-lambda #:generic-function-lambda-list
71 #:class-precedence-list #:slot-definition-type
72 #:class-direct-superclasses
73 #:compute-class-precedence-list)
74 #+clsql-cmucl-mop
75 (:shadowing-import-from
76 #:pcl
77 #:generic-function-lambda-list)
78 #+clsql-cmucl-pcl
79 (:shadowing-import-from
80 #:pcl
81 #:class-direct-slots
82 #:name
83 #:class-of #:class-name #:class-slots #:find-class #:standard-class
84 #:slot-boundp
85 #:slot-definition-name #:finalize-inheritance
86 #:standard-direct-slot-definition #:standard-effective-slot-definition
87 #:validate-superclass #:direct-slot-definition-class
88 #:effective-slot-definition-class
89 #:compute-effective-slot-definition
90 #:slot-value-using-class
91 #:class-prototype #:generic-function-method-class #:intern-eql-specializer
92 #:make-method-lambda #:generic-function-lambda-list
93 #:class-precedence-list #:slot-definition-type
94 #:class-direct-superclasses
95 #:compute-class-precedence-list)
96 #+scl
97 (:shadowing-import-from
98 #:clos
99 #:class-prototype ;; note: make-method-lambda is not fbound
102 (:export
103 ;; "Private" exports for use by interface packages
104 #:check-connection-spec
105 #:database-initialize-database-type
106 #:database-type-load-foreign
107 #:database-name-from-spec
108 #:database-connect
109 #:database-disconnect
110 #:database-query
111 #:database-execute-command
112 #:database-create-sequence
113 #:database-drop-sequence
114 #:database-sequence-next
115 #:database-set-sequence-position
116 #:database-query-result-set
117 #:database-dump-result-set
118 #:database-store-next-row
119 #:database-list-tables
120 #:database-list-tables-and-sequences
121 #:database-table-exists-p
122 #:database-list-views
123 #:database-view-exists-p
124 #:database-list-indexes
125 #:database-list-table-indexes
126 #:database-index-exists-p
127 #:database-list-sequences
128 #:database-sequence-last
129 #:database-sequence-exists-p
130 #:database-list-attributes
131 #:database-attribute-type
132 #:database-describe-table
133 #:database-type-library-loaded
134 #:database-create
135 #:database-destroy
136 #:database-probe
137 #:database-list
139 #:db-backend-has-create/destroy-db?
140 #:db-type-has-views?
141 #:db-type-has-bigint?
142 #:db-type-has-union?
143 #:db-type-has-subqueries?
144 #:db-type-has-boolean-where?
145 #:db-type-transaction-capable?
146 #:db-type-has-fancy-math?
147 #:db-type-default-case
148 #:db-type-use-column-on-drop-index?
149 #:database-underlying-type
150 #:database-get-type-specifier
151 #:read-sql-value
152 #:database-output-sql-as-type
153 #:*loaded-database-types*
154 #:reload-database-types
155 #:is-database-open
157 ;; Large objects
158 #:database-create-large-object
159 #:database-write-large-object
160 #:database-read-large-object
161 #:database-delete-large-object
162 #:create-large-object
163 #:write-large-object
164 #:read-large-object
165 #:delete-large-object
167 ;; accessors for database class
168 #:name
169 #:connection-spec
170 #:transaction
171 #:transaction-level
172 #:conn-pool
173 #:command-recording-stream
174 #:result-recording-stream
175 #:record-caches
176 #:view-classes
177 #:database-type
178 #:database-state
179 #:attribute-cache
180 #:database-autocommit
182 ;; utils.lisp
183 #:without-interrupts
184 #:make-process-lock
185 #:with-process-lock
186 #:command-output
187 #:symbol-name-default-case
188 #:convert-to-db-default-case
189 #:ensure-keyword
190 #:getenv
191 #:number-to-sql-string
192 #:float-to-sql-string
193 #:sql-escape-quotes
194 #:sql-escape
195 #:in
197 ;; Generic backends
198 #:generic-postgresql-database
199 #:generic-odbc-database
203 ;; Shared exports for re-export by CLSQL package.
204 #1=(
206 ;; Condition system (conditions.lisp)
207 #:sql-user-error
208 #:sql-database-error
209 #:sql-database-data-error
210 #:sql-connection-error
211 #:sql-temporary-error
212 #:sql-timeout-error
213 #:sql-fatal-error
214 #:sql-error-error-id
215 #:sql-error-secondary-error-id
216 #:sql-error-database-message
217 ;; CLSQL Extensions
218 #:sql-condition
219 #:sql-error
220 #:sql-warning
221 #:sql-database-warning
222 #:*backend-warning-behavior*
224 ;; Connection/initialisation (base-classes.lisp, database.lisp,
225 ;; initialize.lisp)
226 #:*default-database-type*
227 #:*default-database*
228 #:*initialized-database-types*
229 #:initialize-database-type
230 #:connect
231 #:disconnect
232 #:*connect-if-exists*
233 #:connected-databases
234 #:database
235 #:database-name
236 #:reconnect
237 #:find-database
238 #:status
239 ;; CLSQL Extensions
240 #:with-database
241 #:with-default-database
242 #:disconnect-pooled
243 #:list-databases
244 #:create-database
245 #:destroy-database
246 #:probe-database
247 #:truncate-database
249 ;; I/O Recording (recording.lisp)
250 #:add-sql-stream
251 #:delete-sql-stream
252 #:list-sql-streams
253 #:sql-recording-p
254 #:sql-stream
255 #:start-sql-recording
256 #:stop-sql-recording
257 ;; CLSQL Extensions
258 #:record-sql-command
259 #:record-sql-result
261 ;; FDDL (fddl.lisp)
262 #:create-table
263 #:drop-table
264 #:list-tables
265 #:table-exists-p
266 #:list-attributes
267 #:attribute-type
268 #:list-attribute-types
269 #:*cache-table-queries-default*
270 #:create-view
271 #:drop-view
272 #:create-index
273 #:drop-index
274 ;; CLSQL Extensions
275 #:describe-table
276 #:list-views
277 #:view-exists-p
278 #:list-indexes
279 #:list-table-indexes
280 #:index-exists-p
281 #:create-sequence
282 #:drop-sequence
283 #:list-sequences
284 #:sequence-exists-p
285 #:sequence-next
286 #:sequence-last
287 #:set-sequence-position
289 ;; FDML (fdml.lisp)
290 #:select
291 #:cache-table-queries
292 #:*cache-table-queries-default*
293 #:delete-records
294 #:insert-records
295 #:update-records
296 #:execute-command
297 #:query
298 #:print-query
299 #:do-query
300 #:map-query
301 #:loop
302 ;; CLSQL Extensions
303 #:for-each-row
305 ;; Transaction handling (transaction.lisp)
306 #:with-transaction
307 #:commit
308 #:rollback
309 ;; CLSQL Extensions
310 #:commit-transaction
311 #:rollback-transaction
312 #:add-transaction-commit-hook
313 #:add-transaction-rollback-hook
314 #:start-transaction
315 #:in-transaction-p
316 #:database-start-transaction
317 #:database-abort-transaction
318 #:database-commit-transaction
319 #:transaction-level
320 #:transaction
321 #:autocommit
323 ;; OODDL (ooddl.lisp)
324 #:standard-db-object
325 #:def-view-class
326 #:create-view-from-class
327 #:drop-view-from-class
328 #:list-classes
329 #:universal-time
330 ;; CLSQL Extensions
331 #:view-table
332 #:bigint
333 #:varchar
334 #:*default-varchar-length*
336 ;; OODML (oodml.lisp)
337 #:instance-refreshed
338 #:update-objects-joins
339 #:*default-update-objects-max-len*
340 #:update-slot-from-record
341 #:update-instance-from-records
342 #:update-records-from-instance
343 #:update-record-from-slot
344 #:update-record-from-slots
345 #:delete-instance-records
346 ;; CLSQL Extensions
347 #:*db-auto-sync*
349 ;; Symbolic SQL Syntax (syntax.lisp)
350 #:sql
351 #:sql-expression
352 #:sql-operation
353 #:sql-operator
354 #:disable-sql-reader-syntax
355 #:enable-sql-reader-syntax
356 #:locally-disable-sql-reader-syntax
357 #:locally-enable-sql-reader-syntax
358 #:restore-sql-reader-syntax-state
360 ;; SQL operations (operations.lisp)
361 #:sql-query
362 #:sql-object-query
363 #:sql-any
364 #:sql-some
365 #:sql-all
366 #:sql-not
367 #:sql-union
368 #:sql-intersect
369 #:sql-minus
370 #:sql-except
371 #:sql-order-by
372 #:sql-null
373 #:sql-*
374 #:sql-+
375 #:sql-/
376 #:sql--
377 #:sql-like
378 #:sql-and
379 #:sql-or
380 #:sql-in
381 #:sql-concat
382 #:sql-substr
383 #:sql-=
384 #:sql-<
385 #:sql->
386 #:sql->=
387 #:sql-<=
388 #:sql-<>
389 #:sql-count
390 #:sql-max
391 #:sql-min
392 #:sql-avg
393 #:sql-sum
394 #:sql-function
395 #:sql-between
396 #:sql-distinct
397 #:sql-nvl
398 #:sql-slot-value
399 ;; CLSQL Extensions
400 #:sql-limit
401 #:sql-group-by
402 #:sql-having
403 #:sql-not-null
404 #:sql-exists
405 #:sql-uplike
406 #:sql-is
407 #:sql-==
408 #:sql-the
409 #:sql-coalesce
410 #:sql-view-class
412 ;; Time handling (time.lisp)
413 #:bad-component
414 #:current-day
415 #:current-month
416 #:current-year
417 #:day-duration
418 #:db-timestring
419 #:decode-duration
420 #:decode-time
421 #:duration
422 #:duration+
423 #:duration<
424 #:duration<=
425 #:duration=
426 #:duration>
427 #:duration>=
428 #:duration-day
429 #:duration-hour
430 #:duration-minute
431 #:duration-month
432 #:duration-second
433 #:duration-year
434 #:duration-reduce
435 #:duration-timestring
436 #:extract-roman
437 #:format-duration
438 #:format-time
439 #:get-time
440 #:utime->time
441 #:interval-clear
442 #:interval-contained
443 #:interval-data
444 #:interval-edit
445 #:interval-end
446 #:interval-match
447 #:interval-push
448 #:interval-relation
449 #:interval-start
450 #:interval-type
451 #:make-duration
452 #:make-interval
453 #:make-time
454 #:merged-time
455 #:midnight
456 #:month-name
457 #:parse-date-time
458 #:parse-timestring
459 #:parse-yearstring
460 #:print-date
461 #:roll
462 #:roll-to
463 #:time
464 #:time+
465 #:time-
466 #:time-by-adding-duration
467 #:time-compare
468 #:time-difference
469 #:time-dow
470 #:time-element
471 #:time-max
472 #:time-min
473 #:time-mjd
474 #:time-msec
475 #:time-p
476 #:time-sec
477 #:time-well-formed
478 #:time-ymd
479 #:time<
480 #:time<=
481 #:time=
482 #:time>
483 #:time>=
484 #:timezone
485 #:universal-time
486 #:wall-time
487 #:wall-timestring
488 #:week-containing
489 #:gregorian-to-mjd
490 #:mjd-to-gregorian
492 (:documentation "This is the INTERNAL SQL-Interface package of CLSQL."))
495 (defpackage #:clsql
496 (:use #:common-lisp)
497 (:import-from #:clsql-sys . #1#)
498 (:export . #1#)
499 (:documentation "This is the user package with CLSQL symbols."))
501 (defpackage #:clsql-user
502 (:use #:common-lisp)
503 (:import-from #:clsql-sys . #1#)
504 (:export . #1#)
505 (:documentation "This is the user package with CLSQL symbols."))
507 ;; This is from USQL's pcl-patch
508 #+(or clsql-sbcl-pcl clsql-cmucl-pcl)
509 (progn
510 ;; Note that this will no longer required for cmucl as of version 19a.
511 (in-package #+cmu :pcl #+sbcl :sb-pcl)
512 (defmacro pv-binding1 ((pv calls pv-table-symbol pv-parameters slot-vars)
513 &body body)
514 `(pv-env (,pv ,calls ,pv-table-symbol ,pv-parameters)
515 (let (,@(mapcar #'(lambda (slot-var p) `(,slot-var (get-slots-or-nil ,p)))
516 slot-vars pv-parameters))
517 ,@(mapcar #'(lambda (slot-var) `(declare (ignorable ,slot-var))) slot-vars)
518 ,@body))))
520 ;; see http://thread.gmane.org/gmane.lisp.lispworks.general/681
521 #+lispworks
522 (setf *packages-for-warn-on-redefinition*
523 (delete "SQL" *packages-for-warn-on-redefinition* :test 'string=))
525 #+sbcl
526 (if (find-package 'sb-mop)
527 (setq cl:*features* (delete :clsql-sbcl-mop cl:*features*))
528 (setq cl:*features* (delete :clsql-sbcl-pcl cl:*features*)))
530 #+cmu
531 (if (find-package 'mop)
532 (setq cl:*features* (delete :clsql-cmucl-mop cl:*features*))
533 (setq cl:*features* (delete :clsql-cmucl-pcl cl:*features*)))
535 ) ;eval-when