;;;; Programmers: Kevin M. Rosenberg and onShore Development Inc
;;;; Date Started: Mar 2002
;;;;
-;;;; $Id: usql.cl,v 1.1 2002/04/01 05:27:55 kevin Exp $
+;;;; $Id: usql.cl,v 1.7 2002/05/19 16:05:23 kevin Exp $
;;;;
;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;; and onShore Development Inc
(error "(rename-attribute ~a ~a ~a ~a) is not implemented" table oldatt newname database))
+(defclass %sql-expression ()
+ ())
+
;; For SQL Identifiers of generic type
(defclass sql-ident (%sql-expression)
((name
`(make-instance 'sql-ident :name ',name)))
-;; KMR -- change aref to more specific char
-(defun sql-escape (identifier)
- (let* ((unescaped (etypecase identifier
- (symbol (symbol-name identifier))
- (string identifier)))
- (escaped (make-string (length unescaped))))
- (dotimes (i (length unescaped))
- (setf (char escaped i)
- (cond ((equal (char unescaped i) #\-)
- #\_)
- ;; ...
- (t
- (char unescaped i)))))
- escaped))
-
-
(defun create-sequence (name &key (database *default-database*))
(database-create-sequence name database))
(defun sequence-next (name &key (database *default-database*))
(database-sequence-next name database))
-
-(defclass sql-typecast-exp (sql-value-exp)
- ()
- (:documentation
- "An SQL typecast expression.")
- )
-
-
(defclass sql-value-exp (%sql-expression)
((modifier
:initarg :modifier
"An SQL value expression.")
)
+(defclass sql-typecast-exp (sql-value-exp)
+ ()
+ (:documentation
+ "An SQL typecast expression.")
+ )
(defvar +null-string+ "NULL")
(defvar *sql-stream* nil
"stream which accumulates SQL output")
-(defclass %sql-expression ()
- ())
-
(defmethod output-sql ((expr %sql-expression) &optional
(database *default-database*))
(declare (ignore database))
(write-string +null-string+ *sql-stream*))
-#+ignore
(defmethod print-object ((self %sql-expression) stream)
(print-unreadable-object
(self stream :type t)
(write-string (sql-output self) stream)))
+
+;; Methods for translating high-level table classes to low-level functions
+
+(defmethod database-list-attributes ((table sql-ident) database)
+ (database-list-attributes (string-downcase
+ (symbol-name (slot-value table 'name)))
+ database)
+ )
+
+(defmethod database-attribute-type (attribute (table sql-ident) database)
+ (database-attribute-type attribute (string-downcase
+ (symbol-name (slot-value table 'name)))
+ database))