xtdb / xtdb

An immutable database for application development and time-travel data compliance, with SQL and XTQL. Developed by @juxt

Home Page:https://xtdb.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Clarify nested list handling and errors

refset opened this issue · comments

From @nivekuil (thread)

Inserting complex lists (clojure code) gives an unexpected error

{:xt/id 1 :data '(())}

1. Unhandled java.lang.IllegalArgumentException
   Lists have one child Field. Found: none

        Preconditions.java:  205  org.apache.arrow.util.Preconditions/checkArgument
           ListVector.java:  116  org.apache.arrow.vector.complex.ListVector/initializeChildrenFromFields
                Field.java:  111  org.apache.arrow.vector.types.pojo.Field/createVector

not just empty lists to be clear, {:xt/id 1 :data '((1))} gives the same error

{:xt/id 1 :data [[2] [1]]} throws but {:xt/id 1 :data [2 [1]]} does not

@jarohen Currently when we are promoting the vectors we are only passing FieldType to update/promote any children. The problem is that list Fields (and by extension sets) need a child to initialize. Should we try to use Field instead? Just initializing with something canonical (like null list) might result in unwanted DUV's.