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

mchades 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 e5fe677dab [#11963] fix(cli): support parsing the variant column type 
(#11964)
e5fe677dab is described below

commit e5fe677dabe0e533d52ea2be870967297fef33fe
Author: Nevin Zheng <[email protected]>
AuthorDate: Wed Jul 15 20:47:41 2026 -0700

    [#11963] fix(cli): support parsing the variant column type (#11964)
    
    ### What changes were proposed in this pull request?
    
    Adds a `variant` case to the CLI's `TypeConverter.convert(String)` so a
    user can specify a `variant` column from the terminal via the type
    string (e.g. `--datatype variant`). Previously this threw
    `IllegalArgumentException: Unknown or unsupported type: variant`, even
    though `Types.VariantType` exists in the type system.
    
    - `TypeConverter.java`: map `"variant"` → `Types.VariantType.get()`.
    - Added unit tests in `TestTypeConverter` and `TestParseType` covering
    both the direct converter and the full `ParseType.toType("variant")`
    entry point.
    
    ### Why are the changes needed?
    
    The native `variant` type (#11932) was wired into the type system but
    not into the CLI's string→type parsing. As a result the CLI could not
    create or alter a column of type `variant`, leaving a gap in the
    "specify a column by typing its type string" flow. `variant` is a
    parameterless primitive, so parsing is lossless.
    
    Fix: #11963
    
    ### Does this PR introduce _any_ user-facing change?
    
    Yes. The CLI now accepts `variant` as a column datatype
    (case-insensitive), e.g.:
    
    ```
    gravitino table create ... --columns col --datatype variant
    ```
    
    ### How was this patch tested?
    
    Added and ran unit tests:
    
    ```
    ./gradlew :clients:cli:test --tests 
'org.apache.gravitino.cli.TestTypeConverter' \
                                --tests 
'org.apache.gravitino.cli.TestParseType' -PskipITs
    ```
    
    Both pass. Tests assert `TypeConverter.convert("variant")` and
    `ParseType.toType("variant")` return `Types.VariantType`.
---
 .../cli/src/main/java/org/apache/gravitino/cli/TypeConverter.java   | 2 ++
 .../cli/src/test/java/org/apache/gravitino/cli/TestParseType.java   | 6 ++++++
 .../src/test/java/org/apache/gravitino/cli/TestTypeConverter.java   | 1 +
 3 files changed, 9 insertions(+)

diff --git 
a/clients/cli/src/main/java/org/apache/gravitino/cli/TypeConverter.java 
b/clients/cli/src/main/java/org/apache/gravitino/cli/TypeConverter.java
index f5a75ed9fa..588e5a9385 100644
--- a/clients/cli/src/main/java/org/apache/gravitino/cli/TypeConverter.java
+++ b/clients/cli/src/main/java/org/apache/gravitino/cli/TypeConverter.java
@@ -76,6 +76,8 @@ public class TypeConverter {
         return Types.StringType.get();
       case "binary":
         return Types.BinaryType.get();
+      case "variant":
+        return Types.VariantType.get();
       default:
         throw new IllegalArgumentException("Unknown or unsupported type: " + 
typeName);
     }
diff --git 
a/clients/cli/src/test/java/org/apache/gravitino/cli/TestParseType.java 
b/clients/cli/src/test/java/org/apache/gravitino/cli/TestParseType.java
index 35a372b3d0..3bb9376ff5 100644
--- a/clients/cli/src/test/java/org/apache/gravitino/cli/TestParseType.java
+++ b/clients/cli/src/test/java/org/apache/gravitino/cli/TestParseType.java
@@ -46,6 +46,12 @@ public class TestParseType {
     assertEquals(5, ((Types.DecimalType) type).scale());
   }
 
+  @Test
+  public void testParseTypeVariant() {
+    Type type = ParseType.toType("variant");
+    assertThat(type, instanceOf(Types.VariantType.class));
+  }
+
   @Test
   public void testParseTypeListValidInput() {
     Type type = ParseType.toType("list(integer)");
diff --git 
a/clients/cli/src/test/java/org/apache/gravitino/cli/TestTypeConverter.java 
b/clients/cli/src/test/java/org/apache/gravitino/cli/TestTypeConverter.java
index a4145b2945..21b07d2911 100644
--- a/clients/cli/src/test/java/org/apache/gravitino/cli/TestTypeConverter.java
+++ b/clients/cli/src/test/java/org/apache/gravitino/cli/TestTypeConverter.java
@@ -50,6 +50,7 @@ public class TestTypeConverter {
     assertEquals(Types.UUIDType.get(), TypeConverter.convert("uuid"));
     assertEquals(Types.StringType.get(), TypeConverter.convert("string"));
     assertEquals(Types.BinaryType.get(), TypeConverter.convert("binary"));
+    assertEquals(Types.VariantType.get(), TypeConverter.convert("variant"));
   }
 
   @Test

Reply via email to