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

yuqi4733 pushed a commit to branch internal-main
in repository https://gitbox.apache.org/repos/asf/gravitino.git

commit 1a6c872fc128046404afb40629882548ff66b2d2
Author: geyanggang <[email protected]>
AuthorDate: Fri Feb 6 17:00:42 2026 +0800

    [#118] feat (bigquery-catalog): Fix exceptions when converting data types 
from timestamp with precision to datetime.
---
 .../catalog/bigquery/converter/BigQueryTypeConverter.java     | 11 +++--------
 .../catalog/bigquery/converter/TestBigQueryTypeConverter.java | 11 ++++++++---
 .../catalog/bigquery/operation/TestBigQuerySqlGeneration.java |  4 ++--
 3 files changed, 13 insertions(+), 13 deletions(-)

diff --git 
a/catalogs/catalog-jdbc-bigquery/src/main/java/org/apache/gravitino/catalog/bigquery/converter/BigQueryTypeConverter.java
 
b/catalogs/catalog-jdbc-bigquery/src/main/java/org/apache/gravitino/catalog/bigquery/converter/BigQueryTypeConverter.java
index 3b2ec0d4ab..dd5a7bbb4d 100644
--- 
a/catalogs/catalog-jdbc-bigquery/src/main/java/org/apache/gravitino/catalog/bigquery/converter/BigQueryTypeConverter.java
+++ 
b/catalogs/catalog-jdbc-bigquery/src/main/java/org/apache/gravitino/catalog/bigquery/converter/BigQueryTypeConverter.java
@@ -117,15 +117,10 @@ public class BigQueryTypeConverter extends 
JdbcTypeConverter {
       return BYTES;
     } else if (type instanceof Types.DateType) {
       return DATE;
-    } else if (type instanceof Types.TimeType timeType) {
-      return timeType.hasPrecisionSet()
-          ? String.format("%s(%d)", TIME, timeType.precision())
-          : TIME;
+    } else if (type instanceof Types.TimeType) {
+      return TIME;
     } else if (type instanceof Types.TimestampType timestampType) {
-      String baseType = timestampType.hasTimeZone() ? TIMESTAMP : DATETIME;
-      return timestampType.hasPrecisionSet()
-          ? String.format("%s(%d)", baseType, timestampType.precision())
-          : baseType;
+      return timestampType.hasTimeZone() ? TIMESTAMP : DATETIME;
     } else if (type instanceof Types.DecimalType decimalType) {
       // BigQuery NUMERIC: precision 1-38, scale 0-9 (or 0-precision)
       // For Gravitino DecimalType (max precision 38), always use NUMERIC
diff --git 
a/catalogs/catalog-jdbc-bigquery/src/test/java/org/apache/gravitino/catalog/bigquery/converter/TestBigQueryTypeConverter.java
 
b/catalogs/catalog-jdbc-bigquery/src/test/java/org/apache/gravitino/catalog/bigquery/converter/TestBigQueryTypeConverter.java
index 14a394ed3f..2843995c80 100644
--- 
a/catalogs/catalog-jdbc-bigquery/src/test/java/org/apache/gravitino/catalog/bigquery/converter/TestBigQueryTypeConverter.java
+++ 
b/catalogs/catalog-jdbc-bigquery/src/test/java/org/apache/gravitino/catalog/bigquery/converter/TestBigQueryTypeConverter.java
@@ -51,7 +51,7 @@ public class TestBigQueryTypeConverter {
     assertEquals("time", typeConverter.fromGravitino(Types.TimeType.get()));
 
     // Time with precision
-    assertEquals("time(6)", typeConverter.fromGravitino(Types.TimeType.of(6)));
+    assertEquals("time", typeConverter.fromGravitino(Types.TimeType.of(3)));
 
     // Timestamp without timezone (DATETIME in BigQuery)
     assertEquals("datetime", 
typeConverter.fromGravitino(Types.TimestampType.withoutTimeZone()));
@@ -60,9 +60,14 @@ public class TestBigQueryTypeConverter {
     assertEquals("timestamp", 
typeConverter.fromGravitino(Types.TimestampType.withTimeZone()));
 
     // Timestamp with precision
+    // NOTE: BigQuery DATETIME precision is microsecond by default, it does 
not support specify
+    // precision
+    // so a TimestampType without timezone should still map to plain 
"datetime" even if a
+    // precision is set.
     assertEquals(
-        "datetime(3)", 
typeConverter.fromGravitino(Types.TimestampType.withoutTimeZone(3)));
-    assertEquals("timestamp(6)", 
typeConverter.fromGravitino(Types.TimestampType.withTimeZone(6)));
+        "datetime", // DATETIME in BigQuery (precision ignored)
+        typeConverter.fromGravitino(Types.TimestampType.withoutTimeZone(6)));
+    assertEquals("timestamp", 
typeConverter.fromGravitino(Types.TimestampType.withTimeZone(6)));
   }
 
   @Test
diff --git 
a/catalogs/catalog-jdbc-bigquery/src/test/java/org/apache/gravitino/catalog/bigquery/operation/TestBigQuerySqlGeneration.java
 
b/catalogs/catalog-jdbc-bigquery/src/test/java/org/apache/gravitino/catalog/bigquery/operation/TestBigQuerySqlGeneration.java
index 768807da6f..b09e8c5cd8 100644
--- 
a/catalogs/catalog-jdbc-bigquery/src/test/java/org/apache/gravitino/catalog/bigquery/operation/TestBigQuerySqlGeneration.java
+++ 
b/catalogs/catalog-jdbc-bigquery/src/test/java/org/apache/gravitino/catalog/bigquery/operation/TestBigQuerySqlGeneration.java
@@ -161,8 +161,8 @@ public class TestBigQuerySqlGeneration {
             tableName, columns, null, null, new Transform[0], 
Distributions.NONE, new Index[0]);
 
     assertTrue(sql.contains("`decimal_col` NUMERIC(10, 2) NOT NULL"));
-    assertTrue(sql.contains("`timestamp_col` timestamp(6)"));
-    assertTrue(sql.contains("`time_col` time(3)"));
+    assertTrue(sql.contains("`timestamp_col` timestamp"));
+    assertTrue(sql.contains("`time_col` time"));
   }
 
   @Test

Reply via email to