You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by jg...@apache.org on 2009/01/02 04:44:52 UTC

svn commit: r730666 - in /ibatis/trunk/java/tools/ibator/core: build/ doc/ htmldoc/ htmldoc/configreference/ src/org/apache/ibatis/ibator/config/ src/org/apache/ibatis/ibator/internal/db/ src/org/apache/ibatis/ibator/internal/rules/ testJava2/ibatortes...

Author: jgbutler
Date: Thu Jan  1 19:44:52 2009
New Revision: 730666

URL: http://svn.apache.org/viewvc?rev=730666&view=rev
Log:
[Ibator] Changes for IBATIS-571 - auto delimiting of SQL Keywords

Added:
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/SqlReservedWords.java
Modified:
    ibatis/trunk/java/tools/ibator/core/build/version.properties
    ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt
    ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ibatorContext.html
    ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/IbatorContext.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/PropertyRegistry.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/DatabaseIntrospector.java
    ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/rules/IbatorRulesDelegate.java
    ibatis/trunk/java/tools/ibator/core/testJava2/ibatortest/java2/CreateDB.sql
    ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/CreateDB.sql
    ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/BaseMiscellaneousTest.java
    ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/MiscellaneousTests.java
    ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/SqlMapConfig.xml
    ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/ibatorConfig.xml

Modified: ibatis/trunk/java/tools/ibator/core/build/version.properties
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/build/version.properties?rev=730666&r1=730665&r2=730666&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/build/version.properties (original)
+++ ibatis/trunk/java/tools/ibator/core/build/version.properties Thu Jan  1 19:44:52 2009
@@ -1,4 +1,4 @@
 #Ibator build version info
-#Sun Dec 28 16:25:29 CST 2008
+#Thu Jan 01 19:08:47 CST 2009
 version=1.2.1
-buildNum=683
+buildNum=696

Modified: ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt?rev=730666&r1=730665&r2=730666&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt (original)
+++ ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt Thu Jan  1 19:44:52 2009
@@ -1,4 +1,11 @@
 -------------------------------------------------------------------------------
+Version 1.2.2:
+
+Enhancements:
+1. IBATIS-569 - Make it easier to override IbatorRules in plugins
+2. IBATIS-571 - Added "autoDelimitKeywords" support to <ibatorContext>
+
+-------------------------------------------------------------------------------
 Version 1.2.1:
 
 Bugs:

Modified: ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ibatorContext.html
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ibatorContext.html?rev=730666&r1=730665&r2=730666&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ibatorContext.html (original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/configreference/ibatorContext.html Thu Jan  1 19:44:52 2009
@@ -148,6 +148,20 @@
     <th>Property Values</th>
   </tr>
   <tr>
+    <td valign="top">autoDelimitKeywords</td>
+    <td>If true, then Ibator will delimit SQL keywords if they are used as
+      column names in tables.
+      Ibator maintains a list of SQL keywords
+      for many different databases.  However, the list may not be
+      totally comprehensive.  If a particular keyword is not on Ibator's
+      list, you may force the column to be delimited with a
+      <code>&lt;columnOverride&gt;</code>.<p/>
+      <p>See the source code for the class
+      <code>org.apache.ibatis.ibator.internal.db.SqlReservedWords</code>
+      for a list of keywords recognized by Ibator.</p>
+      <p><i>The default value is false.</i></p></td>
+  </tr>
+  <tr>
     <td valign="top">suppressTypeWarnings</td>
     <td>If true, then Ibator will add an annotation to any method
       that uses a non-parameterized type to suppress compiler type warnings.

Modified: ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html?rev=730666&r1=730665&r2=730666&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html (original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html Thu Jan  1 19:44:52 2009
@@ -16,6 +16,24 @@
 </div>
 
 <h1>What's New in Ibator</h1>
+<h2>Version 1.2.2</h2>
+<h3>Bugs Fixed</h3>
+<ul>
+</ul>
+
+<h3>Enhancements</h3>
+<ul>
+  <li>IBATIS-569 - Modified the IbatorRules implementation to make it easier
+   for plugins to provide custom implementations of IbatorRules.  See the 
+   Javadoc for the new class
+   <code>org.apache.ibatis.ibator.internal.rules.IbatorRulesDelegate</code>
+   for more information.</li>
+  <li>IBATIS-571 - Added support for automatically delimiting SQL keywords
+   if they are used as column names in tables.  See the 
+   <a href="configreference/ibatorContext.html">&lt;ibatorContext&gt;</a> page for detailed
+   for more information.</li>
+</ul>
+
 <h2>Version 1.2.1</h2>
 <h3>Bugs Fixed</h3>
 <ul>

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/IbatorContext.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/IbatorContext.java?rev=730666&r1=730665&r2=730666&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/IbatorContext.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/IbatorContext.java Thu Jan  1 19:44:52 2009
@@ -75,6 +75,8 @@
 
     private String introspectedColumnImpl;
     
+    private Boolean autoDelimitKeywords;
+    
     /**
      * Constructs an IbatorContext object.
      * 
@@ -253,7 +255,7 @@
             xmlElement.addAttribute(new Attribute(
                     "targetRuntime", targetRuntime)); //$NON-NLS-1$
         }
-
+        
         addPropertyXmlElements(xmlElement);
 
         if (commentGeneratorConfiguration != null) {
@@ -309,6 +311,10 @@
             beginningDelimiter = value;
         } else if (PropertyRegistry.CONTEXT_ENDING_DELIMITER.equals(name)) {
             endingDelimiter = value;
+        } else if (PropertyRegistry.CONTEXT_AUTO_DELIMIT_KEYWORDS.equals(name)) {
+            if (StringUtility.stringHasValue(value)) {
+                autoDelimitKeywords = new Boolean(StringUtility.isTrue(value));
+            }
         }
     }
 
@@ -527,4 +533,8 @@
             }
         }
     }
+    
+    public boolean autoDelimitKeywords() {
+        return autoDelimitKeywords != null && autoDelimitKeywords.booleanValue();
+    }
 }

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/PropertyRegistry.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/PropertyRegistry.java?rev=730666&r1=730665&r2=730666&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/PropertyRegistry.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/config/PropertyRegistry.java Thu Jan  1 19:44:52 2009
@@ -48,6 +48,7 @@
     public static final String CONTEXT_SUPPRESS_TYPE_WARNINGS = "suppressTypeWarnings"; //$NON-NLS-1$
     public static final String CONTEXT_BEGINNING_DELIMITER = "beginningDelimiter"; //$NON-NLS-1$
     public static final String CONTEXT_ENDING_DELIMITER = "endingDelimiter"; //$NON-NLS-1$
+    public static final String CONTEXT_AUTO_DELIMIT_KEYWORDS = "autoDelimitKeywords"; //$NON-NLS-1$
 
     public static final String DAO_EXAMPLE_METHOD_VISIBILITY = "exampleMethodVisibility"; //$NON-NLS-1$
     public static final String DAO_METHOD_NAME_CALCULATOR = "methodNameCalculator"; //$NON-NLS-1$

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/DatabaseIntrospector.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/DatabaseIntrospector.java?rev=730666&r1=730665&r2=730666&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/DatabaseIntrospector.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/DatabaseIntrospector.java Thu Jan  1 19:44:52 2009
@@ -257,6 +257,12 @@
                     }
                     
                 }
+                
+                if (ibatorContext.autoDelimitKeywords()) {
+                    if (SqlReservedWords.containsWord(introspectedColumn.getActualColumnName())) {
+                        introspectedColumn.setColumnNameDelimited(true);
+                    }
+                }
             }
         }
     }

Added: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/SqlReservedWords.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/SqlReservedWords.java?rev=730666&view=auto
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/SqlReservedWords.java (added)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/db/SqlReservedWords.java Thu Jan  1 19:44:52 2009
@@ -0,0 +1,981 @@
+/*
+ *  Copyright 2008 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.ibatis.ibator.internal.db;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * This class contains a somewhat comprehensive list of SQL
+ * reserved words.  Since different databases have different
+ * reserved words, this list is inclusive of many different databases -
+ * so it may include words that are not reserved in some
+ * databases.
+ * 
+ * This list is based on the list from Drupal Handbook:
+ *   http://drupal.org/node/141051
+ * With additions for DB2 
+ * 
+ * @author Jeff Butler
+ *
+ */
+public class SqlReservedWords {
+    
+    private static Set<String> RESERVED_WORDS;
+    
+    static {
+        String[] words = {
+                "A",
+                "ABORT",
+                "ABS",
+                "ABSOLUTE",
+                "ACCESS",
+                "ACTION",
+                "ADA",
+                "ADD",  // DB2
+                "ADMIN",
+                "AFTER",  // DB2
+                "AGGREGATE",
+                "ALIAS",  // DB2
+                "ALL",  // DB2
+                "ALLOCATE",  // DB2
+                "ALLOW",  // DB2
+                "ALSO",
+                "ALTER",  // DB2
+                "ALWAYS",
+                "ANALYSE",
+                "ANALYZE",
+                "AND",  // DB2
+                "ANY",  // DB2
+                "APPLICATION",  // DB2
+                "ARE",
+                "ARRAY",
+                "AS",  // DB2
+                "ASC",
+                "ASENSITIVE",
+                "ASSERTION",
+                "ASSIGNMENT",
+                "ASSOCIATE",  // DB2
+                "ASUTIME",  // DB2
+                "ASYMMETRIC",
+                "AT",
+                "ATOMIC",
+                "ATTRIBUTE",
+                "ATTRIBUTES",
+                "AUDIT",  // DB2
+                "AUTHORIZATION",  // DB2
+                "AUTO_INCREMENT",
+                "AUX",  // DB2
+                "AUXILIARY",  // DB2
+                "AVG",
+                "AVG_ROW_LENGTH",
+                "BACKUP",
+                "BACKWARD",
+                "BEFORE",  // DB2
+                "BEGIN",  // DB2
+                "BERNOULLI",
+                "BETWEEN",  // DB2
+                "BIGINT",
+                "BINARY",  // DB2
+                "BIT",
+                "BIT_LENGTH",
+                "BITVAR",
+                "BLOB",
+                "BOOL",
+                "BOOLEAN",
+                "BOTH",
+                "BREADTH",
+                "BREAK",
+                "BROWSE",
+                "BUFFERPOOL",  // DB2
+                "BULK",
+                "BY",  // DB2
+                "C",
+                "CACHE",  // DB2
+                "CALL",  // DB2
+                "CALLED",  // DB2
+                "CAPTURE",  // DB2
+                "CARDINALITY",  // DB2
+                "CASCADE",
+                "CASCADED",  // DB2
+                "CASE",  // DB2
+                "CAST",  // DB2
+                "CATALOG",
+                "CATALOG_NAME",
+                "CCSID",  // DB2
+                "CEIL",
+                "CEILING",
+                "CHAIN",
+                "CHANGE",
+                "CHAR",  // DB2
+                "CHAR_LENGTH",
+                "CHARACTER",  // DB2
+                "CHARACTER_LENGTH",
+                "CHARACTER_SET_CATALOG",
+                "CHARACTER_SET_NAME",
+                "CHARACTER_SET_SCHEMA",
+                "CHARACTERISTICS",
+                "CHARACTERS",
+                "CHECK",  // DB2
+                "CHECKED",
+                "CHECKPOINT",
+                "CHECKSUM",
+                "CLASS",
+                "CLASS_ORIGIN",
+                "CLOB",
+                "CLOSE",  // DB2
+                "CLUSTER",  // DB2
+                "CLUSTERED",
+                "COALESCE",
+                "COBOL",
+                "COLLATE",
+                "COLLATION",
+                "COLLATION_CATALOG",
+                "COLLATION_NAME",
+                "COLLATION_SCHEMA",
+                "COLLECT",
+                "COLLECTION",  // DB2
+                "COLLID",  // DB2
+                "COLUMN",  // DB2
+                "COLUMN_NAME",
+                "COLUMNS",
+                "COMMAND_FUNCTION",
+                "COMMAND_FUNCTION_CODE",
+                "COMMENT",  // DB2
+                "COMMIT",  // DB2
+                "COMMITTED",
+                "COMPLETION",
+                "COMPRESS",
+                "COMPUTE",
+                "CONCAT",  // DB2
+                "CONDITION",  // DB2
+                "CONDITION_NUMBER",
+                "CONNECT",  // DB2
+                "CONNECTION",  // DB2
+                "CONNECTION_NAME",
+                "CONSTRAINT",  // DB2
+                "CONSTRAINT_CATALOG",
+                "CONSTRAINT_NAME",
+                "CONSTRAINT_SCHEMA",
+                "CONSTRAINTS",
+                "CONSTRUCTOR",
+                "CONTAINS",  // DB2
+                "CONTAINSTABLE",
+                "CONTINUE",  // DB2
+                "CONVERSION",
+                "CONVERT",
+                "COPY",
+                "CORR",
+                "CORRESPONDING",
+                "COUNT",  // DB2
+                "COUNT_BIG",  // DB2
+                "COVAR_POP",
+                "COVAR_SAMP",
+                "CREATE",  // DB2
+                "CREATEDB",
+                "CREATEROLE",
+                "CREATEUSER",
+                "CROSS",  // DB2
+                "CSV",
+                "CUBE",
+                "CUME_DIST",
+                "CURRENT",  // DB2
+                "CURRENT_DATE",  // DB2
+                "CURRENT_DEFAULT_TRANSFORM_GROUP",
+                "CURRENT_LC_CTYPE",  // DB2
+                "CURRENT_PATH",  // DB2
+                "CURRENT_ROLE",
+                "CURRENT_SERVER",  // DB2
+                "CURRENT_TIME",  // DB2
+                "CURRENT_TIMESTAMP",  // DB2
+                "CURRENT_TIMEZONE",  // DB2
+                "CURRENT_TRANSFORM_GROUP_FOR_TYPE",
+                "CURRENT_USER",  // DB2
+                "CURSOR",  // DB2
+                "CURSOR_NAME",
+                "CYCLE",  // DB2
+                "DATA",  // DB2
+                "DATABASE",  // DB2
+                "DATABASES",
+                "DATE",
+                "DATETIME",
+                "DATETIME_INTERVAL_CODE",
+                "DATETIME_INTERVAL_PRECISION",
+                "DAY",  // DB2
+                "DAY_HOUR",
+                "DAY_MICROSECOND",
+                "DAY_MINUTE",
+                "DAY_SECOND",
+                "DAYOFMONTH",
+                "DAYOFWEEK",
+                "DAYOFYEAR",
+                "DAYS",  // DB2
+                "DB2GENERAL",  // DB2
+                "DB2GNRL",  // DB2
+                "DB2SQL",  // DB2
+                "DBCC",
+                "DBINFO",   // DB2
+                "DEALLOCATE",
+                "DEC",
+                "DECIMAL",
+                "DECLARE",  // DB2
+                "DEFAULT",  // DB2
+                "DEFAULTS",  // DB2
+                "DEFERRABLE",
+                "DEFERRED",
+                "DEFINED",
+                "DEFINER",
+                "DEFINITION",  // DB2
+                "DEGREE",
+                "DELAY_KEY_WRITE",
+                "DELAYED",
+                "DELETE",  // DB2
+                "DELIMITER",
+                "DELIMITERS",
+                "DENSE_RANK",
+                "DENY",
+                "DEPTH",
+                "DEREF",
+                "DERIVED",
+                "DESC",
+                "DESCRIBE",
+                "DESCRIPTOR",  // DB2
+                "DESTROY",
+                "DESTRUCTOR",
+                "DETERMINISTIC",  // DB2
+                "DIAGNOSTICS",
+                "DICTIONARY",
+                "DISABLE",
+                "DISALLOW",   // DB2
+                "DISCONNECT",  // DB2
+                "DISK",
+                "DISPATCH",
+                "DISTINCT",  // DB2
+                "DISTINCTROW",
+                "DISTRIBUTED",
+                "DIV",
+                "DO",  // DB2
+                "DOMAIN",
+                "DOUBLE",  // DB2
+                "DROP",  // DB2
+                "DSNHATTR",  // DB2
+                "DSSIZE",  // DB2
+                "DUAL",
+                "DUMMY",
+                "DUMP",
+                "DYNAMIC",  // DB2
+                "DYNAMIC_FUNCTION",
+                "DYNAMIC_FUNCTION_CODE",
+                "EACH",  // DB2
+                "EDITPROC",  // DB2
+                "ELEMENT",
+                "ELSE",  // DB2
+                "ELSEIF",  // DB2
+                "ENABLE",
+                "ENCLOSED",
+                "ENCODING",  // DB2
+                "ENCRYPTED",
+                "END",  // DB2
+                "END-EXEC",  // DB2
+                "END-EXEC1",  // DB2
+                "ENUM",
+                "EQUALS",
+                "ERASE",  // DB2
+                "ERRLVL",
+                "ESCAPE",  // DB2
+                "ESCAPED",
+                "EVERY",
+                "EXCEPT",  // DB2
+                "EXCEPTION",  // DB2
+                "EXCLUDE",
+                "EXCLUDING",  // DB2
+                "EXCLUSIVE",
+                "EXEC",
+                "EXECUTE",  // DB2
+                "EXISTING",
+                "EXISTS",  // DB2
+                "EXIT",  // DB2
+                "EXP",
+                "EXPLAIN",
+                "EXTERNAL",  // DB2
+                "EXTRACT",
+                "FALSE",
+                "FENCED",  // DB2
+                "FETCH",  // DB2
+                "FIELDPROC",  // DB2
+                "FIELDS",
+                "FILE",  // DB2
+                "FILLFACTOR",
+                "FILTER",
+                "FINAL",  // DB2
+                "FIRST",
+                "FLOAT",
+                "FLOAT4",
+                "FLOAT8",
+                "FLOOR",
+                "FLUSH",
+                "FOLLOWING",
+                "FOR",  // DB2
+                "FORCE",
+                "FOREIGN",  // DB2
+                "FORTRAN",
+                "FORWARD",
+                "FOUND",
+                "FREE",  // DB2
+                "FREETEXT",
+                "FREETEXTTABLE",
+                "FREEZE",
+                "FROM",  // DB2
+                "FULL",  // DB2
+                "FULLTEXT",
+                "FUNCTION",  // DB2
+                "FUSION",
+                "G",
+                "GENERAL",  // DB2
+                "GENERATED",  // DB2
+                "GET",  // DB2
+                "GLOBAL",  // DB2
+                "GO",  // DB2
+                "GOTO",  // DB2
+                "GRANT",  // DB2
+                "GRANTED",
+                "GRANTS",
+                "GRAPHIC",  // DB2
+                "GREATEST",
+                "GROUP",  // DB2
+                "GROUPING",
+                "HANDLER",  // DB2
+                "HAVING",  // DB2
+                "HEADER",
+                "HEAP",
+                "HIERARCHY",
+                "HIGH_PRIORITY",
+                "HOLD",  // DB2
+                "HOLDLOCK",
+                "HOST",
+                "HOSTS",
+                "HOUR",  // DB2
+                "HOUR_MICROSECOND",
+                "HOUR_MINUTE",
+                "HOUR_SECOND",
+                "HOURS",  // DB2
+                "IDENTIFIED",
+                "IDENTITY",  // DB2
+                "IDENTITY_INSERT",
+                "IDENTITYCOL",
+                "IF",  // DB2
+                "IGNORE",
+                "ILIKE",
+                "IMMEDIATE",  // DB2
+                "IMMUTABLE",
+                "IMPLEMENTATION",
+                "IMPLICIT",
+                "IN",  // DB2
+                "INCLUDE",
+                "INCLUDING",  // DB2
+                "INCREMENT",  // DB2
+                "INDEX",  // DB2
+                "INDICATOR",  // DB2
+                "INFILE",
+                "INFIX",
+                "INHERIT",  // DB2
+                "INHERITS",
+                "INITIAL",
+                "INITIALIZE",
+                "INITIALLY",
+                "INNER",  // DB2
+                "INOUT",  // DB2
+                "INPUT",
+                "INSENSITIVE",  // DB2
+                "INSERT",  // DB2
+                "INSERT_ID",
+                "INSTANCE",
+                "INSTANTIABLE",
+                "INSTEAD",
+                "INT",
+                "INT1",
+                "INT2",
+                "INT3",
+                "INT4",
+                "INT8",
+                "INTEGER",
+                "INTEGRITY",   // DB2
+                "INTERSECT",
+                "INTERSECTION",
+                "INTERVAL",
+                "INTO",  // DB2
+                "INVOKER",
+                "IS",  // DB2
+                "ISAM",
+                "ISNULL",
+                "ISOBID",  // DB2
+                "ISOLATION",  // DB2
+                "ITERATE",  // DB2
+                "JAR",  // DB2
+                "JAVA",  // DB2
+                "JOIN",  // DB2
+                "K",
+                "KEY",  // DB2
+                "KEY_MEMBER",
+                "KEY_TYPE",
+                "KEYS",
+                "KILL",
+                "LABEL",  // DB2
+                "LANCOMPILER",
+                "LANGUAGE",  // DB2
+                "LARGE",
+                "LAST",
+                "LAST_INSERT_ID",
+                "LATERAL",
+                "LC_CTYPE",  // DB2
+                "LEADING",
+                "LEAST",
+                "LEAVE",  // DB2
+                "LEFT",  // DB2
+                "LENGTH",
+                "LESS",
+                "LEVEL",
+                "LIKE",  // DB2
+                "LIMIT",
+                "LINENO",
+                "LINES",
+                "LINKTYPE",  // DB2
+                "LISTEN",
+                "LN",
+                "LOAD",
+                "LOCAL",  // DB2
+                "LOCALE",  // DB2
+                "LOCALTIME",
+                "LOCALTIMESTAMP",
+                "LOCATION",
+                "LOCATOR",  // DB2
+                "LOCATORS",  // DB2
+                "LOCK",  // DB2
+                "LOCKMAX",  // DB2
+                "LOCKSIZE",  // DB2
+                "LOGIN",
+                "LOGS",
+                "LONG",  // DB2
+                "LONGBLOB",
+                "LONGTEXT",
+                "LOOP",  // DB2
+                "LOW_PRIORITY",
+                "LOWER",
+                "M",
+                "MAP",
+                "MATCH",
+                "MATCHED",
+                "MAX",
+                "MAX_ROWS",
+                "MAXEXTENTS",
+                "MAXVALUE",  // DB2
+                "MEDIUMBLOB",
+                "MEDIUMINT",
+                "MEDIUMTEXT",
+                "MEMBER",
+                "MERGE",
+                "MESSAGE_LENGTH",
+                "MESSAGE_OCTET_LENGTH",
+                "MESSAGE_TEXT",
+                "METHOD",
+                "MICROSECOND",  // DB2
+                "MICROSECONDS",  // DB2
+                "MIDDLEINT",
+                "MIN",
+                "MIN_ROWS",
+                "MINUS",
+                "MINUTE",  // DB2
+                "MINUTE_MICROSECOND",
+                "MINUTE_SECOND",
+                "MINUTES",  // DB2
+                "MINVALUE",  // DB2
+                "MLSLABEL",
+                "MOD",
+                "MODE",  // DB2
+                "MODIFIES",  // DB2
+                "MODIFY",
+                "MODULE",
+                "MONTH",  // DB2
+                "MONTHNAME",
+                "MONTHS",  // DB2
+                "MORE",
+                "MOVE",
+                "MULTISET",
+                "MUMPS",
+                "MYISAM",
+                "NAME",
+                "NAMES",
+                "NATIONAL",
+                "NATURAL",
+                "NCHAR",
+                "NCLOB",
+                "NESTING",
+                "NEW",  // DB2
+                "NEW_TABLE",  // DB2
+                "NEXT",
+                "NO",  // DB2
+                "NO_WRITE_TO_BINLOG",
+                "NOAUDIT",
+                "NOCACHE",  // DB2
+                "NOCHECK",
+                "NOCOMPRESS",
+                "NOCREATEDB",
+                "NOCREATEROLE",
+                "NOCREATEUSER",
+                "NOCYCLE",  // DB2
+                "NODENAME",  // DB2
+                "NODENUMBER",  // DB2
+                "NOINHERIT",
+                "NOLOGIN",
+                "NOMAXVALUE",  // DB2
+                "NOMINVALUE",  // DB2
+                "NONCLUSTERED",
+                "NONE",
+                "NOORDER",  // DB2
+                "NORMALIZE",
+                "NORMALIZED",
+                "NOSUPERUSER",
+                "NOT",  // DB2
+                "NOTHING",
+                "NOTIFY",
+                "NOTNULL",
+                "NOWAIT",
+                "NULL",  // DB2
+                "NULLABLE",
+                "NULLIF",
+                "NULLS",  // DB2
+                "NUMBER",
+                "NUMERIC",
+                "NUMPARTS",  // DB2
+                "OBID",  // DB2
+                "OBJECT",
+                "OCTET_LENGTH",
+                "OCTETS",
+                "OF",  // DB2
+                "OFF",
+                "OFFLINE",
+                "OFFSET",
+                "OFFSETS",
+                "OIDS",
+                "OLD",  // DB2
+                "OLD_TABLE",  // DB2
+                "ON",  // DB2
+                "ONLINE",
+                "ONLY",
+                "OPEN",  // DB2
+                "OPENDATASOURCE",
+                "OPENQUERY",
+                "OPENROWSET",
+                "OPENXML",
+                "OPERATION",
+                "OPERATOR",
+                "OPTIMIZATION",  // DB2
+                "OPTIMIZE",  // DB2
+                "OPTION",  // DB2
+                "OPTIONALLY",
+                "OPTIONS",
+                "OR",  // DB2
+                "ORDER",  // DB2
+                "ORDERING",
+                "ORDINALITY",
+                "OTHERS",
+                "OUT",  // DB2
+                "OUTER",  // DB2
+                "OUTFILE",
+                "OUTPUT",
+                "OVER",
+                "OVERLAPS",
+                "OVERLAY",
+                "OVERRIDING",  // DB2
+                "OWNER",
+                "PACK_KEYS",
+                "PACKAGE",  // DB2
+                "PAD",
+                "PARAMETER",  // DB2
+                "PARAMETER_MODE",
+                "PARAMETER_NAME",
+                "PARAMETER_ORDINAL_POSITION",
+                "PARAMETER_SPECIFIC_CATALOG",
+                "PARAMETER_SPECIFIC_NAME",
+                "PARAMETER_SPECIFIC_SCHEMA",
+                "PARAMETERS",
+                "PART",  // DB2
+                "PARTIAL",
+                "PARTITION",  // DB2
+                "PASCAL",
+                "PASSWORD",
+                "PATH",  // DB2
+                "PCTFREE",
+                "PERCENT",
+                "PERCENT_RANK",
+                "PERCENTILE_CONT",
+                "PERCENTILE_DISC",
+                "PIECESIZE",  // DB2
+                "PLACING",
+                "PLAN",  // DB2
+                "PLI",
+                "POSITION",  // DB2
+                "POSTFIX",
+                "POWER",
+                "PRECEDING",
+                "PRECISION",  // DB2
+                "PREFIX",
+                "PREORDER",
+                "PREPARE",  // DB2
+                "PREPARED",
+                "PRESERVE",
+                "PRIMARY",  // DB2
+                "PRINT",
+                "PRIOR",
+                "PRIQTY",  // DB2
+                "PRIVILEGES",  // DB2
+                "PROC",
+                "PROCEDURAL",
+                "PROCEDURE",  // DB2
+                "PROCESS",
+                "PROCESSLIST",
+                "PROGRAM",  // DB2
+                "PSID",  // DB2
+                "PUBLIC",
+                "PURGE",
+                "QUERYNO",  // DB2
+                "QUOTE",
+                "RAID0",
+                "RAISERROR",
+                "RANGE",
+                "RANK",
+                "RAW",
+                "READ",  // DB2
+                "READS",  // DB2
+                "READTEXT",
+                "REAL",
+                "RECHECK",
+                "RECONFIGURE",
+                "RECOVERY",  // DB2
+                "RECURSIVE",
+                "REF",
+                "REFERENCES",  // DB2
+                "REFERENCING",  // DB2
+                "REGEXP",
+                "REGR_AVGX",
+                "REGR_AVGY",
+                "REGR_COUNT",
+                "REGR_INTERCEPT",
+                "REGR_R2",
+                "REGR_SLOPE",
+                "REGR_SXX",
+                "REGR_SXY",
+                "REGR_SYY",
+                "REINDEX",
+                "RELATIVE",
+                "RELEASE",  // DB2
+                "RELOAD",
+                "RENAME",  // DB2
+                "REPEAT",  // DB2
+                "REPEATABLE",
+                "REPLACE",
+                "REPLICATION",
+                "REQUIRE",
+                "RESET",  // DB2
+                "RESIGNAL",  // DB2
+                "RESOURCE",
+                "RESTART",  // DB2
+                "RESTORE",
+                "RESTRICT",  // DB2
+                "RESULT",  // DB2
+                "RESULT_SET_LOCATOR",  // DB2
+                "RETURN",  // DB2
+                "RETURNED_CARDINALITY",
+                "RETURNED_LENGTH",
+                "RETURNED_OCTET_LENGTH",
+                "RETURNED_SQLSTATE",
+                "RETURNS",  // DB2
+                "REVOKE",  // DB2
+                "RIGHT",  // DB2
+                "RLIKE",
+                "ROLE",
+                "ROLLBACK",  // DB2
+                "ROLLUP",
+                "ROUTINE",  // DB2
+                "ROUTINE_CATALOG",
+                "ROUTINE_NAME",
+                "ROUTINE_SCHEMA",
+                "ROW",  // DB2
+                "ROW_COUNT",
+                "ROW_NUMBER",
+                "ROWCOUNT",
+                "ROWGUIDCOL",
+                "ROWID",
+                "ROWNUM",
+                "ROWS",  // DB2
+                "RRN",  // DB2
+                "RULE",
+                "RUN",  // DB2
+                "SAVE",
+                "SAVEPOINT",  // DB2
+                "SCALE",
+                "SCHEMA",  // DB2
+                "SCHEMA_NAME",
+                "SCHEMAS",
+                "SCOPE",
+                "SCOPE_CATALOG",
+                "SCOPE_NAME",
+                "SCOPE_SCHEMA",
+                "SCRATCHPAD",  // DB2
+                "SCROLL",
+                "SEARCH",
+                "SECOND",  // DB2
+                "SECOND_MICROSECOND",
+                "SECONDS",  // DB2
+                "SECQTY",  // DB2
+                "SECTION",
+                "SECURITY",  // DB2
+                "SELECT",  // DB2
+                "SELF",
+                "SENSITIVE",  // DB2
+                "SEPARATOR",
+                "SEQUENCE",
+                "SERIALIZABLE",
+                "SERVER_NAME",
+                "SESSION",
+                "SESSION_USER",
+                "SET",  // DB2
+                "SETOF",
+                "SETS",
+                "SETUSER",
+                "SHARE",
+                "SHOW",
+                "SHUTDOWN",
+                "SIGNAL",  // DB2
+                "SIMILAR",
+                "SIMPLE",  // DB2
+                "SIZE",
+                "SMALLINT",
+                "SOME",  // DB2
+                "SONAME",
+                "SOURCE",  // DB2
+                "SPACE",
+                "SPATIAL",
+                "SPECIFIC",  // DB2
+                "SPECIFIC_NAME",
+                "SPECIFICTYPE",
+                "SQL",  // DB2
+                "SQL_BIG_RESULT",
+                "SQL_BIG_SELECTS",
+                "SQL_BIG_TABLES",
+                "SQL_CALC_FOUND_ROWS",
+                "SQL_LOG_OFF",
+                "SQL_LOG_UPDATE",
+                "SQL_LOW_PRIORITY_UPDATES",
+                "SQL_SELECT_LIMIT",
+                "SQL_SMALL_RESULT",
+                "SQL_WARNINGS",
+                "SQLCA",
+                "SQLCODE",
+                "SQLERROR",
+                "SQLEXCEPTION",
+                "SQLID",  // DB2
+                "SQLSTATE",
+                "SQLWARNING",
+                "SQRT",
+                "SSL",
+                "STABLE",
+                "STANDARD",  // DB2
+                "START",  // DB2
+                "STARTING",
+                "STATE",
+                "STATEMENT",
+                "STATIC",  // DB2
+                "STATISTICS",
+                "STATUS",
+                "STAY",  // DB2
+                "STDDEV_POP",
+                "STDDEV_SAMP",
+                "STDIN",
+                "STDOUT",
+                "STOGROUP",  // DB2
+                "STORAGE",
+                "STORES",  // DB2
+                "STRAIGHT_JOIN",
+                "STRICT",
+                "STRING",
+                "STRUCTURE",
+                "STYLE",  // DB2
+                "SUBCLASS_ORIGIN",
+                "SUBLIST",
+                "SUBMULTISET",
+                "SUBPAGES",  // DB2
+                "SUBSTRING",  // DB2
+                "SUCCESSFUL",
+                "SUM",
+                "SUPERUSER",
+                "SYMMETRIC",
+                "SYNONYM",  // DB2
+                "SYSDATE",
+                "SYSFUN",  // DB2
+                "SYSIBM",  // DB2
+                "SYSID",
+                "SYSPROC",  // DB2
+                "SYSTEM",  // DB2
+                "SYSTEM_USER",
+                "TABLE",  // DB2
+                "TABLE_NAME",
+                "TABLES",
+                "TABLESAMPLE",
+                "TABLESPACE",  // DB2
+                "TEMP",
+                "TEMPLATE",
+                "TEMPORARY",
+                "TERMINATE",
+                "TERMINATED",
+                "TEXT",
+                "TEXTSIZE",
+                "THAN",
+                "THEN",  // DB2
+                "TIES",
+                "TIME",
+                "TIMESTAMP",
+                "TIMEZONE_HOUR",
+                "TIMEZONE_MINUTE",
+                "TINYBLOB",
+                "TINYINT",
+                "TINYTEXT",
+                "TO",  // DB2
+                "TOAST",
+                "TOP",
+                "TOP_LEVEL_COUNT",
+                "TRAILING",
+                "TRAN",
+                "TRANSACTION",  // DB2
+                "TRANSACTION_ACTIVE",
+                "TRANSACTIONS_COMMITTED",
+                "TRANSACTIONS_ROLLED_BACK",
+                "TRANSFORM",
+                "TRANSFORMS",
+                "TRANSLATE",
+                "TRANSLATION",
+                "TREAT",
+                "TRIGGER",  // DB2
+                "TRIGGER_CATALOG",
+                "TRIGGER_NAME",
+                "TRIGGER_SCHEMA",
+                "TRIM",  // DB2
+                "TRUE",
+                "TRUNCATE",
+                "TRUSTED",
+                "TSEQUAL",
+                "TYPE",  // DB2
+                "UESCAPE",
+                "UID",
+                "UNBOUNDED",
+                "UNCOMMITTED",
+                "UNDER",
+                "UNDO",  // DB2
+                "UNENCRYPTED",
+                "UNION",  // DB2
+                "UNIQUE",  // DB2
+                "UNKNOWN",
+                "UNLISTEN",
+                "UNLOCK",
+                "UNNAMED",
+                "UNNEST",
+                "UNSIGNED",
+                "UNTIL",  // DB2
+                "UPDATE",  // DB2
+                "UPDATETEXT",
+                "UPPER",
+                "USAGE",  // DB2
+                "USE",
+                "USER",  // DB2
+                "USER_DEFINED_TYPE_CATALOG",
+                "USER_DEFINED_TYPE_CODE",
+                "USER_DEFINED_TYPE_NAME",
+                "USER_DEFINED_TYPE_SCHEMA",
+                "USING",  // DB2
+                "UTC_DATE",
+                "UTC_TIME",
+                "UTC_TIMESTAMP",
+                "VACUUM",
+                "VALID",
+                "VALIDATE",
+                "VALIDATOR",
+                "VALIDPROC",  // DB2
+                "VALUE",
+                "VALUES",  // DB2
+                "VAR_POP",
+                "VAR_SAMP",
+                "VARBINARY",
+                "VARCHAR",
+                "VARCHAR2",
+                "VARCHARACTER",
+                "VARIABLE",  // DB2
+                "VARIABLES",
+                "VARIANT",  // DB2
+                "VARYING",
+                "VCAT",  // DB2
+                "VERBOSE",
+                "VIEW",  // DB2
+                "VOLATILE",
+                "VOLUMES",  // DB2
+                "WAITFOR",
+                "WHEN",  // DB2
+                "WHENEVER",
+                "WHERE",  // DB2
+                "WHILE",  // DB2
+                "WIDTH_BUCKET",
+                "WINDOW",
+                "WITH",  // DB2
+                "WITHIN",
+                "WITHOUT",
+                "WLM",  // DB2
+                "WORK",
+                "WRITE",  // DB2
+                "WRITETEXT",
+                "X509",
+                "XOR",
+                "YEAR",  // DB2
+                "YEAR_MONTH",
+                "YEARS",  // DB2
+                "ZEROFILL",
+                "ZONE"
+        };
+        
+        RESERVED_WORDS = new HashSet<String>(words.length);
+        
+        for (String word : words) {
+            RESERVED_WORDS.add(word);
+        }
+    }
+    
+    public static boolean containsWord(String word) {
+        boolean rc;
+       
+        if (word == null) {
+            rc = false;
+        } else {
+            rc = RESERVED_WORDS.contains(word.toUpperCase());
+        }
+        
+        return rc;
+    }
+
+    /**
+     * Utility class - no instances allowed
+     */
+    private SqlReservedWords() {
+    }
+}

Modified: ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/rules/IbatorRulesDelegate.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/rules/IbatorRulesDelegate.java?rev=730666&r1=730665&r2=730666&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/rules/IbatorRulesDelegate.java (original)
+++ ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/internal/rules/IbatorRulesDelegate.java Thu Jan  1 19:44:52 2009
@@ -23,7 +23,7 @@
  * This class can be used by plugins to easily implement a custom
  * rules implementation.  Plugins should respect the rules implementation
  * calculated by Ibator, as well as implementations from other plugins.
- * In general, if something is disabled by the default rules or is
+ * In general if something is disabled by the default rules, or is
  * disabled by some other plugin, it should not be re-enabled.
  * Therefore, the following pattern of use is recommended:
  * <pre>
@@ -36,7 +36,7 @@
  * }
  * 
  * public class MyRules extends IbatorRulesDelegate (
- *   public IbatorRulesDelegate(IbatorRules ibatorRules) {
+ *   public MyRules(IbatorRules ibatorRules) {
  *     super(ibatorRules);
  *   }
  *   
@@ -44,8 +44,9 @@
  *   public boolean generateInsert() {
  *     boolean rc = super.generateInsert();
  *     if (rc) {
- *       // other plugins and the default rules enable generation
- *       // we can decide to disable here.
+ *       // Other plugins, and the default rules, enable generation
+ *       // of the insert method.  We can decide to disable it here
+ *       // if needed.
  *     }
  *     
  *     return rc;

Modified: ibatis/trunk/java/tools/ibator/core/testJava2/ibatortest/java2/CreateDB.sql
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/testJava2/ibatortest/java2/CreateDB.sql?rev=730666&r1=730665&r2=730666&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/testJava2/ibatortest/java2/CreateDB.sql (original)
+++ ibatis/trunk/java/tools/ibator/core/testJava2/ibatortest/java2/CreateDB.sql Thu Jan  1 19:44:52 2009
@@ -32,6 +32,7 @@
   decimal100Field decimal(10, 0),
   decimal155Field decimal(15, 5),
   wierd$Field int,
+  "birth date" date,
   primary key (id1, id2)
 );
 
@@ -66,6 +67,7 @@
   "first Name" varchar(20),
   first_name varchar(20),
   firstName varchar(20),
+  "last name" varchar(20),
   E_MAIL varchar(20),
   _id1 int not null,
   $id2 int not null,

Modified: ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/CreateDB.sql
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/CreateDB.sql?rev=730666&r1=730665&r2=730666&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/CreateDB.sql (original)
+++ ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/CreateDB.sql Thu Jan  1 19:44:52 2009
@@ -6,6 +6,8 @@
 drop table FieldsBlobs if exists;
 drop table "awful table" if exists;
 drop table BlobsOnly if exists;
+drop table RegexRename if exists;
+drop table AnotherAwfulTable if exists;
 
 create table FieldsOnly (
   IntegerField int,
@@ -32,6 +34,7 @@
   decimal100Field decimal(10, 0),
   decimal155Field decimal(15, 5),
   wierd$Field int,
+  "birth date" date,
   primary key (id1, id2)
 );
 
@@ -66,6 +69,7 @@
   "first Name" varchar(20),
   first_name varchar(20),
   firstName varchar(20),
+  "last name" varchar(20),
   E_MAIL varchar(20),
   _id1 int not null,
   $id2 int not null,
@@ -91,3 +95,12 @@
   ZIP_CODE char(5),
   primary key(CUST_ID)
 );
+
+create table AnotherAwfulTable (
+  id int not null,
+  "select" varchar(30),
+  "insert" varchar(30),
+  "update" varchar(30),
+  "delete" varchar(30),
+  primary key(id)
+);

Modified: ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/BaseMiscellaneousTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/BaseMiscellaneousTest.java?rev=730666&r1=730665&r2=730666&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/BaseMiscellaneousTest.java (original)
+++ ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/BaseMiscellaneousTest.java Thu Jan  1 19:44:52 2009
@@ -1,7 +1,9 @@
 package ibatortest.execute.miscellaneous;
 
 import ibatortest.BaseTest;
+import ibatortest.generated.miscellaneous.dao.AnotherawfultableDAO;
 import ibatortest.generated.miscellaneous.dao.MyObjectDAO;
+import ibatortest.generated.miscellaneous.dao.impl.AnotherawfultableDAOImpl;
 import ibatortest.generated.miscellaneous.dao.impl.MyObjectDAOImpl;
 import ibatortest.generated.miscellaneous.dao.RegexrenameDAO;
 import ibatortest.generated.miscellaneous.dao.impl.RegexrenameDAOImpl;
@@ -23,4 +25,9 @@
         RegexrenameDAOImpl dao = new RegexrenameDAOImpl(getSqlMapClient());
         return dao;
     }
+    
+    protected AnotherawfultableDAO getAnotherawfultableDAO() {
+        AnotherawfultableDAO dao = new AnotherawfultableDAOImpl(getSqlMapClient());
+        return dao;
+    }
 }

Modified: ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/MiscellaneousTests.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/MiscellaneousTests.java?rev=730666&r1=730665&r2=730666&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/MiscellaneousTests.java (original)
+++ ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/MiscellaneousTests.java Thu Jan  1 19:44:52 2009
@@ -31,8 +31,10 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
+import ibatortest.generated.miscellaneous.dao.AnotherawfultableDAO;
 import ibatortest.generated.miscellaneous.dao.MyObjectDAO;
 import ibatortest.generated.miscellaneous.dao.RegexrenameDAO;
+import ibatortest.generated.miscellaneous.model.Anotherawfultable;
 import ibatortest.generated.miscellaneous.model.MyObject;
 import ibatortest.generated.miscellaneous.model.MyObjectCriteria;
 import ibatortest.generated.miscellaneous.model.MyObjectKey;
@@ -889,6 +891,28 @@
         } catch (SQLException e) {
             fail(e.getMessage());
         }
+    }
+    
+    public void testAnotherAwfulTableInsert() {
+        AnotherawfultableDAO dao = getAnotherawfultableDAO();
         
+        try {
+            Anotherawfultable record = new Anotherawfultable();
+            record.setId(5);
+            record.setSelect("select");
+            record.setInsert("insert");
+            
+            dao.insertAnotherawfultable(record);
+            
+            Anotherawfultable returnedRecord = dao.selectAnotherawfultableByPrimaryKey(5);
+            
+            assertEquals(record.getId(), returnedRecord.getId());
+            assertEquals(record.getSelect(), returnedRecord.getSelect());
+            assertEquals(record.getInsert(), returnedRecord.getInsert());
+            assertEquals(record.getUpdate(), returnedRecord.getUpdate());
+            assertEquals(record.getDelete(), returnedRecord.getDelete());
+        } catch (SQLException e) {
+            fail(e.getMessage());
+        }
     }
 }

Modified: ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/SqlMapConfig.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/SqlMapConfig.xml?rev=730666&r1=730665&r2=730666&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/SqlMapConfig.xml (original)
+++ ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/miscellaneous/SqlMapConfig.xml Thu Jan  1 19:44:52 2009
@@ -19,5 +19,6 @@
 
   <sqlMap resource="ibatortest/generated/miscellaneous/xml/PKFIELDS_SqlMap.xml" />
   <sqlMap resource="ibatortest/generated/miscellaneous/xml/REGEXRENAME_SqlMap.xml" />
+  <sqlMap resource="ibatortest/generated/miscellaneous/xml/ANOTHERAWFULTABLE_SqlMap.xml" />
 
 </sqlMapConfig>

Modified: ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/ibatorConfig.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/ibatorConfig.xml?rev=730666&r1=730665&r2=730666&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/ibatorConfig.xml (original)
+++ ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/ibatorConfig.xml Thu Jan  1 19:44:52 2009
@@ -260,6 +260,8 @@
   </ibatorContext>
 
   <ibatorContext id="miscellaneousTests" targetRuntime="Ibatis2Java5">
+    <property name="autoDelimitKeywords" value="true"/>
+    
     <ibatorPlugin type="org.apache.ibatis.ibator.plugins.EqualsHashCodePlugin" />
     <ibatorPlugin type="org.apache.ibatis.ibator.plugins.RenameExampleClassPlugin" >
       <property name="searchString" value="Example$"/>
@@ -304,5 +306,6 @@
     <table tableName="RegexRename">
       <columnRenamingRule searchString="^CUST" />
     </table>
+    <table tableName="AnotherAwfulTable" />
   </ibatorContext>
 </ibatorConfiguration>