OPENJPA-2816 Add HerdDB DBDictionary - more fixes
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ClassTableJDBCSeq.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ClassTableJDBCSeq.java
index 2c9f584..779dc96 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ClassTableJDBCSeq.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ClassTableJDBCSeq.java
@@ -26,6 +26,7 @@
 
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
 import org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl;
+import org.apache.openjpa.jdbc.identifier.DBIdentifier;
 import org.apache.openjpa.jdbc.meta.ClassMapping;
 import org.apache.openjpa.jdbc.meta.MappingRepository;
 import org.apache.openjpa.jdbc.schema.Column;
@@ -115,8 +116,9 @@
     @Override
     protected Column addPrimaryKeyColumn(Table table) {
         DBDictionary dict = getConfiguration().getDBDictionaryInstance();
-        Column pkColumn = table.addColumn(dict.getValidColumnName(
-            getPrimaryKeyColumnIdentifier(), table));
+        DBIdentifier delimitedColumnName = dict.fromDBName(getPrimaryKeyColumn(), DBIdentifier.DBIdentifierType.COLUMN);
+        Column pkColumn = table.addColumn(dict.getValidColumnName
+            (delimitedColumnName, table));
         pkColumn.setType(dict.getPreferredType(Types.VARCHAR));
         pkColumn.setJavaType(JavaTypes.STRING);
         pkColumn.setSize(dict.characterColumnSize);
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
index 8f8c08a..8addd93 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
@@ -375,8 +375,9 @@
      */
     protected Column addPrimaryKeyColumn(Table table) {
         DBDictionary dict = _conf.getDBDictionaryInstance();
+        DBIdentifier delimitedColumnName = dict.fromDBName(getPrimaryKeyColumn(), DBIdentifier.DBIdentifierType.COLUMN);
         Column pkColumn = table.addColumn(dict.getValidColumnName
-            (getPrimaryKeyColumnIdentifier(), table));
+            (delimitedColumnName, table));
         pkColumn.setType(dict.getPreferredType(Types.TINYINT));
         pkColumn.setJavaType(JavaTypes.INT);
         return pkColumn;
@@ -417,8 +418,10 @@
         pk.addColumn(_pkColumn);
 
         DBDictionary dict = _conf.getDBDictionaryInstance();
+        DBIdentifier _delimitedSeqColumnName = dict.delimitAll() ?
+                DBIdentifier.newColumn(this._seqColumnName.getName(), true) : this._seqColumnName;
         _seqColumn = table.addColumn(dict.getValidColumnName
-            (_seqColumnName, table));
+            (_delimitedSeqColumnName, table));
         _seqColumn.setType(dict.getPreferredType(Types.BIGINT));
         _seqColumn.setJavaType(JavaTypes.LONG);
 
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ValueTableJDBCSeq.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ValueTableJDBCSeq.java
index ceee965..7b69f96 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ValueTableJDBCSeq.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ValueTableJDBCSeq.java
@@ -24,6 +24,7 @@
 
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
 import org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl;
+import org.apache.openjpa.jdbc.identifier.DBIdentifier;
 import org.apache.openjpa.jdbc.meta.ClassMapping;
 import org.apache.openjpa.jdbc.meta.MappingRepository;
 import org.apache.openjpa.jdbc.schema.Column;
@@ -78,8 +79,9 @@
     @Override
     protected Column addPrimaryKeyColumn(Table table) {
         DBDictionary dict = getConfiguration().getDBDictionaryInstance();
+        DBIdentifier delimitedColumnName = dict.fromDBName(getPrimaryKeyColumn(), DBIdentifier.DBIdentifierType.COLUMN);
         Column pkColumn = table.addColumn(dict.getValidColumnName
-            (getPrimaryKeyColumnIdentifier(), table));
+            (delimitedColumnName, table));
         pkColumn.setType(dict.getPreferredType(Types.VARCHAR));
         pkColumn.setJavaType(JavaTypes.STRING);
         pkColumn.setSize(dict.characterColumnSize);
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
index 16a2216..daadb78 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
@@ -4462,7 +4462,7 @@
         c.setSchemaIdentifier(fromDBName(colMeta.getString("TABLE_SCHEM"), DBIdentifierType.SCHEMA));
         c.setTableIdentifier(fromDBName(colMeta.getString("TABLE_NAME"), DBIdentifierType.TABLE));
         c.setIdentifier(fromDBName(colMeta.getString("COLUMN_NAME"), DBIdentifierType.COLUMN));
-        c.setType(colMeta.getInt("DATA_TYPE"));
+        c.setType(fromDBType(colMeta.getInt("DATA_TYPE")));
         c.setTypeIdentifier(fromDBName(colMeta.getString("TYPE_NAME"), DBIdentifierType.COLUMN_DEFINITION));
         c.setSize(colMeta.getInt("COLUMN_SIZE"));
         c.setDecimalDigits(colMeta.getInt("DECIMAL_DIGITS"));
@@ -5900,7 +5900,14 @@
             return getNamingUtil().toDBName(name, delimit);
     }
 
+    public int fromDBType(int type) {
+        return type;
+    }
+
     public DBIdentifier fromDBName(String name, DBIdentifierType id) {
+        if (delimitAll()) {
+            name = Normalizer.delimit(name, true);
+        }
         return getNamingUtil().fromDBName(name, id);
     }
 
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/HerdDBDictionary.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/HerdDBDictionary.java
index 63bfa18..ca02c30 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/HerdDBDictionary.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/HerdDBDictionary.java
@@ -18,6 +18,8 @@
  */
 package org.apache.openjpa.jdbc.sql;
 
+import java.sql.Types;
+
 /**
  * Dictionary for HerdDB.
  */
@@ -33,7 +35,7 @@
         supportsUniqueConstraints = false;
         supportsCascadeDeleteAction = false;
         schemaCase = SCHEMA_CASE_LOWER;
-        delimitedCase = SCHEMA_CASE_PRESERVE;
+        delimitedCase = SCHEMA_CASE_LOWER;
 
         // make OpenJPA escape everything, because Apache Calcite has a lot of reserved words, like 'User', 'Value'...
         setDelimitIdentifiers(true);
@@ -42,5 +44,13 @@
         setTrailingDelimiter(DELIMITER_BACK_TICK);
     }
 
+    @Override
+    public int fromDBType(int i) {
+        if (i == Types.DOUBLE) {
+            return Types.REAL;
+        }
+        return i;
+    }
+
 }