This is an automated email from the ASF dual-hosted git repository.
yuqi1129 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/main by this push:
new 26dfd9b2d2 [#11513] fix(catalog-mysql): Fix MySQL catalog incompatible
with MariaDB due to case-sensitive CURRENT_TIMESTAMP check (#11510)
26dfd9b2d2 is described below
commit 26dfd9b2d203a92e2147b5829b87e8bc1edbd868
Author: a19920714liou <[email protected]>
AuthorDate: Wed Jun 10 18:12:15 2026 +0800
[#11513] fix(catalog-mysql): Fix MySQL catalog incompatible with MariaDB
due to case-sensitive CURRENT_TIMESTAMP check (#11510)
<!--
1. Title: [#<issue>] <type>(<scope>): <subject>
Reference: https://www.conventionalcommits.org/en/v1.0.0/
2. If the PR is unfinished, please mark this PR as draft.
-->
Fix https://github.com/apache/gravitino/issues/11513
### What changes were proposed in this pull request?
Changed the `CURRENT_TIMESTAMP` comparison in
`MysqlColumnDefaultValueConverter` from case-sensitive `startsWith` to
case-insensitive `StringUtils.startsWithIgnoreCase`.
### Why are the changes needed?
MariaDB returns default values with different casing (e.g.,
`current_timestamp` in lowercase) compared to MySQL (e.g.,
`CURRENT_TIMESTAMP` in uppercase). The existing `String.startsWith()`
check is case-sensitive, which causes it to fail when connecting to a
MariaDB database via the MySQL catalog, resulting in incorrect default
value parsing.
### Does this PR introduce _any_ user-facing change?
No user-facing API changes. This fix ensures MariaDB users can correctly
use the MySQL catalog with proper default value handling.
### How was this patch tested?
Manually tested by connecting the MySQL catalog to a MariaDB instance
and verifying that columns with `CURRENT_TIMESTAMP` as default value are
correctly parsed.
---
.../catalog/mysql/converter/MysqlColumnDefaultValueConverter.java | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git
a/catalogs/catalog-jdbc-mysql/src/main/java/org/apache/gravitino/catalog/mysql/converter/MysqlColumnDefaultValueConverter.java
b/catalogs/catalog-jdbc-mysql/src/main/java/org/apache/gravitino/catalog/mysql/converter/MysqlColumnDefaultValueConverter.java
index ad7defff30..3ea3476fd9 100644
---
a/catalogs/catalog-jdbc-mysql/src/main/java/org/apache/gravitino/catalog/mysql/converter/MysqlColumnDefaultValueConverter.java
+++
b/catalogs/catalog-jdbc-mysql/src/main/java/org/apache/gravitino/catalog/mysql/converter/MysqlColumnDefaultValueConverter.java
@@ -25,6 +25,7 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeParseException;
+import org.apache.commons.lang3.StringUtils;
import
org.apache.gravitino.catalog.jdbc.converter.JdbcColumnDefaultValueConverter;
import org.apache.gravitino.catalog.jdbc.converter.JdbcTypeConverter;
import org.apache.gravitino.rel.expressions.Expression;
@@ -50,7 +51,7 @@ public class MysqlColumnDefaultValueConverter extends
JdbcColumnDefaultValueConv
}
if (isExpression) {
- if (columnDefaultValue.startsWith(CURRENT_TIMESTAMP)) {
+ if (StringUtils.startsWithIgnoreCase(columnDefaultValue,
CURRENT_TIMESTAMP)) {
return DEFAULT_VALUE_OF_CURRENT_TIMESTAMP;
}
// The parsing of MySQL expressions is complex, so we are not currently
undertaking the
@@ -89,7 +90,7 @@ public class MysqlColumnDefaultValueConverter extends
JdbcColumnDefaultValueConv
return Literals.timeLiteral(LocalTime.parse(columnDefaultValue,
TIME_FORMATTER));
case JdbcTypeConverter.TIMESTAMP:
case MysqlTypeConverter.DATETIME:
- if (columnDefaultValue.startsWith(CURRENT_TIMESTAMP)) {
+ if (StringUtils.startsWithIgnoreCase(columnDefaultValue,
CURRENT_TIMESTAMP)) {
return DEFAULT_VALUE_OF_CURRENT_TIMESTAMP;
}
try {