:initform "NULL")
(type
:initarg :type
- :initform "NULL")
- (params
- :initarg :params
- :initform nil))
+ :initform "NULL"))
(:documentation "An SQL Attribute identifier."))
(defmethod collect-table-refs (sql)
:type ',type)))
(defmethod output-sql ((expr sql-ident-attribute) database)
- (with-slots (qualifier name type params)
+ (with-slots (qualifier name type)
expr
(if (and (not qualifier) (not type))
(write-string (sql-escape (convert-to-db-default-case
(defmethod output-sql-hash-key ((expr sql-ident-attribute) database)
(declare (ignore database))
- (with-slots (qualifier name type params)
+ (with-slots (qualifier name type)
expr
- (list 'sql-ident-attribute qualifier name type params)))
+ (list 'sql-ident-attribute qualifier name type)))
;; For SQL Identifiers for tables
(defclass sql-ident-table (sql-ident)
(if (stringp db-type) db-type ; override definition
(database-get-type-specifier (car type) (cdr type) database))
*sql-stream*)
- (let ((constraints
- (database-constraint-statement constraints database)))
+ (let ((constraints (database-constraint-statement
+ (if (and db-type (symbolp db-type))
+ (cons db-type constraints)
+ constraints)
+ database)))
(when constraints
(write-string " " *sql-stream*)
(write-string constraints *sql-stream*)))))))
(defparameter *constraint-types*
(list
(cons (symbol-name-default-case "NOT-NULL") "NOT NULL")
- (cons (symbol-name-default-case "PRIMARY-KEY") "PRIMARY KEY")))
+ (cons (symbol-name-default-case "PRIMARY-KEY") "PRIMARY KEY")
+ (cons (symbol-name-default-case "NOT") "NOT")
+ (cons (symbol-name-default-case "NULL") "NULL")
+ (cons (symbol-name-default-case "PRIMARY") "PRIMARY")
+ (cons (symbol-name-default-case "KEY") "KEY")))
;;
;; Convert type spec to sql syntax
(let ((output (assoc (symbol-name constraint) *constraint-types*
:test #'equal)))
(if (null output)
- (error 'clsql-sql-syntax-error
- :reason (format nil "unsupported column constraint '~a'"
- constraint))
+ (error 'sql-user-error
+ :message (format nil "unsupported column constraint '~A'"
+ constraint))
(cdr output))))
(defmethod database-constraint-statement (constraint-list database)
*constraint-types*
:test #'equal)))
(if (null output)
- (error 'clsql-sql-syntax-error
- :reason (format nil "unsupported column constraint '~a'"
- constraint))
+ (error 'sql-user-error
+ :message (format nil "unsupported column constraint '~A'"
+ constraint))
(setq string (concatenate 'string string (cdr output))))
(if (< 1 (length constraint))
(setq string (concatenate 'string string " "))))))))