From 4731528d495a05566b81839c4dd7d9c03cc99b82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Finn=20V=C3=B6lkel?= Date: Tue, 2 Apr 2024 12:05:57 +0200 Subject: [PATCH] Workaround for apache/arrow#30866 for sparse unions --- core/src/main/clojure/xtdb/util.clj | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/src/main/clojure/xtdb/util.clj b/core/src/main/clojure/xtdb/util.clj index 7f00ee4f79..8a19289634 100644 --- a/core/src/main/clojure/xtdb/util.clj +++ b/core/src/main/clojure/xtdb/util.clj @@ -25,7 +25,7 @@ (org.apache.arrow.memory AllocationManager ArrowBuf BufferAllocator) (org.apache.arrow.memory.util ByteFunctionHelpers MemoryUtil) (org.apache.arrow.vector BaseFixedWidthVector ValueVector VectorLoader VectorSchemaRoot) - (org.apache.arrow.vector.complex ListVector) + (org.apache.arrow.vector.complex ListVector UnionVector) (org.apache.arrow.vector.ipc ArrowFileWriter ArrowStreamWriter ArrowWriter) (org.apache.arrow.vector.ipc.message ArrowBlock ArrowFooter MessageSerializer) xtdb.util.NormalForm)) @@ -338,6 +338,10 @@ (and (instance? ListVector v) (= 0 start-idx len)) (ListVector/empty (.getName v) (.getAllocator v)) + (and (instance? UnionVector v) (= 0 start-idx len)) + (doto (UnionVector/empty (.getName v) (.getAllocator v)) + (.initializeChildrenFromFields (.getChildren (.getField v)))) + ;; doesn't preserve nullability otherwise (instance? BaseFixedWidthVector v) (-> (.getTransferPair v (.getField v) (.getAllocator v))