From 72f0ea8c6db74bd59809a9cd427969e85bfa0a78 Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Sun, 19 May 2002 16:05:23 +0000 Subject: [PATCH] r2059: cleanup sql-escape* functions --- base/package.cl | 4 ++-- base/utils.cl | 22 +++++++++++++++++++--- sql/usql.cl | 18 +----------------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/base/package.cl b/base/package.cl index 30fc9a5..ceb525c 100644 --- a/base/package.cl +++ b/base/package.cl @@ -8,7 +8,7 @@ ;;;; Original code by Pierre R. Mai ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: package.cl,v 1.3 2002/05/15 17:21:29 kevin Exp $ +;;;; $Id: package.cl,v 1.4 2002/05/19 16:05:22 kevin Exp $ ;;;; ;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; and Copyright (c) 1999-2001 by Pierre R. Mai @@ -120,7 +120,7 @@ ;; utils.cl #:number-to-sql-string #:float-to-sql-string - #:sql-escape + #:sql-escape-quotes ;; For UncommonSQL support #:sql-ident diff --git a/base/utils.cl b/base/utils.cl index b64824c..de028aa 100644 --- a/base/utils.cl +++ b/base/utils.cl @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Mar 2002 ;;;; -;;;; $Id: utils.cl,v 1.2 2002/05/15 17:23:59 kevin Exp $ +;;;; $Id: utils.cl,v 1.3 2002/05/19 16:05:22 kevin Exp $ ;;;; ;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -32,8 +32,24 @@ "Convert exponent character for SQL" (substitute #\e #\f (substitute #\e #\d (write-to-string num :readably t)))) -(defun sql-escape (s) - "Escape single quotes for SQL" +(defun sql-escape (identifier) + "Change hyphens to underscores, ensure string" + (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 sql-escape-quotes (s) + "Escape quotes for SQL string writing" (substitute-string-for-char s #\' "''")) (defun substitute-string-for-char (procstr match-char subst-str) diff --git a/sql/usql.cl b/sql/usql.cl index d2a53ec..1a87098 100644 --- a/sql/usql.cl +++ b/sql/usql.cl @@ -8,7 +8,7 @@ ;;;; Programmers: Kevin M. Rosenberg and onShore Development Inc ;;;; Date Started: Mar 2002 ;;;; -;;;; $Id: usql.cl,v 1.6 2002/04/07 15:11:21 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 @@ -74,22 +74,6 @@ specifies the database to operation on, defaulting to `(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)) -- 2.34.1