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;
+ }
+
}