From 16d3edf5be938f231eac0b2cec787d7f1adace49 Mon Sep 17 00:00:00 2001 From: Neil Gentleman Date: Fri, 8 Aug 2014 18:25:06 -0700 Subject: [PATCH] check for reserved keyword after downcasing uppercase USER isn't reserved, but lowercase is --- src/pgsql/schema.lisp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/pgsql/schema.lisp b/src/pgsql/schema.lisp index b0f22d5..122ae93 100644 --- a/src/pgsql/schema.lisp +++ b/src/pgsql/schema.lisp @@ -8,14 +8,13 @@ (defun apply-identifier-case (identifier case) "Return given IDENTIFIER with CASE handled to be PostgreSQL compatible." - (let ((case - (if (member identifier *pgsql-reserved-keywords* :test #'string=) - :quote - case))) - (ecase case - (:downcase (cl-ppcre:regex-replace-all - "[^a-zA-Z0-9.]" (string-downcase identifier) "_")) - (:quote (format nil "\"~a\"" identifier))))) + (ecase case + (:downcase (let ((lowered (cl-ppcre:regex-replace-all + "[^a-zA-Z0-9.]" (string-downcase identifier) "_"))) + (if (member lowered *pgsql-reserved-keywords* :test #'string=) + (format nil "\"~a\"" lowered) + lowered))) + (:quote (format nil "\"~a\"" identifier)))) ;;; ;;; Some parts of the logic here needs to be specialized depending on the