This is an automated email from the ASF dual-hosted git repository.
jerryshao pushed a commit to branch branch-1.3
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/branch-1.3 by this push:
new d6bc64f174 [Cherry-pick to branch-1.3] [#14026] fix(catalog-jdbc):
Keep auto-increment when updating column default value (#14027) (#14041)
d6bc64f174 is described below
commit d6bc64f174d44e26dacc78b5bac850b68ff78792
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed Oct 21 13:57:16 2026 +0800
[Cherry-pick to branch-1.3] [#14026] fix(catalog-jdbc): Keep auto-increment
when updating column default value (#14027) (#14041)
**Cherry-pick Information:**
- Original commit: aa549f92f9e69cfcd37aee5254d1177ee6dd0d26
- Target branch: `branch-1.3`
- Status: ✅ Clean cherry-pick (no conflicts)
Co-authored-by: Yuhui <[email protected]>
---
.../operation/OceanBaseTableOperations.java | 1 +
.../operation/TestOceanBaseTableOperations.java | 40 ++++++++++++++++++++++
.../mysql/operation/MysqlTableOperations.java | 1 +
.../mysql/operation/TestMysqlTableOperations.java | 40 ++++++++++++++++++++++
4 files changed, 82 insertions(+)
diff --git
a/catalogs-contrib/catalog-jdbc-oceanbase/src/main/java/org/apache/gravitino/catalog/oceanbase/operation/OceanBaseTableOperations.java
b/catalogs-contrib/catalog-jdbc-oceanbase/src/main/java/org/apache/gravitino/catalog/oceanbase/operation/OceanBaseTableOperations.java
index f05fcfada3..da57ee841b 100644
---
a/catalogs-contrib/catalog-jdbc-oceanbase/src/main/java/org/apache/gravitino/catalog/oceanbase/operation/OceanBaseTableOperations.java
+++
b/catalogs-contrib/catalog-jdbc-oceanbase/src/main/java/org/apache/gravitino/catalog/oceanbase/operation/OceanBaseTableOperations.java
@@ -605,6 +605,7 @@ public class OceanBaseTableOperations extends
JdbcTableOperations {
.withType(column.dataType())
.withNullable(column.nullable())
.withComment(column.comment())
+ .withAutoIncrement(column.autoIncrement())
.withDefaultValue(updateColumnDefaultValue.getNewDefaultValue())
.build();
return appendColumnDefinition(newColumn, sqlBuilder).toString();
diff --git
a/catalogs-contrib/catalog-jdbc-oceanbase/src/test/java/org/apache/gravitino/catalog/oceanbase/operation/TestOceanBaseTableOperations.java
b/catalogs-contrib/catalog-jdbc-oceanbase/src/test/java/org/apache/gravitino/catalog/oceanbase/operation/TestOceanBaseTableOperations.java
index 06fc9101ad..a0d4b2f9c9 100644
---
a/catalogs-contrib/catalog-jdbc-oceanbase/src/test/java/org/apache/gravitino/catalog/oceanbase/operation/TestOceanBaseTableOperations.java
+++
b/catalogs-contrib/catalog-jdbc-oceanbase/src/test/java/org/apache/gravitino/catalog/oceanbase/operation/TestOceanBaseTableOperations.java
@@ -575,6 +575,46 @@ public class TestOceanBaseTableOperations extends
TestOceanBase {
Literals.of("world", Types.VarCharType.of(255)),
loaded.columns()[3].defaultValue());
}
+ @Test
+ public void testUpdateColumnDefaultValueKeepsAutoIncrement() {
+ String tableName = RandomNameUtils.genRandomName("auto_increment_table_");
+ JdbcColumn[] columns = {
+ JdbcColumn.builder()
+ .withName("col_1")
+ .withType(Types.LongType.get())
+ .withAutoIncrement(true)
+ .withNullable(false)
+ .build(),
+ JdbcColumn.builder()
+ .withName("col_2")
+ .withType(Types.VarCharType.of(255))
+ .withNullable(false)
+ .build()
+ };
+ Index[] indexes =
+ new Index[] {
+ Indexes.createMysqlPrimaryKey(new String[][] {{"col_2"}}),
+ Indexes.unique("uk_col_1", new String[][] {{"col_1"}})
+ };
+ TABLE_OPERATIONS.create(
+ TEST_DB_NAME.toString(),
+ tableName,
+ columns,
+ "test_comment",
+ new HashMap<>(),
+ null,
+ Distributions.NONE,
+ indexes);
+
+ TABLE_OPERATIONS.alterTable(
+ TEST_DB_NAME.toString(),
+ tableName,
+ TableChange.updateColumnDefaultValue(new String[] {"col_1"},
Column.DEFAULT_VALUE_NOT_SET));
+
+ JdbcTable loaded = TABLE_OPERATIONS.load(TEST_DB_NAME.toString(),
tableName);
+ Assertions.assertTrue(loaded.columns()[0].autoIncrement());
+ }
+
@Test
public void testCreateAndLoadTable() {
String tableName = RandomStringUtils.randomAlphabetic(16).toLowerCase() +
"_cl_table";
diff --git
a/catalogs/catalog-jdbc-mysql/src/main/java/org/apache/gravitino/catalog/mysql/operation/MysqlTableOperations.java
b/catalogs/catalog-jdbc-mysql/src/main/java/org/apache/gravitino/catalog/mysql/operation/MysqlTableOperations.java
index 813f44b6de..f50ccca7df 100644
---
a/catalogs/catalog-jdbc-mysql/src/main/java/org/apache/gravitino/catalog/mysql/operation/MysqlTableOperations.java
+++
b/catalogs/catalog-jdbc-mysql/src/main/java/org/apache/gravitino/catalog/mysql/operation/MysqlTableOperations.java
@@ -684,6 +684,7 @@ public class MysqlTableOperations extends
JdbcTableOperations {
.withType(column.dataType())
.withNullable(column.nullable())
.withComment(column.comment())
+ .withAutoIncrement(column.autoIncrement())
.withDefaultValue(updateColumnDefaultValue.getNewDefaultValue())
.build();
return appendColumnDefinition(newColumn, sqlBuilder).toString();
diff --git
a/catalogs/catalog-jdbc-mysql/src/test/java/org/apache/gravitino/catalog/mysql/operation/TestMysqlTableOperations.java
b/catalogs/catalog-jdbc-mysql/src/test/java/org/apache/gravitino/catalog/mysql/operation/TestMysqlTableOperations.java
index f4cd86e9e6..b48e8a9e08 100644
---
a/catalogs/catalog-jdbc-mysql/src/test/java/org/apache/gravitino/catalog/mysql/operation/TestMysqlTableOperations.java
+++
b/catalogs/catalog-jdbc-mysql/src/test/java/org/apache/gravitino/catalog/mysql/operation/TestMysqlTableOperations.java
@@ -543,6 +543,46 @@ public class TestMysqlTableOperations extends TestMysql {
Literals.of("world", Types.VarCharType.of(255)),
loaded.columns()[3].defaultValue());
}
+ @Test
+ public void testUpdateColumnDefaultValueKeepsAutoIncrement() {
+ String tableName = RandomNameUtils.genRandomName("auto_increment_table_");
+ JdbcColumn[] columns = {
+ JdbcColumn.builder()
+ .withName("col_1")
+ .withType(Types.LongType.get())
+ .withAutoIncrement(true)
+ .withNullable(false)
+ .build(),
+ JdbcColumn.builder()
+ .withName("col_2")
+ .withType(Types.VarCharType.of(255))
+ .withNullable(false)
+ .build()
+ };
+ Index[] indexes =
+ new Index[] {
+ Indexes.createMysqlPrimaryKey(new String[][] {{"col_2"}}),
+ Indexes.unique("uk_col_1", new String[][] {{"col_1"}})
+ };
+ TABLE_OPERATIONS.create(
+ TEST_DB_NAME.toString(),
+ tableName,
+ columns,
+ "test_comment",
+ new HashMap<>(),
+ null,
+ Distributions.NONE,
+ indexes);
+
+ TABLE_OPERATIONS.alterTable(
+ TEST_DB_NAME.toString(),
+ tableName,
+ TableChange.updateColumnDefaultValue(new String[] {"col_1"},
Column.DEFAULT_VALUE_NOT_SET));
+
+ JdbcTable loaded = TABLE_OPERATIONS.load(TEST_DB_NAME.toString(),
tableName);
+ Assertions.assertTrue(loaded.columns()[0].autoIncrement());
+ }
+
@Test
public void testCreateAndLoadTable() {
String tableName = RandomStringUtils.randomAlphabetic(16) + "_cl_table";