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

lidavidm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-java.git


The following commit(s) were added to refs/heads/main by this push:
     new 033ecc3f1 GH-110: bind StringView/BinaryView for Flight SQL JDBC (#905)
033ecc3f1 is described below

commit 033ecc3f101de35063fb5db83ae5cbcccaee9409
Author: ViggoC <[email protected]>
AuthorDate: Thu Dec 4 17:30:46 2025 +0800

    GH-110: bind StringView/BinaryView for Flight SQL JDBC (#905)
    
    ## What's Changed
    
    Closes #110.
    
    ---------
    
    Co-authored-by: 张林伟 <[email protected]>
---
 .../accessor/ArrowFlightJdbcAccessorFactory.java   |  8 +++++
 .../ArrowFlightJdbcBinaryVectorAccessor.java       |  8 +++++
 .../text/ArrowFlightJdbcVarCharVectorAccessor.java |  8 +++++
 .../impl/BinaryViewAvaticaParameterConverter.java  |  8 ++++-
 .../impl/Utf8ViewAvaticaParameterConverter.java    |  9 +++++-
 .../driver/jdbc/utils/AvaticaParameterBinder.java  |  6 ++--
 .../apache/arrow/driver/jdbc/utils/SqlTypes.java   |  2 ++
 .../ArrowFlightJdbcAccessorFactoryTest.java        | 26 +++++++++++++++++
 .../ArrowFlightJdbcVarCharVectorAccessorTest.java  | 26 +++++++++++++++++
 .../arrow/driver/jdbc/utils/ConvertUtilsTest.java  | 34 ++++++++++++++++++++++
 .../arrow/driver/jdbc/utils/SqlTypesTest.java      |  4 +++
 11 files changed, 135 insertions(+), 4 deletions(-)

diff --git 
a/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/accessor/ArrowFlightJdbcAccessorFactory.java
 
b/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/accessor/ArrowFlightJdbcAccessorFactory.java
index dad1fa5f7..bbfe88a78 100644
--- 
a/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/accessor/ArrowFlightJdbcAccessorFactory.java
+++ 
b/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/accessor/ArrowFlightJdbcAccessorFactory.java
@@ -68,6 +68,8 @@ import org.apache.arrow.vector.UInt8Vector;
 import org.apache.arrow.vector.ValueVector;
 import org.apache.arrow.vector.VarBinaryVector;
 import org.apache.arrow.vector.VarCharVector;
+import org.apache.arrow.vector.ViewVarBinaryVector;
+import org.apache.arrow.vector.ViewVarCharVector;
 import org.apache.arrow.vector.complex.DenseUnionVector;
 import org.apache.arrow.vector.complex.FixedSizeListVector;
 import org.apache.arrow.vector.complex.LargeListVector;
@@ -130,6 +132,9 @@ public class ArrowFlightJdbcAccessorFactory {
     } else if (vector instanceof VarBinaryVector) {
       return new ArrowFlightJdbcBinaryVectorAccessor(
           (VarBinaryVector) vector, getCurrentRow, setCursorWasNull);
+    } else if (vector instanceof ViewVarBinaryVector) {
+      return new ArrowFlightJdbcBinaryVectorAccessor(
+          (ViewVarBinaryVector) vector, getCurrentRow, setCursorWasNull);
     } else if (vector instanceof LargeVarBinaryVector) {
       return new ArrowFlightJdbcBinaryVectorAccessor(
           (LargeVarBinaryVector) vector, getCurrentRow, setCursorWasNull);
@@ -163,6 +168,9 @@ public class ArrowFlightJdbcAccessorFactory {
     } else if (vector instanceof LargeVarCharVector) {
       return new ArrowFlightJdbcVarCharVectorAccessor(
           (LargeVarCharVector) vector, getCurrentRow, setCursorWasNull);
+    } else if (vector instanceof ViewVarCharVector) {
+      return new ArrowFlightJdbcVarCharVectorAccessor(
+          (ViewVarCharVector) vector, getCurrentRow, setCursorWasNull);
     } else if (vector instanceof DurationVector) {
       return new ArrowFlightJdbcDurationVectorAccessor(
           (DurationVector) vector, getCurrentRow, setCursorWasNull);
diff --git 
a/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/accessor/impl/binary/ArrowFlightJdbcBinaryVectorAccessor.java
 
b/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/accessor/impl/binary/ArrowFlightJdbcBinaryVectorAccessor.java
index 30dfffce6..e71b6380a 100644
--- 
a/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/accessor/impl/binary/ArrowFlightJdbcBinaryVectorAccessor.java
+++ 
b/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/accessor/impl/binary/ArrowFlightJdbcBinaryVectorAccessor.java
@@ -27,6 +27,7 @@ import 
org.apache.arrow.driver.jdbc.accessor.ArrowFlightJdbcAccessorFactory;
 import org.apache.arrow.vector.FixedSizeBinaryVector;
 import org.apache.arrow.vector.LargeVarBinaryVector;
 import org.apache.arrow.vector.VarBinaryVector;
+import org.apache.arrow.vector.ViewVarBinaryVector;
 
 /**
  * Accessor for the Arrow types: {@link FixedSizeBinaryVector}, {@link 
VarBinaryVector} and {@link
@@ -61,6 +62,13 @@ public class ArrowFlightJdbcBinaryVectorAccessor extends 
ArrowFlightJdbcAccessor
     this(vector::get, currentRowSupplier, setCursorWasNull);
   }
 
+  public ArrowFlightJdbcBinaryVectorAccessor(
+      ViewVarBinaryVector vector,
+      IntSupplier currentRowSupplier,
+      ArrowFlightJdbcAccessorFactory.WasNullConsumer setCursorWasNull) {
+    this(vector::get, currentRowSupplier, setCursorWasNull);
+  }
+
   private ArrowFlightJdbcBinaryVectorAccessor(
       ByteArrayGetter getter,
       IntSupplier currentRowSupplier,
diff --git 
a/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/accessor/impl/text/ArrowFlightJdbcVarCharVectorAccessor.java
 
b/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/accessor/impl/text/ArrowFlightJdbcVarCharVectorAccessor.java
index ebebf6ca7..7b04e8934 100644
--- 
a/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/accessor/impl/text/ArrowFlightJdbcVarCharVectorAccessor.java
+++ 
b/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/accessor/impl/text/ArrowFlightJdbcVarCharVectorAccessor.java
@@ -35,6 +35,7 @@ import 
org.apache.arrow.driver.jdbc.accessor.ArrowFlightJdbcAccessorFactory;
 import org.apache.arrow.driver.jdbc.utils.DateTimeUtils;
 import org.apache.arrow.vector.LargeVarCharVector;
 import org.apache.arrow.vector.VarCharVector;
+import org.apache.arrow.vector.ViewVarCharVector;
 import org.apache.arrow.vector.util.Text;
 
 /** Accessor for the Arrow types: {@link VarCharVector} and {@link 
LargeVarCharVector}. */
@@ -62,6 +63,13 @@ public class ArrowFlightJdbcVarCharVectorAccessor extends 
ArrowFlightJdbcAccesso
     this(vector::get, currentRowSupplier, setCursorWasNull);
   }
 
+  public ArrowFlightJdbcVarCharVectorAccessor(
+      ViewVarCharVector vector,
+      IntSupplier currentRowSupplier,
+      ArrowFlightJdbcAccessorFactory.WasNullConsumer setCursorWasNull) {
+    this(vector::get, currentRowSupplier, setCursorWasNull);
+  }
+
   ArrowFlightJdbcVarCharVectorAccessor(
       Getter getter,
       IntSupplier currentRowSupplier,
diff --git 
a/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/converter/impl/BinaryViewAvaticaParameterConverter.java
 
b/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/converter/impl/BinaryViewAvaticaParameterConverter.java
index a035bbba4..d692f3937 100644
--- 
a/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/converter/impl/BinaryViewAvaticaParameterConverter.java
+++ 
b/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/converter/impl/BinaryViewAvaticaParameterConverter.java
@@ -17,6 +17,7 @@
 package org.apache.arrow.driver.jdbc.converter.impl;
 
 import org.apache.arrow.vector.FieldVector;
+import org.apache.arrow.vector.ViewVarBinaryVector;
 import org.apache.arrow.vector.types.pojo.ArrowType;
 import org.apache.arrow.vector.types.pojo.Field;
 import org.apache.calcite.avatica.AvaticaParameter;
@@ -29,7 +30,12 @@ public class BinaryViewAvaticaParameterConverter extends 
BaseAvaticaParameterCon
 
   @Override
   public boolean bindParameter(FieldVector vector, TypedValue typedValue, int 
index) {
-    throw new UnsupportedOperationException("Not implemented");
+    byte[] value = (byte[]) typedValue.toJdbc(null);
+    if (vector instanceof ViewVarBinaryVector) {
+      ((ViewVarBinaryVector) vector).setSafe(index, value);
+      return true;
+    }
+    return false;
   }
 
   @Override
diff --git 
a/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/converter/impl/Utf8ViewAvaticaParameterConverter.java
 
b/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/converter/impl/Utf8ViewAvaticaParameterConverter.java
index 076fefc42..c9d9f2926 100644
--- 
a/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/converter/impl/Utf8ViewAvaticaParameterConverter.java
+++ 
b/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/converter/impl/Utf8ViewAvaticaParameterConverter.java
@@ -17,8 +17,10 @@
 package org.apache.arrow.driver.jdbc.converter.impl;
 
 import org.apache.arrow.vector.FieldVector;
+import org.apache.arrow.vector.ViewVarCharVector;
 import org.apache.arrow.vector.types.pojo.ArrowType;
 import org.apache.arrow.vector.types.pojo.Field;
+import org.apache.arrow.vector.util.Text;
 import org.apache.calcite.avatica.AvaticaParameter;
 import org.apache.calcite.avatica.remote.TypedValue;
 
@@ -29,7 +31,12 @@ public class Utf8ViewAvaticaParameterConverter extends 
BaseAvaticaParameterConve
 
   @Override
   public boolean bindParameter(FieldVector vector, TypedValue typedValue, int 
index) {
-    throw new UnsupportedOperationException("Utf8View not supported");
+    String value = (String) typedValue.toLocal();
+    if (vector instanceof ViewVarCharVector) {
+      ((ViewVarCharVector) vector).setSafe(index, new Text(value));
+      return true;
+    }
+    return false;
   }
 
   @Override
diff --git 
a/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/AvaticaParameterBinder.java
 
b/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/AvaticaParameterBinder.java
index 0fd99de53..8c98ee407 100644
--- 
a/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/AvaticaParameterBinder.java
+++ 
b/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/AvaticaParameterBinder.java
@@ -19,6 +19,7 @@ package org.apache.arrow.driver.jdbc.utils;
 import java.util.List;
 import 
org.apache.arrow.driver.jdbc.client.ArrowFlightSqlClientHandler.PreparedStatement;
 import 
org.apache.arrow.driver.jdbc.converter.impl.BinaryAvaticaParameterConverter;
+import 
org.apache.arrow.driver.jdbc.converter.impl.BinaryViewAvaticaParameterConverter;
 import 
org.apache.arrow.driver.jdbc.converter.impl.BoolAvaticaParameterConverter;
 import 
org.apache.arrow.driver.jdbc.converter.impl.DateAvaticaParameterConverter;
 import 
org.apache.arrow.driver.jdbc.converter.impl.DecimalAvaticaParameterConverter;
@@ -39,6 +40,7 @@ import 
org.apache.arrow.driver.jdbc.converter.impl.TimeAvaticaParameterConverter
 import 
org.apache.arrow.driver.jdbc.converter.impl.TimestampAvaticaParameterConverter;
 import 
org.apache.arrow.driver.jdbc.converter.impl.UnionAvaticaParameterConverter;
 import 
org.apache.arrow.driver.jdbc.converter.impl.Utf8AvaticaParameterConverter;
+import 
org.apache.arrow.driver.jdbc.converter.impl.Utf8ViewAvaticaParameterConverter;
 import org.apache.arrow.memory.BufferAllocator;
 import org.apache.arrow.vector.FieldVector;
 import org.apache.arrow.vector.VectorSchemaRoot;
@@ -208,7 +210,7 @@ public class AvaticaParameterBinder {
 
     @Override
     public Boolean visit(ArrowType.Utf8View type) {
-      throw new UnsupportedOperationException("Utf8View is unsupported");
+      return new Utf8ViewAvaticaParameterConverter(type).bindParameter(vector, 
typedValue, index);
     }
 
     @Override
@@ -223,7 +225,7 @@ public class AvaticaParameterBinder {
 
     @Override
     public Boolean visit(ArrowType.BinaryView type) {
-      throw new UnsupportedOperationException("BinaryView is unsupported");
+      return new 
BinaryViewAvaticaParameterConverter(type).bindParameter(vector, typedValue, 
index);
     }
 
     @Override
diff --git 
a/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/SqlTypes.java
 
b/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/SqlTypes.java
index 1b76ca0c9..5ba3957f8 100644
--- 
a/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/SqlTypes.java
+++ 
b/flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/SqlTypes.java
@@ -107,12 +107,14 @@ public class SqlTypes {
         }
         break;
       case Binary:
+      case BinaryView:
         return Types.VARBINARY;
       case FixedSizeBinary:
         return Types.BINARY;
       case LargeBinary:
         return Types.LONGVARBINARY;
       case Utf8:
+      case Utf8View:
         return Types.VARCHAR;
       case LargeUtf8:
         return Types.LONGVARCHAR;
diff --git 
a/flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/accessor/ArrowFlightJdbcAccessorFactoryTest.java
 
b/flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/accessor/ArrowFlightJdbcAccessorFactoryTest.java
index b56bf3c63..8b39041f0 100644
--- 
a/flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/accessor/ArrowFlightJdbcAccessorFactoryTest.java
+++ 
b/flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/accessor/ArrowFlightJdbcAccessorFactoryTest.java
@@ -46,6 +46,8 @@ import org.apache.arrow.vector.IntervalYearVector;
 import org.apache.arrow.vector.LargeVarCharVector;
 import org.apache.arrow.vector.ValueVector;
 import org.apache.arrow.vector.VarCharVector;
+import org.apache.arrow.vector.ViewVarBinaryVector;
+import org.apache.arrow.vector.ViewVarCharVector;
 import org.apache.arrow.vector.complex.DenseUnionVector;
 import org.apache.arrow.vector.complex.MapVector;
 import org.apache.arrow.vector.complex.StructVector;
@@ -239,6 +241,18 @@ public class ArrowFlightJdbcAccessorFactoryTest {
     }
   }
 
+  @Test
+  public void createAccessorForViewVarBinaryVector() {
+    try (ValueVector valueVector =
+        new ViewVarBinaryVector("", 
rootAllocatorTestExtension.getRootAllocator())) {
+      ArrowFlightJdbcAccessor accessor =
+          ArrowFlightJdbcAccessorFactory.createAccessor(
+              valueVector, GET_CURRENT_ROW, (boolean wasNull) -> {});
+
+      assertTrue(accessor instanceof ArrowFlightJdbcBinaryVectorAccessor);
+    }
+  }
+
   @Test
   public void createAccessorForTimeStampVector() {
     try (ValueVector valueVector = 
rootAllocatorTestExtension.createTimeStampMilliVector()) {
@@ -340,6 +354,18 @@ public class ArrowFlightJdbcAccessorFactoryTest {
     }
   }
 
+  @Test
+  public void createAccessorForViewVarCharVector() {
+    try (ValueVector valueVector =
+        new ViewVarCharVector("", 
rootAllocatorTestExtension.getRootAllocator())) {
+      ArrowFlightJdbcAccessor accessor =
+          ArrowFlightJdbcAccessorFactory.createAccessor(
+              valueVector, GET_CURRENT_ROW, (boolean wasNull) -> {});
+
+      assertTrue(accessor instanceof ArrowFlightJdbcVarCharVectorAccessor);
+    }
+  }
+
   @Test
   public void createAccessorForDurationVector() {
     try (ValueVector valueVector =
diff --git 
a/flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/accessor/impl/text/ArrowFlightJdbcVarCharVectorAccessorTest.java
 
b/flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/accessor/impl/text/ArrowFlightJdbcVarCharVectorAccessorTest.java
index a2f6fd586..82876f4aa 100644
--- 
a/flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/accessor/impl/text/ArrowFlightJdbcVarCharVectorAccessorTest.java
+++ 
b/flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/accessor/impl/text/ArrowFlightJdbcVarCharVectorAccessorTest.java
@@ -24,6 +24,8 @@ import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.mockito.Mockito.when;
 
@@ -46,6 +48,8 @@ import 
org.apache.arrow.driver.jdbc.utils.ThrowableAssertionUtils;
 import org.apache.arrow.vector.DateMilliVector;
 import org.apache.arrow.vector.TimeMilliVector;
 import org.apache.arrow.vector.TimeStampVector;
+import org.apache.arrow.vector.VarCharVector;
+import org.apache.arrow.vector.ViewVarCharVector;
 import org.apache.arrow.vector.util.Text;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -695,4 +699,26 @@ public class ArrowFlightJdbcVarCharVectorAccessorTest {
     final Class<?> clazz = accessor.getObjectClass();
     assertThat(clazz, equalTo(String.class));
   }
+
+  @Test
+  public void testViewVarcharVector() throws Exception {
+    try (VarCharVector varCharVector =
+            new VarCharVector("", 
rootAllocatorTestExtension.getRootAllocator());
+        ViewVarCharVector viewVarCharVector =
+            new ViewVarCharVector("", 
rootAllocatorTestExtension.getRootAllocator())) {
+      varCharVector.allocateNew(1);
+      viewVarCharVector.allocateNew(1);
+
+      ArrowFlightJdbcVarCharVectorAccessor varCharVectorAccessor =
+          new ArrowFlightJdbcVarCharVectorAccessor(varCharVector, () -> 0, 
(boolean wasNull) -> {});
+      ArrowFlightJdbcVarCharVectorAccessor viewVarcharVectorAccessor =
+          new ArrowFlightJdbcVarCharVectorAccessor(
+              viewVarCharVector, () -> 0, (boolean wasNull) -> {});
+      assertNull(viewVarcharVectorAccessor.getString());
+
+      varCharVector.set(0, new Text("looooong_string"));
+      viewVarCharVector.set(0, new Text("looooong_string"));
+      assertEquals(varCharVectorAccessor.getString(), 
viewVarcharVectorAccessor.getString());
+    }
+  }
 }
diff --git 
a/flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/utils/ConvertUtilsTest.java
 
b/flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/utils/ConvertUtilsTest.java
index b6fdc9969..f128ca7c7 100644
--- 
a/flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/utils/ConvertUtilsTest.java
+++ 
b/flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/utils/ConvertUtilsTest.java
@@ -69,6 +69,19 @@ public class ConvertUtilsTest {
                         .tableName("table1")
                         .build()
                         .getMetadataMap()),
+                null),
+            new Field(
+                "col2",
+                new FieldType(
+                    true,
+                    ArrowType.Utf8View.INSTANCE,
+                    null,
+                    new FlightSqlColumnMetadata.Builder()
+                        .catalogName("catalog1")
+                        .schemaName("schema1")
+                        .tableName("table1")
+                        .build()
+                        .getMetadataMap()),
                 null));
 
     final List<ColumnMetaData> expectedColumnMetaData =
@@ -78,6 +91,25 @@ public class ConvertUtilsTest {
                     .setCatalogName("catalog1")
                     .setSchemaName("schema1")
                     .setTableName("table1")
+                    .setColumnName("col1")
+                    .setType(
+                        Common.AvaticaType.newBuilder()
+                            
.setId(SqlTypes.getSqlTypeIdFromArrowType(ArrowType.Utf8.INSTANCE))
+                            
.setName(SqlTypes.getSqlTypeNameFromArrowType(ArrowType.Utf8.INSTANCE))
+                            .build())
+                    .build()),
+            ColumnMetaData.fromProto(
+                Common.ColumnMetaData.newBuilder()
+                    .setCatalogName("catalog1")
+                    .setSchemaName("schema1")
+                    .setTableName("table1")
+                    .setColumnName("col2")
+                    .setType(
+                        Common.AvaticaType.newBuilder()
+                            
.setId(SqlTypes.getSqlTypeIdFromArrowType(ArrowType.Utf8View.INSTANCE))
+                            .setName(
+                                
SqlTypes.getSqlTypeNameFromArrowType(ArrowType.Utf8View.INSTANCE))
+                            .build())
                     .build()));
 
     final List<ColumnMetaData> actualColumnMetaData =
@@ -95,6 +127,8 @@ public class ConvertUtilsTest {
       assertThat(expectedColumnMetaData.catalogName, 
equalTo(actualColumnMetaData.catalogName));
       assertThat(expectedColumnMetaData.schemaName, 
equalTo(actualColumnMetaData.schemaName));
       assertThat(expectedColumnMetaData.tableName, 
equalTo(actualColumnMetaData.tableName));
+      assertThat(expectedColumnMetaData.columnName, 
equalTo(actualColumnMetaData.columnName));
+      assertThat(expectedColumnMetaData.type, 
equalTo(actualColumnMetaData.type));
       assertThat(expectedColumnMetaData.readOnly, 
equalTo(actualColumnMetaData.readOnly));
       assertThat(expectedColumnMetaData.autoIncrement, 
equalTo(actualColumnMetaData.autoIncrement));
       assertThat(expectedColumnMetaData.precision, 
equalTo(actualColumnMetaData.precision));
diff --git 
a/flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/utils/SqlTypesTest.java
 
b/flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/utils/SqlTypesTest.java
index a6dd6b327..d69c54929 100644
--- 
a/flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/utils/SqlTypesTest.java
+++ 
b/flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/utils/SqlTypesTest.java
@@ -40,9 +40,11 @@ public class SqlTypesTest {
 
     assertEquals(Types.BINARY, getSqlTypeIdFromArrowType(new 
ArrowType.FixedSizeBinary(1024)));
     assertEquals(Types.VARBINARY, getSqlTypeIdFromArrowType(new 
ArrowType.Binary()));
+    assertEquals(Types.VARBINARY, getSqlTypeIdFromArrowType(new 
ArrowType.BinaryView()));
     assertEquals(Types.LONGVARBINARY, getSqlTypeIdFromArrowType(new 
ArrowType.LargeBinary()));
 
     assertEquals(Types.VARCHAR, getSqlTypeIdFromArrowType(new 
ArrowType.Utf8()));
+    assertEquals(Types.VARCHAR, getSqlTypeIdFromArrowType(new 
ArrowType.Utf8View()));
     assertEquals(Types.LONGVARCHAR, getSqlTypeIdFromArrowType(new 
ArrowType.LargeUtf8()));
 
     assertEquals(Types.DATE, getSqlTypeIdFromArrowType(new 
ArrowType.Date(DateUnit.MILLISECOND)));
@@ -94,9 +96,11 @@ public class SqlTypesTest {
 
     assertEquals("BINARY", getSqlTypeNameFromArrowType(new 
ArrowType.FixedSizeBinary(1024)));
     assertEquals("VARBINARY", getSqlTypeNameFromArrowType(new 
ArrowType.Binary()));
+    assertEquals("VARBINARY", getSqlTypeNameFromArrowType(new 
ArrowType.BinaryView()));
     assertEquals("LONGVARBINARY", getSqlTypeNameFromArrowType(new 
ArrowType.LargeBinary()));
 
     assertEquals("VARCHAR", getSqlTypeNameFromArrowType(new ArrowType.Utf8()));
+    assertEquals("VARCHAR", getSqlTypeNameFromArrowType(new 
ArrowType.Utf8View()));
     assertEquals("LONGVARCHAR", getSqlTypeNameFromArrowType(new 
ArrowType.LargeUtf8()));
 
     assertEquals("DATE", getSqlTypeNameFromArrowType(new 
ArrowType.Date(DateUnit.MILLISECOND)));

Reply via email to