Author: desruisseaux
Date: Mon Jun 27 14:30:18 2016
New Revision: 1750347
URL: http://svn.apache.org/viewvc?rev=1750347&view=rev
Log:
Bug fix: enum types need to be casted to VARCHAR on PostgreSQL.
Modified:
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGInstaller.java
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java
Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java?rev=1750347&r1=1750346&r2=1750347&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java [UTF-8] Mon Jun 27 14:30:18 2016
@@ -148,8 +148,8 @@ final class AuthorityCodes extends Abstr
for (int i=0; i
candidate = table.subTypes[i];
if (candidate.isAssignableFrom(type)) {
- buffer.append(" WHERE (").append(table.typeColumn)
- .append(" LIKE '").append(table.typeNames[i]).append("%')");
+ buffer.append(" WHERE (CAST(").append(table.typeColumn).append(" AS ").append(TableInfo.ENUM_REPLACEMENT)
+ .append(") LIKE '").append(table.typeNames[i]).append("%')");
hasWhere = true;
tableType = candidate;
break;
Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java?rev=1750347&r1=1750346&r2=1750347&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java [UTF-8] Mon Jun 27 14:30:18 2016
@@ -3216,7 +3216,7 @@ next: while (r.next()) {
"SELECT COORD_REF_SYS_CODE" +
" FROM [Coordinate Reference System]" +
" WHERE PROJECTION_CONV_CODE = ?" +
- " AND COORD_REF_SYS_KIND LIKE 'projected%'", code))
+ " AND CAST(COORD_REF_SYS_KIND AS " + TableInfo.ENUM_REPLACEMENT + ") LIKE 'projected%'", code))
{
projection = result.next();
}
Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGInstaller.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGInstaller.java?rev=1750347&r1=1750346&r2=1750347&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGInstaller.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGInstaller.java [UTF-8] Mon Jun 27 14:30:18 2016
@@ -159,9 +159,9 @@ final class EPSGInstaller extends Script
prependNamespace(schema);
}
if (!isEnumTypeSupported) {
- addReplacement(SQLTranslator.TABLE_PREFIX + "datum_kind", "VARCHAR(24)");
- addReplacement(SQLTranslator.TABLE_PREFIX + "crs_kind", "VARCHAR(24)");
- addReplacement(SQLTranslator.TABLE_PREFIX + "cs_kind", "VARCHAR(24)");
+ addReplacement(SQLTranslator.TABLE_PREFIX + "datum_kind", TableInfo.ENUM_REPLACEMENT);
+ addReplacement(SQLTranslator.TABLE_PREFIX + "crs_kind", TableInfo.ENUM_REPLACEMENT);
+ addReplacement(SQLTranslator.TABLE_PREFIX + "cs_kind", TableInfo.ENUM_REPLACEMENT);
addReplacement(SQLTranslator.TABLE_PREFIX + "table_name", "VARCHAR(80)");
}
}
Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java?rev=1750347&r1=1750346&r2=1750347&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java [UTF-8] Mon Jun 27 14:30:18 2016
@@ -162,10 +162,17 @@ final class TableInfo {
/**
* Column type for the type (usually with the {@code "_TYPE"} suffix), or {@code null}.
+ * {@link EPSGDataAccess} and {@link AuthorityCodes} assumes that values in this column
+ * have the maximal length described in the {@value #ENUM_REPLACEMENT} statement.
*/
final String typeColumn;
/**
+ * The SQL type to use as a replacement for enumerated values on databases that do not support enumerations.
+ */
+ static final String ENUM_REPLACEMENT = "VARCHAR(24)";
+
+ /**
* Sub-interfaces of {@link #type} to handle, or {@code null} if none.
*/
final Class>[] subTypes;