This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 083fb596809c6038091e4a28c552932adbd0cf49
Author: glegal <[email protected]>
AuthorDate: Mon May 25 16:54:00 2026 +0200

    fix(sql): override sql datatype code for timestamp with timezone column
---
 .../main/org/apache/sis/storage/sql/feature/Column.java  |  2 +-
 .../org/apache/sis/storage/sql/feature/Database.java     | 12 ++++++++++++
 .../org/apache/sis/storage/sql/postgis/Postgres.java     | 16 ++++++++++++++++
 3 files changed, 29 insertions(+), 1 deletion(-)

diff --git 
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Column.java
 
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Column.java
index b475083191..6980238d97 100644
--- 
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Column.java
+++ 
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Column.java
@@ -168,8 +168,8 @@ public class Column implements Cloneable {
      */
     Column(final Analyzer analyzer, final ResultSet metadata, final String 
quote) throws SQLException {
         label = name = analyzer.getUniqueString(metadata, 
Reflection.COLUMN_NAME);
-        type         = metadata.getInt(Reflection.DATA_TYPE);
         typeName     = localPart(metadata.getString(Reflection.TYPE_NAME), 
quote);
+        type         = analyzer.database.getColumnDatatype(metadata, typeName);
         precision    = metadata.getInt(Reflection.COLUMN_SIZE);
         isNullable   = 
Boolean.TRUE.equals(SQLUtilities.parseBoolean(metadata.getString(Reflection.IS_NULLABLE)));
         propertyName = label;
diff --git 
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Database.java
 
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Database.java
index f803411ac6..264c201505 100644
--- 
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Database.java
+++ 
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Database.java
@@ -767,6 +767,18 @@ public class Database<G> extends Syntax {
     protected JDBCType getArrayComponentType(final Column columnDefinition) {
         return JDBCType.OTHER;
     }
+    
+    /**
+     * Return the type of the column.
+     * 
+     * @param metadata the result of {@code DatabaseMetaData.getColumns(…)}.
+     * @param typeName name of the sql type.
+     * @return A java.sql.Types constant.
+     * @throws SQLException 
+     */
+    protected int getColumnDatatype(final ResultSet metadata, String typeName) 
throws SQLException {
+        return metadata.getInt(Reflection.DATA_TYPE);
+    }
 
     /**
      * Returns an identifier of the way binary data are encoded by the 
<abbr>JDBC</abbr> driver.
diff --git 
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/postgis/Postgres.java
 
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/postgis/Postgres.java
index 5c17f86caf..c456a8d407 100644
--- 
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/postgis/Postgres.java
+++ 
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/postgis/Postgres.java
@@ -149,6 +149,22 @@ public final class Postgres<G> extends Database<G> {
         return super.getArrayComponentType(columnDefinition);
     }
 
+    /**
+     * Return the type of the column.
+     * 
+     * @param metadata the result of {@code DatabaseMetaData.getColumns(…)}.
+     * @param typeName name of the sql type.
+     * @return A java.sql.Types constant.
+     * @throws SQLException 
+     */
+    @Override
+    protected int getColumnDatatype(ResultSet metadata, String typeName) 
throws SQLException {
+        if ("timestamptz".equalsIgnoreCase(typeName)) {
+            return Types.TIMESTAMP_WITH_TIMEZONE;
+        }
+        return super.getColumnDatatype(metadata, typeName);
+    }
+
     /**
      * Returns the mapping for {@link Object} or unrecognized types.
      */

Reply via email to