This is an automated email from the ASF dual-hosted git repository.
wyk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
The following commit(s) were added to refs/heads/master by this push:
new 5e195e23a4 [ASTERIXDB-3234][STO] Fix handling empty arrays in columnar
datasets
5e195e23a4 is described below
commit 5e195e23a47097a5e1979ed17a49928f6fa6547b
Author: Wail Alkowaileet <[email protected]>
AuthorDate: Sun Aug 6 10:21:41 2023 -0700
[ASTERIXDB-3234][STO] Fix handling empty arrays in columnar datasets
- user model changes: no
- storage format changes: yes
- interface changes: no
Details:
Fix the issue of handling empty arrays in columnar datasets
Storage format changes:
- Repeated values will always end with a MISSING value.
The last MISSING value will be used as an indicator that the
array itself is present and it will be consumed by the assembler
and won't be included in the assembled array. In case of an
empty array, the last MISSING value will be consumed and
an empty array will be returned.
Change-Id: I220e9e8ede45530ef61656530309c79321dc189c
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17693
Integration-Tests: Jenkins <[email protected]>
Reviewed-by: Murtadha Hubail <[email protected]>
Tested-by: Jenkins <[email protected]>
---
.../column/empty-array/001/001.001.ddl.sqlpp | 33 +++++++++++++++++++++
.../column/empty-array/001/001.002.update.sqlpp | 24 +++++++++++++++
.../column/empty-array/001/001.003.get.http | 19 ++++++++++++
.../column/empty-array/001/001.004.query.sqlpp | 24 +++++++++++++++
.../column/empty-array/002/002.001.ddl.sqlpp | 33 +++++++++++++++++++++
.../column/empty-array/002/002.002.update.sqlpp | 29 ++++++++++++++++++
.../column/empty-array/002/002.003.get.http | 19 ++++++++++++
.../column/empty-array/002/002.004.query.sqlpp | 24 +++++++++++++++
.../column/empty-array/003/003.001.ddl.sqlpp | 33 +++++++++++++++++++++
.../column/empty-array/003/003.002.update.sqlpp | 28 ++++++++++++++++++
.../column/empty-array/003/003.003.get.http | 19 ++++++++++++
.../column/empty-array/003/003.004.query.sqlpp | 24 +++++++++++++++
.../column/empty-array/001/001.003.regexadm | 1 +
.../results/column/empty-array/001/001.004.adm | 1 +
.../column/empty-array/002/002.003.regexadm | 1 +
.../results/column/empty-array/002/002.004.adm | 6 ++++
.../column/empty-array/003/003.003.regexadm | 1 +
.../results/column/empty-array/003/003.004.adm | 5 ++++
.../test/resources/runtimets/testsuite_sqlpp.xml | 15 ++++++++++
.../column/assembler/ArrayValueAssembler.java | 15 +++++++++-
.../column/assembler/AssemblerBuilderVisitor.java | 2 +-
.../assembler/RepeatedPrimitiveValueAssembler.java | 11 +++++--
.../operation/lsm/flush/ColumnTransformer.java | 4 +++
.../reader/AbstractDummyColumnValuesReader.java | 2 +-
.../src/test/resources/data/003-arrayEmpty.json | 3 ++
.../asterix-column/src/test/resources/only.txt | 1 +
.../resources/result/assembler/003-arrayEmpty.json | 3 ++
.../resources/result/small/003-arrayEmpty.json | 3 ++
.../result/transformer/000-arrayOfInt.schema | 2 +-
.../result/transformer/001-arrayObject.schema | 4 +--
.../result/transformer/002-arrayObject2.schema | 20 ++++++-------
.../result/transformer/003-emptyArray.schema | 7 +++++
.../transformer/202-unionPrimitiveArray.schema | 4 +--
.../transformer/203-unionNestedNested.schema | 4 +--
.../204-unionArrayPrimitiveItems.schema | 8 ++---
.../205-unionArrayPrimitiveObjectItems.schema | 10 +++----
.../206-unionArrayPrimitiveObjectArrayItems.schema | 14 ++++-----
.../transformer/207-unionArrayNullItems0.schema | 4 +--
.../transformer/208-unionArrayNullItems1.schema | 4 +--
.../transformer/209-unionArrayNullItems2.schema | 4 +--
.../transformer/210-unionArrayNullItems3.schema | 4 +--
.../result/transformer/320-null-array0.schema | 2 +-
.../result/transformer/321-null-array1.schema | 2 +-
.../result/transformer/322-null-array2.schema | 2 +-
.../result/transformer/323-null-array3.schema | 2 +-
.../result/transformer/324-null-array4.schema | 2 +-
.../result/transformer/325-null-array5.schema | 4 +--
.../result/transformer/326-null-array6.schema | 4 +--
.../result/transformer/327-null-array7.schema | 4 +--
.../result/transformer/900-dummy-tweet.schema | 34 +++++++++++-----------
50 files changed, 453 insertions(+), 75 deletions(-)
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/001/001.001.ddl.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/001/001.001.ddl.sqlpp
new file mode 100644
index 0000000000..006d75cd27
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/001/001.001.ddl.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+DROP DATAVERSE test IF EXISTS;
+CREATE DATAVERSE test;
+
+USE test;
+
+
+CREATE TYPE OpenType AS {
+ id: int
+};
+
+CREATE DATASET ColumnDataset(OpenType)
+PRIMARY KEY id WITH {
+ "storage-format": {"format" : "column"}
+};
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/001/001.002.update.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/001/001.002.update.sqlpp
new file mode 100644
index 0000000000..72d41d8da1
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/001/001.002.update.sqlpp
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+USE test;
+
+UPSERT INTO ColumnDataset (
+ {"id": 1, "a" : []}
+);
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/001/001.003.get.http
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/001/001.003.get.http
new file mode 100644
index 0000000000..57d830aed0
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/001/001.003.get.http
@@ -0,0 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/001/001.004.query.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/001/001.004.query.sqlpp
new file mode 100644
index 0000000000..285ca9d162
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/001/001.004.query.sqlpp
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+USE test;
+
+SELECT VALUE p
+FROM ColumnDataset p
+ORDER BY p.id
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/002/002.001.ddl.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/002/002.001.ddl.sqlpp
new file mode 100644
index 0000000000..006d75cd27
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/002/002.001.ddl.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+DROP DATAVERSE test IF EXISTS;
+CREATE DATAVERSE test;
+
+USE test;
+
+
+CREATE TYPE OpenType AS {
+ id: int
+};
+
+CREATE DATASET ColumnDataset(OpenType)
+PRIMARY KEY id WITH {
+ "storage-format": {"format" : "column"}
+};
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/002/002.002.update.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/002/002.002.update.sqlpp
new file mode 100644
index 0000000000..9d3377818b
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/002/002.002.update.sqlpp
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+USE test;
+
+UPSERT INTO ColumnDataset (
+ {"id": 1, "a" : [{"b": [1]}]},
+ {"id": 2, "a" : [{"c": [1]}]},
+ {"id": 3, "a" : [{"c": []}]},
+ {"id": 4, "a" : [{"b": []}]},
+ {"id": 5, "a" : []},
+ {"id": 6}
+);
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/002/002.003.get.http
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/002/002.003.get.http
new file mode 100644
index 0000000000..57d830aed0
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/002/002.003.get.http
@@ -0,0 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/002/002.004.query.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/002/002.004.query.sqlpp
new file mode 100644
index 0000000000..285ca9d162
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/002/002.004.query.sqlpp
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+USE test;
+
+SELECT VALUE p
+FROM ColumnDataset p
+ORDER BY p.id
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/003/003.001.ddl.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/003/003.001.ddl.sqlpp
new file mode 100644
index 0000000000..006d75cd27
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/003/003.001.ddl.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+DROP DATAVERSE test IF EXISTS;
+CREATE DATAVERSE test;
+
+USE test;
+
+
+CREATE TYPE OpenType AS {
+ id: int
+};
+
+CREATE DATASET ColumnDataset(OpenType)
+PRIMARY KEY id WITH {
+ "storage-format": {"format" : "column"}
+};
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/003/003.002.update.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/003/003.002.update.sqlpp
new file mode 100644
index 0000000000..a5b883ac85
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/003/003.002.update.sqlpp
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+USE test;
+
+UPSERT INTO ColumnDataset (
+ {"id": 1, "a" : [[1,2,3]]},
+ {"id": 2, "a" : [[{"a":1}, {"b":1}]]},
+ {"id": 3, "a" : [[]]},
+ {"id": 4, "a" : []},
+ {"id": 5}
+);
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/003/003.003.get.http
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/003/003.003.get.http
new file mode 100644
index 0000000000..57d830aed0
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/003/003.003.get.http
@@ -0,0 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/003/003.004.query.sqlpp
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/003/003.004.query.sqlpp
new file mode 100644
index 0000000000..285ca9d162
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/empty-array/003/003.004.query.sqlpp
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+USE test;
+
+SELECT VALUE p
+FROM ColumnDataset p
+ORDER BY p.id
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/001/001.003.regexadm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/001/001.003.regexadm
new file mode 100644
index 0000000000..9f1dc3ae17
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/001/001.003.regexadm
@@ -0,0 +1 @@
+\Q{"keys":"id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"OpenType","open":true,"fields":[{"id":{"type":"AInt64"}}]},"splits":[\E.*\Q]}\E
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/001/001.004.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/001/001.004.adm
new file mode 100644
index 0000000000..4e2d161ac1
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/001/001.004.adm
@@ -0,0 +1 @@
+{ "id": 1, "a": [ ] }
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/002/002.003.regexadm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/002/002.003.regexadm
new file mode 100644
index 0000000000..9f1dc3ae17
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/002/002.003.regexadm
@@ -0,0 +1 @@
+\Q{"keys":"id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"OpenType","open":true,"fields":[{"id":{"type":"AInt64"}}]},"splits":[\E.*\Q]}\E
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/002/002.004.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/002/002.004.adm
new file mode 100644
index 0000000000..70130b0ec9
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/002/002.004.adm
@@ -0,0 +1,6 @@
+{ "id": 1, "a": [ { "b": [ 1 ] } ] }
+{ "id": 2, "a": [ { "c": [ 1 ] } ] }
+{ "id": 3, "a": [ { "c": [ ] } ] }
+{ "id": 4, "a": [ { "b": [ ] } ] }
+{ "id": 5, "a": [ ] }
+{ "id": 6 }
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/003/003.003.regexadm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/003/003.003.regexadm
new file mode 100644
index 0000000000..9f1dc3ae17
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/003/003.003.regexadm
@@ -0,0 +1 @@
+\Q{"keys":"id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"OpenType","open":true,"fields":[{"id":{"type":"AInt64"}}]},"splits":[\E.*\Q]}\E
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/003/003.004.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/003/003.004.adm
new file mode 100644
index 0000000000..9b72daa142
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/empty-array/003/003.004.adm
@@ -0,0 +1,5 @@
+{ "id": 1, "a": [ [ 1, 2, 3 ] ] }
+{ "id": 2, "a": [ [ { "a": 1 }, { "b": 1 } ] ] }
+{ "id": 3, "a": [ [ ] ] }
+{ "id": 4, "a": [ ] }
+{ "id": 5 }
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index fc0cecad7b..c311681cd6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -16191,6 +16191,21 @@
<output-dir compare="Text">missing-null-values/006</output-dir>
</compilation-unit>
</test-case>
+ <test-case FilePath="column">
+ <compilation-unit name="empty-array/001">
+ <output-dir compare="Text">empty-array/001</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="column">
+ <compilation-unit name="empty-array/002">
+ <output-dir compare="Text">empty-array/002</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="column">
+ <compilation-unit name="empty-array/003">
+ <output-dir compare="Text">empty-array/003</output-dir>
+ </compilation-unit>
+ </test-case>
<test-case FilePath="column">
<compilation-unit name="pushdown/array-access-pushdown">
<output-dir compare="Text">pushdown/array-access-pushdown</output-dir>
diff --git
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/ArrayValueAssembler.java
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/ArrayValueAssembler.java
index 2352e7fc96..fa001391d1 100644
---
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/ArrayValueAssembler.java
+++
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/ArrayValueAssembler.java
@@ -28,12 +28,14 @@ public class ArrayValueAssembler extends
AbstractNestedValueAssembler {
private final IAsterixListBuilder listBuilder;
private final AbstractCollectionType collectionType;
private final int firstValueIndex;
+ private boolean missing;
ArrayValueAssembler(int level, AssemblerInfo info, int firstValueIndex) {
super(level, info);
this.firstValueIndex = firstValueIndex;
collectionType = (AbstractCollectionType) info.getDeclaredType();
listBuilder = new
ListBuilderFactory().create(collectionType.getTypeTag());
+ missing = false;
}
final int getFirstValueIndex() {
@@ -42,23 +44,27 @@ public class ArrayValueAssembler extends
AbstractNestedValueAssembler {
@Override
void reset() {
+ missing = false;
listBuilder.reset(collectionType);
storage.reset();
}
@Override
void addValue(AbstractValueAssembler value) throws HyracksDataException {
+ writePreviousMissing();
listBuilder.addItem(value.getValue());
}
@Override
void addNull(AbstractValueAssembler value) throws HyracksDataException {
+ writePreviousMissing();
listBuilder.addItem(NULL);
}
@Override
void addMissing() throws HyracksDataException {
- listBuilder.addItem(MISSING);
+ writePreviousMissing();
+ missing = true;
}
@Override
@@ -72,4 +78,11 @@ public class ArrayValueAssembler extends
AbstractNestedValueAssembler {
public IValueReference getValue() {
return storage;
}
+
+ private void writePreviousMissing() throws HyracksDataException {
+ if (missing) {
+ listBuilder.addItem(MISSING);
+ missing = false;
+ }
+ }
}
diff --git
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/AssemblerBuilderVisitor.java
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/AssemblerBuilderVisitor.java
index 5acfa082bd..15e2bb9d3d 100644
---
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/AssemblerBuilderVisitor.java
+++
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/AssemblerBuilderVisitor.java
@@ -165,7 +165,7 @@ public class AssemblerBuilderVisitor implements
ISchemaNodeVisitor<AbstractValue
// if delegateAssembler is null, that means no column will be accessed
if (delegateAssembler != null) {
// Set repeated assembler as a delegate (responsible for writing
null values)
- delegateAssembler.setAsDelegate();
+ delegateAssembler.setAsDelegate(level - 1);
IColumnValuesReader reader = delegateAssembler.getReader();
int numberOfDelimiters = reader.getNumberOfDelimiters();
// End of group assembler is responsible to finalize
array/multiset builders
diff --git
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/RepeatedPrimitiveValueAssembler.java
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/RepeatedPrimitiveValueAssembler.java
index 502f642764..8b44534784 100644
---
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/RepeatedPrimitiveValueAssembler.java
+++
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/RepeatedPrimitiveValueAssembler.java
@@ -28,11 +28,13 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
final class RepeatedPrimitiveValueAssembler extends
AbstractPrimitiveValueAssembler {
private boolean arrayDelegate;
+ private int arrayLevel;
RepeatedPrimitiveValueAssembler(int level, AssemblerInfo info,
IColumnValuesReader reader,
IValueGetter primitiveValue) {
super(level, info, reader, primitiveValue);
this.arrayDelegate = false;
+ arrayLevel = 0;
}
@Override
@@ -65,9 +67,10 @@ final class RepeatedPrimitiveValueAssembler extends
AbstractPrimitiveValueAssemb
return reader;
}
- public void setAsDelegate() {
+ public void setAsDelegate(int arrayLevel) {
// This assembler is responsible for adding null values
this.arrayDelegate = true;
+ this.arrayLevel = arrayLevel;
}
private void next() throws HyracksDataException {
@@ -81,9 +84,11 @@ final class RepeatedPrimitiveValueAssembler extends
AbstractPrimitiveValueAssemb
* (i.e., arrayDelegate is true)
*/
addNullToAncestor(reader.getLevel());
- } else if (reader.isMissing() && reader.getLevel() + 1 == level) {
+ } else if (reader.isMissing() && (arrayLevel == reader.getLevel() ||
reader.getLevel() + 1 == level)) {
/*
- * Add a missing item
+ * Add a missing item in either
+ * - the array item is MISSING
+ * - the array itself is missing and this reader is a delegate for
the array level specified
*/
addMissingToAncestor(reader.getLevel());
} else if (reader.isValue()) {
diff --git
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/ColumnTransformer.java
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/ColumnTransformer.java
index 48cd442c09..d1e439d8b4 100644
---
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/ColumnTransformer.java
+++
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/ColumnTransformer.java
@@ -124,6 +124,10 @@ public class ColumnTransformer implements
ILazyVisitablePointableVisitor<Abstrac
defLevels.add(missingLevel);
}
+ // Add missing as a last element of the array to help indicate empty
arrays
+ collectionNode.getOrCreateItem(ATypeTag.MISSING, columnMetadata);
+ defLevels.add(missingLevel);
+
columnMetadata.exitCollectionNode(collectionNode, numberOfChildren);
currentParent = previousParent;
return null;
diff --git
a/asterixdb/asterix-column/src/test/java/org/apache/asterix/column/values/reader/AbstractDummyColumnValuesReader.java
b/asterixdb/asterix-column/src/test/java/org/apache/asterix/column/values/reader/AbstractDummyColumnValuesReader.java
index a3c6984f50..aceddafacc 100644
---
a/asterixdb/asterix-column/src/test/java/org/apache/asterix/column/values/reader/AbstractDummyColumnValuesReader.java
+++
b/asterixdb/asterix-column/src/test/java/org/apache/asterix/column/values/reader/AbstractDummyColumnValuesReader.java
@@ -102,7 +102,7 @@ public abstract class AbstractDummyColumnValuesReader
implements IColumnValuesRe
@Override
public final boolean isMissing() {
- return level < maxLevel;
+ return !isDelimiter() && level < maxLevel;
}
@Override
diff --git
a/asterixdb/asterix-column/src/test/resources/data/003-arrayEmpty.json
b/asterixdb/asterix-column/src/test/resources/data/003-arrayEmpty.json
new file mode 100644
index 0000000000..2fcf80e17a
--- /dev/null
+++ b/asterixdb/asterix-column/src/test/resources/data/003-arrayEmpty.json
@@ -0,0 +1,3 @@
+{"a" : [{"b" : 1}, {"b" : 2}, {"c" : 3}]}
+{"a" : []}
+{"a" : [{"b" : 1}, {"b" : 2}, {"c" : 3}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-column/src/test/resources/only.txt
b/asterixdb/asterix-column/src/test/resources/only.txt
index 36985fb0bb..4d5d97f2d5 100644
--- a/asterixdb/asterix-column/src/test/resources/only.txt
+++ b/asterixdb/asterix-column/src/test/resources/only.txt
@@ -19,6 +19,7 @@
#000-arrayOfInt
#001-arrayObject
#002-arrayObject2
+#003-arrayEmpty
#100-addFields
#101-nestedAddFields
#200-unionPrimitive
diff --git
a/asterixdb/asterix-column/src/test/resources/result/assembler/003-arrayEmpty.json
b/asterixdb/asterix-column/src/test/resources/result/assembler/003-arrayEmpty.json
new file mode 100644
index 0000000000..3b8b6cc1bc
--- /dev/null
+++
b/asterixdb/asterix-column/src/test/resources/result/assembler/003-arrayEmpty.json
@@ -0,0 +1,3 @@
+{ "a": [ { "b": 1 }, { "b": 2 }, { "c": 3 } ] }
+{ "a": [ ] }
+{ "a": [ { "b": 1 }, { "b": 2 }, { "c": 3 } ] }
\ No newline at end of file
diff --git
a/asterixdb/asterix-column/src/test/resources/result/small/003-arrayEmpty.json
b/asterixdb/asterix-column/src/test/resources/result/small/003-arrayEmpty.json
new file mode 100644
index 0000000000..3b8b6cc1bc
--- /dev/null
+++
b/asterixdb/asterix-column/src/test/resources/result/small/003-arrayEmpty.json
@@ -0,0 +1,3 @@
+{ "a": [ { "b": 1 }, { "b": 2 }, { "c": 3 } ] }
+{ "a": [ ] }
+{ "a": [ { "b": 1 }, { "b": 2 }, { "c": 3 } ] }
\ No newline at end of file
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/000-arrayOfInt.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/000-arrayOfInt.schema
index 3fa50cad38..d6483c97ed 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/000-arrayOfInt.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/000-arrayOfInt.schema
@@ -2,4 +2,4 @@ root
|-- b: array <level: 1>
| |-- item: array <level: 2>
| | |-- item: bigint <level: 3, index: 0>
-| | | |-- Def size: 90
[(3,3),(1,1),(3,3),(1,1),(0,1),(3,3),(1,1),(3,3),(1,1),(0,1),(3,3),(1,1),(3,3),(1,1),(0,1),(3,3),(1,1),(3,3),(1,1),(0,1),(3,3),(1,1),(3,3),(1,1),(0,1),(3,3),(1,1),(3,3),(1,1),(0,1),(3,3),(1,1),(3,3),(1,1),(0,1),(3,3),(1,1),(3,3),(1,1),(0,1),(3,3),(1,1),(3,3),(1,1),(0,1),(3,3),(1,1),(3,3),(1,1),(0,1)]
+| | | |-- Def size: 120
[(3,3),(2,1),(1,1),(3,3),(2,1),(1,2),(0,1),(3,3),(2,1),(1,1),(3,3),(2,1),(1,2),(0,1),(3,3),(2,1),(1,1),(3,3),(2,1),(1,2),(0,1),(3,3),(2,1),(1,1),(3,3),(2,1),(1,2),(0,1),(3,3),(2,1),(1,1),(3,3),(2,1),(1,2),(0,1),(3,3),(2,1),(1,1),(3,3),(2,1),(1,2),(0,1),(3,3),(2,1),(1,1),(3,3),(2,1),(1,2),(0,1),(3,3),(2,1),(1,1),(3,3),(2,1),(1,2),(0,1),(3,3),(2,1),(1,1),(3,3),(2,1),(1,2),(0,1),(3,3),(2,1),(1,1),(3,3),(2,1),(1,2),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/001-arrayObject.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/001-arrayObject.schema
index bc71d8f3ad..96031b0e84 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/001-arrayObject.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/001-arrayObject.schema
@@ -2,6 +2,6 @@ root
|-- a: array <level: 1>
| |-- item: object <level: 2>
| | |-- b: bigint <level: 3, index: 0>
-| | | |-- Def size: 4 [(3,2),(2,1),(0,1)]
+| | | |-- Def size: 5 [(3,2),(2,1),(1,1),(0,1)]
| | |-- c: bigint <level: 3, index: 1>
-| | | |-- Def size: 4 [(2,2),(3,1),(0,1)]
+| | | |-- Def size: 5 [(2,2),(3,1),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/002-arrayObject2.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/002-arrayObject2.schema
index 58f873b2d9..3641c1016d 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/002-arrayObject2.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/002-arrayObject2.schema
@@ -4,26 +4,26 @@ root
| | |-- a: array <level: 3>
| | | |-- item: object <level: 4>
| | | | |-- x: bigint <level: 5, index: 0>
-| | | | | |-- Def size: 21
[(5,1),(4,1),(5,1),(2,1),(0,1),(5,1),(4,1),(5,1),(2,1),(0,1),(5,1),(4,1),(5,1),(2,3),(4,1),(2,1),(0,1),(2,1),(0,1)]
+| | | | | |-- Def size: 29
[(5,1),(4,1),(5,1),(3,1),(2,1),(1,1),(0,1),(5,1),(4,1),(5,1),(3,1),(2,1),(1,1),(0,1),(5,1),(4,1),(5,1),(3,1),(2,3),(4,1),(3,1),(2,1),(1,1),(0,1),(2,1),(1,1),(0,1)]
| | | | |-- y: bigint <level: 5, index: 1>
-| | | | | |-- Def size: 21
[(5,2),(4,1),(2,1),(0,1),(5,2),(4,1),(2,1),(0,1),(5,2),(4,1),(2,3),(4,1),(2,1),(0,1),(2,1),(0,1)]
+| | | | | |-- Def size: 29
[(5,2),(4,1),(3,1),(2,1),(1,1),(0,1),(5,2),(4,1),(3,1),(2,1),(1,1),(0,1),(5,2),(4,1),(3,1),(2,3),(4,1),(3,1),(2,1),(1,1),(0,1),(2,1),(1,1),(0,1)]
| | | | |-- j: bigint <level: 5, index: 7>
-| | | | | |-- Def size: 21
[(4,3),(2,1),(0,1),(4,3),(2,1),(0,1),(4,3),(2,3),(5,1),(2,1),(0,1),(2,1),(0,1)]
+| | | | | |-- Def size: 29
[(4,3),(3,1),(2,1),(1,1),(0,1),(4,3),(3,1),(2,1),(1,1),(0,1),(4,3),(3,1),(2,3),(5,1),(3,1),(2,1),(1,1),(0,1),(2,1),(1,1),(0,1)]
| | |-- b: bigint <level: 3, index: 2>
-| | | |-- Def size: 11
[(3,1),(0,1),(3,1),(0,1),(3,1),(2,3),(0,1),(2,1),(0,1)]
+| | | |-- Def size: 15
[(3,1),(1,1),(0,1),(3,1),(1,1),(0,1),(3,1),(2,3),(1,1),(0,1),(2,1),(1,1),(0,1)]
| | |-- c: bigint <level: 3, index: 3>
-| | | |-- Def size: 11
[(3,1),(0,1),(3,1),(0,1),(3,1),(2,3),(0,1),(2,1),(0,1)]
+| | | |-- Def size: 15
[(3,1),(1,1),(0,1),(3,1),(1,1),(0,1),(3,1),(2,3),(1,1),(0,1),(2,1),(1,1),(0,1)]
| | |-- d: bigint <level: 3, index: 4>
-| | | |-- Def size: 11
[(3,1),(0,1),(3,1),(0,1),(3,1),(2,3),(0,1),(2,1),(0,1)]
+| | | |-- Def size: 15
[(3,1),(1,1),(0,1),(3,1),(1,1),(0,1),(3,1),(2,3),(1,1),(0,1),(2,1),(1,1),(0,1)]
| | |-- f: bigint <level: 3, index: 5>
-| | | |-- Def size: 11
[(2,1),(0,1),(2,1),(0,1),(2,1),(3,1),(2,2),(0,1),(2,1),(0,1)]
+| | | |-- Def size: 15
[(2,1),(1,1),(0,1),(2,1),(1,1),(0,1),(2,1),(3,1),(2,2),(1,1),(0,1),(2,1),(1,1),(0,1)]
| | |-- k: object <level: 3>
| | | |-- v: object <level: 4>
| | | | |-- t: bigint <level: 5, index: 6>
-| | | | | |-- Def size: 11
[(2,1),(0,1),(2,1),(0,1),(2,2),(5,1),(2,1),(0,1),(2,1),(0,1)]
+| | | | | |-- Def size: 15
[(2,1),(1,1),(0,1),(2,1),(1,1),(0,1),(2,2),(5,1),(2,1),(1,1),(0,1),(2,1),(1,1),(0,1)]
| | |-- xyz: array <level: 3>
| | | |-- item: object <level: 4>
| | | | |-- x: bigint <level: 5, index: 8>
-| | | | | |-- Def size: 14
[(2,1),(0,1),(2,1),(0,1),(2,4),(0,1),(5,1),(4,1),(5,1),(2,1),(0,1)]
+| | | | | |-- Def size: 19
[(2,1),(1,1),(0,1),(2,1),(1,1),(0,1),(2,4),(1,1),(0,1),(5,1),(4,1),(5,1),(3,1),(2,1),(1,1),(0,1)]
| | | | |-- y: bigint <level: 5, index: 9>
-| | | | | |-- Def size: 14
[(2,1),(0,1),(2,1),(0,1),(2,4),(0,1),(5,2),(4,1),(2,1),(0,1)]
+| | | | | |-- Def size: 19
[(2,1),(1,1),(0,1),(2,1),(1,1),(0,1),(2,4),(1,1),(0,1),(5,2),(4,1),(3,1),(2,1),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/003-emptyArray.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/003-emptyArray.schema
new file mode 100644
index 0000000000..a1799ff1f4
--- /dev/null
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/003-emptyArray.schema
@@ -0,0 +1,7 @@
+root
+|-- a: array <level: 1>
+| |-- item: object <level: 2>
+| | |-- b: bigint <level: 3, index: 0>
+| | | |-- Def size: 12
[(3,2),(2,1),(1,1),(0,1),(1,1),(0,1),(3,2),(2,1),(1,1),(0,1)]
+| | |-- c: bigint <level: 3, index: 1>
+| | | |-- Def size: 12
[(2,2),(3,1),(1,1),(0,1),(1,1),(0,1),(2,2),(3,1),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/202-unionPrimitiveArray.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/202-unionPrimitiveArray.schema
index 3d20dbcd9e..d3edf898b3 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/202-unionPrimitiveArray.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/202-unionPrimitiveArray.schema
@@ -5,6 +5,6 @@ root
| |-- array: array <level: 1>
| | |-- item: object <level: 2>
| | | |-- b: bigint <level: 3, index: 1>
-| | | | |-- Def size: 10 [(0,1),(3,3),(0,2),(3,3),(0,1)]
+| | | | |-- Def size: 12
[(0,1),(3,3),(1,1),(0,2),(3,3),(1,1),(0,1)]
| | | |-- c: bigint <level: 3, index: 2>
-| | | | |-- Def size: 10 [(0,1),(2,3),(0,2),(3,3),(0,1)]
+| | | | |-- Def size: 12
[(0,1),(2,3),(1,1),(0,2),(3,3),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/203-unionNestedNested.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/203-unionNestedNested.schema
index c1f48cbb48..54a93baa44 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/203-unionNestedNested.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/203-unionNestedNested.schema
@@ -3,9 +3,9 @@ root
| |-- array: array <level: 1>
| | |-- item: object <level: 2>
| | | |-- b: bigint <level: 3, index: 1>
-| | | | |-- Def size: 10 [(0,1),(3,3),(0,2),(3,3),(0,1)]
+| | | | |-- Def size: 12
[(0,1),(3,3),(1,1),(0,2),(3,3),(1,1),(0,1)]
| | | |-- c: bigint <level: 3, index: 2>
-| | | | |-- Def size: 10 [(0,1),(2,3),(0,2),(3,3),(0,1)]
+| | | | |-- Def size: 12
[(0,1),(2,3),(1,1),(0,2),(3,3),(1,1),(0,1)]
| |-- object: object <level: 1>
| | |-- b: bigint <level: 2, index: 0>
| | | |-- Def size: 4 [(2,1),(0,1),(2,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/204-unionArrayPrimitiveItems.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/204-unionArrayPrimitiveItems.schema
index c820a7ec02..5f27ea8e40 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/204-unionArrayPrimitiveItems.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/204-unionArrayPrimitiveItems.schema
@@ -2,10 +2,10 @@ root
|-- a: array <level: 1>
| |-- item: union <level: 2>
| | |-- bigint: bigint <level: 2, index: 0>
-| | | |-- Def size: 13
[(2,1),(0,1),(1,1),(0,1),(1,1),(0,1),(1,1),(0,1),(2,1),(1,3),(0,1)]
+| | | |-- Def size: 18
[(2,1),(1,1),(0,1),(1,2),(0,1),(1,2),(0,1),(1,2),(0,1),(2,1),(1,4),(0,1)]
| | |-- double: double <level: 2, index: 3>
-| | | |-- Def size: 13
[(1,1),(0,1),(1,1),(0,1),(1,1),(0,1),(2,1),(0,1),(1,3),(2,1),(0,1)]
+| | | |-- Def size: 18
[(1,2),(0,1),(1,2),(0,1),(1,2),(0,1),(2,1),(1,1),(0,1),(1,3),(2,1),(1,1),(0,1)]
| | |-- string: string <level: 2, index: 1>
-| | | |-- Def size: 13
[(1,1),(0,1),(2,1),(0,1),(1,1),(0,1),(1,1),(0,1),(1,1),(2,1),(1,2),(0,1)]
+| | | |-- Def size: 18
[(1,2),(0,1),(2,1),(1,1),(0,1),(1,2),(0,1),(1,2),(0,1),(1,1),(2,1),(1,3),(0,1)]
| | |-- boolean: boolean <level: 2, index: 2>
-| | | |-- Def size: 13
[(1,1),(0,1),(1,1),(0,1),(2,1),(0,1),(1,1),(0,1),(1,2),(2,1),(1,1),(0,1)]
+| | | |-- Def size: 18
[(1,2),(0,1),(1,2),(0,1),(2,1),(1,1),(0,1),(1,2),(0,1),(1,2),(2,1),(1,2),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/205-unionArrayPrimitiveObjectItems.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/205-unionArrayPrimitiveObjectItems.schema
index c4436cc27e..207ecc2f29 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/205-unionArrayPrimitiveObjectItems.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/205-unionArrayPrimitiveObjectItems.schema
@@ -2,13 +2,13 @@ root
|-- a: array <level: 1>
| |-- item: union <level: 2>
| | |-- bigint: bigint <level: 2, index: 0>
-| | | |-- Def size: 14
[(2,1),(0,1),(1,1),(0,1),(1,1),(0,1),(1,1),(0,1),(2,1),(1,4),(0,1)]
+| | | |-- Def size: 19
[(2,1),(1,1),(0,1),(1,2),(0,1),(1,2),(0,1),(1,2),(0,1),(2,1),(1,5),(0,1)]
| | |-- boolean: boolean <level: 2, index: 2>
-| | | |-- Def size: 14
[(1,1),(0,1),(1,1),(0,1),(2,1),(0,1),(1,1),(0,1),(1,2),(2,1),(1,2),(0,1)]
+| | | |-- Def size: 19
[(1,2),(0,1),(1,2),(0,1),(2,1),(1,1),(0,1),(1,2),(0,1),(1,2),(2,1),(1,3),(0,1)]
| | |-- object: object <level: 2>
| | | |-- a: bigint <level: 3, index: 1>
-| | | | |-- Def size: 14
[(1,1),(0,1),(3,1),(0,1),(1,1),(0,1),(2,1),(0,1),(1,1),(3,1),(1,1),(2,2),(0,1)]
+| | | | |-- Def size: 19
[(1,2),(0,1),(3,1),(1,1),(0,1),(1,2),(0,1),(2,1),(1,1),(0,1),(1,1),(3,1),(1,1),(2,2),(1,1),(0,1)]
| | | |-- b: bigint <level: 3, index: 3>
-| | | | |-- Def size: 14
[(1,1),(0,1),(2,1),(0,1),(1,1),(0,1),(3,1),(0,1),(1,1),(2,1),(1,1),(3,1),(2,1),(0,1)]
+| | | | |-- Def size: 19
[(1,2),(0,1),(2,1),(1,1),(0,1),(1,2),(0,1),(3,1),(1,1),(0,1),(1,1),(2,1),(1,1),(3,1),(2,1),(1,1),(0,1)]
| | | |-- c: bigint <level: 3, index: 4>
-| | | | |-- Def size: 14
[(1,1),(0,1),(2,1),(0,1),(1,1),(0,1),(2,1),(0,1),(1,1),(2,1),(1,1),(2,1),(3,1),(0,1)]
+| | | | |-- Def size: 19
[(1,2),(0,1),(2,1),(1,1),(0,1),(1,2),(0,1),(2,1),(1,1),(0,1),(1,1),(2,1),(1,1),(2,1),(3,1),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/206-unionArrayPrimitiveObjectArrayItems.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/206-unionArrayPrimitiveObjectArrayItems.schema
index 381f0f0232..baef035a38 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/206-unionArrayPrimitiveObjectArrayItems.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/206-unionArrayPrimitiveObjectArrayItems.schema
@@ -2,19 +2,19 @@ root
|-- a: array <level: 1>
| |-- item: union <level: 2>
| | |-- bigint: bigint <level: 2, index: 0>
-| | | |-- Def size: 14
[(2,1),(0,1),(1,1),(0,1),(1,1),(0,1),(1,1),(0,1),(2,1),(1,4),(0,1)]
+| | | |-- Def size: 19
[(2,1),(1,1),(0,1),(1,2),(0,1),(1,2),(0,1),(1,2),(0,1),(2,1),(1,5),(0,1)]
| | |-- boolean: boolean <level: 2, index: 2>
-| | | |-- Def size: 14
[(1,1),(0,1),(1,1),(0,1),(2,1),(0,1),(1,1),(0,1),(1,2),(2,1),(1,2),(0,1)]
+| | | |-- Def size: 19
[(1,2),(0,1),(1,2),(0,1),(2,1),(1,1),(0,1),(1,2),(0,1),(1,2),(2,1),(1,3),(0,1)]
| | |-- array: array <level: 2>
| | | |-- item: object <level: 3>
| | | | |-- a: bigint <level: 4, index: 1>
-| | | | | |-- Def size: 17
[(1,1),(0,1),(4,1),(1,1),(0,1),(1,1),(0,1),(1,1),(0,1),(1,3),(3,1),(1,1),(3,1),(1,1),(0,1)]
+| | | | | |-- Def size: 25
[(1,2),(0,1),(4,1),(2,1),(1,2),(0,1),(1,2),(0,1),(1,2),(0,1),(1,3),(3,1),(2,1),(1,1),(3,1),(2,1),(1,2),(0,1)]
| | | | |-- b: bigint <level: 4, index: 5>
-| | | | | |-- Def size: 17
[(1,1),(0,1),(3,1),(1,1),(0,1),(1,1),(0,1),(1,1),(0,1),(1,3),(4,1),(1,1),(3,1),(1,1),(0,1)]
+| | | | | |-- Def size: 25
[(1,2),(0,1),(3,1),(2,1),(1,2),(0,1),(1,2),(0,1),(1,2),(0,1),(1,3),(4,1),(2,1),(1,1),(3,1),(2,1),(1,2),(0,1)]
| | | | |-- c: bigint <level: 4, index: 6>
-| | | | | |-- Def size: 17
[(1,1),(0,1),(3,1),(1,1),(0,1),(1,1),(0,1),(1,1),(0,1),(1,3),(3,1),(1,1),(4,1),(1,1),(0,1)]
+| | | | | |-- Def size: 25
[(1,2),(0,1),(3,1),(2,1),(1,2),(0,1),(1,2),(0,1),(1,2),(0,1),(1,3),(3,1),(2,1),(1,1),(4,1),(2,1),(1,2),(0,1)]
| | |-- object: object <level: 2>
| | | |-- b: bigint <level: 3, index: 3>
-| | | | |-- Def size: 14
[(1,1),(0,1),(1,1),(0,1),(1,1),(0,1),(3,1),(0,1),(1,1),(2,1),(1,3),(0,1)]
+| | | | |-- Def size: 19
[(1,2),(0,1),(1,2),(0,1),(1,2),(0,1),(3,1),(1,1),(0,1),(1,1),(2,1),(1,4),(0,1)]
| | | |-- a: bigint <level: 3, index: 4>
-| | | | |-- Def size: 14
[(1,1),(0,1),(1,1),(0,1),(1,1),(0,1),(2,1),(0,1),(1,1),(3,1),(1,3),(0,1)]
+| | | | |-- Def size: 19
[(1,2),(0,1),(1,2),(0,1),(1,2),(0,1),(2,1),(1,1),(0,1),(1,1),(3,1),(1,4),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/207-unionArrayNullItems0.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/207-unionArrayNullItems0.schema
index 714b674eec..e569777e74 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/207-unionArrayNullItems0.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/207-unionArrayNullItems0.schema
@@ -2,6 +2,6 @@ root
|-- a: array <level: 1>
| |-- item: union <level: 2>
| | |-- bigint: bigint <level: 2, index: 0>
-| | | |-- Def size: 6 [(5,1),(0,1),(2,1),(0,1),(1,1),(0,1)]
+| | | |-- Def size: 9
[(5,1),(1,1),(0,1),(2,1),(1,1),(0,1),(1,2),(0,1)]
| | |-- string: string <level: 2, index: 1>
-| | | |-- Def size: 6 [(1,1),(0,1),(1,1),(0,1),(2,1),(0,1)]
+| | | |-- Def size: 9 [(1,2),(0,1),(1,2),(0,1),(2,1),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/208-unionArrayNullItems1.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/208-unionArrayNullItems1.schema
index 1180641d46..2829896bb4 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/208-unionArrayNullItems1.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/208-unionArrayNullItems1.schema
@@ -2,6 +2,6 @@ root
|-- a: array <level: 1>
| |-- item: union <level: 2>
| | |-- bigint: bigint <level: 2, index: 0>
-| | | |-- Def size: 6 [(2,1),(0,1),(5,1),(0,1),(1,1),(0,1)]
+| | | |-- Def size: 9
[(2,1),(1,1),(0,1),(5,1),(1,1),(0,1),(1,2),(0,1)]
| | |-- string: string <level: 2, index: 1>
-| | | |-- Def size: 6 [(1,1),(0,1),(1,1),(0,1),(2,1),(0,1)]
+| | | |-- Def size: 9 [(1,2),(0,1),(1,2),(0,1),(2,1),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/209-unionArrayNullItems2.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/209-unionArrayNullItems2.schema
index 8764067f9b..c0c1e97139 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/209-unionArrayNullItems2.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/209-unionArrayNullItems2.schema
@@ -2,6 +2,6 @@ root
|-- a: array <level: 1>
| |-- item: union <level: 2>
| | |-- bigint: bigint <level: 2, index: 0>
-| | | |-- Def size: 12
[(2,1),(1,1),(5,1),(0,1),(2,1),(5,1),(1,1),(0,1),(5,1),(2,1),(1,1),(0,1)]
+| | | |-- Def size: 15
[(2,1),(1,1),(5,1),(1,1),(0,1),(2,1),(5,1),(1,2),(0,1),(5,1),(2,1),(1,2),(0,1)]
| | |-- string: string <level: 2, index: 1>
-| | | |-- Def size: 12
[(1,1),(2,1),(1,1),(0,1),(1,2),(2,1),(0,1),(1,2),(2,1),(0,1)]
+| | | |-- Def size: 15
[(1,1),(2,1),(1,2),(0,1),(1,2),(2,1),(1,1),(0,1),(1,2),(2,1),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/210-unionArrayNullItems3.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/210-unionArrayNullItems3.schema
index 68be4a02b0..c7c5675e70 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/210-unionArrayNullItems3.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/210-unionArrayNullItems3.schema
@@ -2,6 +2,6 @@ root
|-- a: array <level: 1>
| |-- item: union <level: 2>
| | |-- bigint: bigint <level: 2, index: 0>
-| | | |-- Def size: 4 [(2,1),(5,1),(1,1),(0,1)]
+| | | |-- Def size: 5 [(2,1),(5,1),(1,2),(0,1)]
| | |-- string: string <level: 2, index: 1>
-| | | |-- Def size: 4 [(1,2),(2,1),(0,1)]
+| | | |-- Def size: 5 [(1,2),(2,1),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/320-null-array0.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/320-null-array0.schema
index f3d7014c1b..d4334a68e2 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/320-null-array0.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/320-null-array0.schema
@@ -1,4 +1,4 @@
root
|-- a: array <level: 1>
| |-- item: bigint <level: 2, index: 0>
-| | |-- Def size: 9
[(5,1),(0,1),(4,1),(2,1),(0,1),(2,1),(5,1),(2,1),(0,1)]
+| | |-- Def size: 12
[(5,1),(1,1),(0,1),(4,1),(2,1),(1,1),(0,1),(2,1),(5,1),(2,1),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/321-null-array1.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/321-null-array1.schema
index f3d7014c1b..d4334a68e2 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/321-null-array1.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/321-null-array1.schema
@@ -1,4 +1,4 @@
root
|-- a: array <level: 1>
| |-- item: bigint <level: 2, index: 0>
-| | |-- Def size: 9
[(5,1),(0,1),(4,1),(2,1),(0,1),(2,1),(5,1),(2,1),(0,1)]
+| | |-- Def size: 12
[(5,1),(1,1),(0,1),(4,1),(2,1),(1,1),(0,1),(2,1),(5,1),(2,1),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/322-null-array2.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/322-null-array2.schema
index 0a9474b23d..ae3fd8cf79 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/322-null-array2.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/322-null-array2.schema
@@ -1,4 +1,4 @@
root
|-- a: array <level: 1>
| |-- item: bigint <level: 2, index: 0>
-| | |-- Def size: 9
[(4,1),(5,1),(0,1),(2,1),(0,1),(2,1),(5,1),(2,1),(0,1)]
+| | |-- Def size: 12
[(4,1),(5,1),(1,1),(0,1),(2,1),(1,1),(0,1),(2,1),(5,1),(2,1),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/323-null-array3.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/323-null-array3.schema
index 55c8470d03..2444bc0b17 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/323-null-array3.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/323-null-array3.schema
@@ -1,4 +1,4 @@
root
|-- a: array <level: 1>
| |-- item: bigint <level: 2, index: 0>
-| | |-- Def size: 13
[(5,1),(2,1),(5,1),(0,1),(5,1),(0,1),(5,2),(0,1),(2,1),(5,1),(2,1),(0,1)]
+| | |-- Def size: 17
[(5,1),(2,1),(5,1),(1,1),(0,1),(5,1),(1,1),(0,1),(5,2),(1,1),(0,1),(2,1),(5,1),(2,1),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/324-null-array4.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/324-null-array4.schema
index 73067faf3f..86e0133db6 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/324-null-array4.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/324-null-array4.schema
@@ -1,4 +1,4 @@
root
|-- a: array <level: 1>
| |-- item: bigint <level: 2, index: 0>
-| | |-- Def size: 11
[(2,1),(0,1),(5,1),(0,1),(5,2),(0,1),(2,1),(5,1),(2,1),(0,1)]
+| | |-- Def size: 15
[(2,1),(1,1),(0,1),(5,1),(1,1),(0,1),(5,2),(1,1),(0,1),(2,1),(5,1),(2,1),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/325-null-array5.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/325-null-array5.schema
index 86a452548d..23a5365563 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/325-null-array5.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/325-null-array5.schema
@@ -2,6 +2,6 @@ root
|-- a: array <level: 1>
| |-- item: object <level: 2>
| | |-- a: bigint <level: 3, index: 0>
-| | | |-- Def size: 9
[(3,1),(0,1),(4,1),(5,1),(0,1),(6,1),(5,1),(3,1),(0,1)]
+| | | |-- Def size: 12
[(3,1),(1,1),(0,1),(4,1),(5,1),(1,1),(0,1),(6,1),(5,1),(3,1),(1,1),(0,1)]
| | |-- b: bigint <level: 3, index: 1>
-| | | |-- Def size: 9
[(2,1),(0,1),(4,1),(5,1),(0,1),(3,1),(5,1),(6,1),(0,1)]
+| | | |-- Def size: 12
[(2,1),(1,1),(0,1),(4,1),(5,1),(1,1),(0,1),(3,1),(5,1),(6,1),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/326-null-array6.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/326-null-array6.schema
index 552a989da7..3b3cd4a71c 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/326-null-array6.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/326-null-array6.schema
@@ -2,6 +2,6 @@ root
|-- a: array <level: 1>
| |-- item: object <level: 2>
| | |-- a: bigint <level: 3, index: 0>
-| | | |-- Def size: 9
[(4,1),(5,1),(0,1),(3,1),(0,1),(6,1),(5,1),(3,1),(0,1)]
+| | | |-- Def size: 12
[(4,1),(5,1),(1,1),(0,1),(3,1),(1,1),(0,1),(6,1),(5,1),(3,1),(1,1),(0,1)]
| | |-- b: bigint <level: 3, index: 1>
-| | | |-- Def size: 9
[(4,1),(5,1),(0,1),(2,1),(0,1),(3,1),(5,1),(6,1),(0,1)]
+| | | |-- Def size: 12
[(4,1),(5,1),(1,1),(0,1),(2,1),(1,1),(0,1),(3,1),(5,1),(6,1),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/327-null-array7.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/327-null-array7.schema
index 611a537dc8..447b24bf47 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/327-null-array7.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/327-null-array7.schema
@@ -2,6 +2,6 @@ root
|-- a: array <level: 1>
| |-- item: object <level: 2>
| | |-- b: bigint <level: 3, index: 0>
-| | | |-- Def size: 9
[(3,1),(5,1),(6,1),(0,1),(4,1),(5,1),(0,1),(2,1),(0,1)]
+| | | |-- Def size: 12
[(3,1),(5,1),(6,1),(1,1),(0,1),(4,1),(5,1),(1,1),(0,1),(2,1),(1,1),(0,1)]
| | |-- c: bigint <level: 3, index: 1>
-| | | |-- Def size: 9
[(6,1),(5,1),(3,1),(0,1),(4,1),(5,1),(0,1),(3,1),(0,1)]
+| | | |-- Def size: 12
[(6,1),(5,1),(3,1),(1,1),(0,1),(4,1),(5,1),(1,1),(0,1),(3,1),(1,1),(0,1)]
diff --git
a/asterixdb/asterix-column/src/test/resources/result/transformer/900-dummy-tweet.schema
b/asterixdb/asterix-column/src/test/resources/result/transformer/900-dummy-tweet.schema
index c7c60db888..d9324f649a 100644
---
a/asterixdb/asterix-column/src/test/resources/result/transformer/900-dummy-tweet.schema
+++
b/asterixdb/asterix-column/src/test/resources/result/transformer/900-dummy-tweet.schema
@@ -2,7 +2,7 @@ root
|-- coordinates: object <level: 1>
| |-- coordinates: array <level: 2>
| | |-- item: double <level: 3, index: 0>
-| | | |-- Def size: 4 [(3,1),(1,1),(3,1),(1,1)]
+| | | |-- Def size: 6 [(3,1),(2,1),(1,1),(3,1),(2,1),(1,1)]
| |-- type: string <level: 2, index: 1>
| | |-- Def size: 2 [(2,2)]
|-- created_at: string <level: 1, index: 2>
@@ -11,27 +11,27 @@ root
| |-- urls: array <level: 2>
| | |-- item: object <level: 3>
| | | |-- display_url: string <level: 4, index: 3>
-| | | | |-- Def size: 3 [(4,1),(1,1),(0,1)]
+| | | | |-- Def size: 4 [(4,1),(2,1),(1,1),(0,1)]
| | | |-- expanded_url: string <level: 4, index: 4>
-| | | | |-- Def size: 3 [(4,1),(1,1),(0,1)]
+| | | | |-- Def size: 4 [(4,1),(2,1),(1,1),(0,1)]
| | | |-- indices: array <level: 4>
| | | | |-- item: bigint <level: 5, index: 5>
-| | | | | |-- Def size: 4 [(5,1),(3,1),(1,1),(0,1)]
+| | | | | |-- Def size: 6 [(5,1),(4,1),(3,1),(2,1),(1,1),(0,1)]
| | | |-- url: string <level: 4, index: 6>
-| | | | |-- Def size: 3 [(4,1),(1,1),(0,1)]
+| | | | |-- Def size: 4 [(4,1),(2,1),(1,1),(0,1)]
| |-- user_mentions: array <level: 2>
| | |-- item: object <level: 3>
| | | |-- id: bigint <level: 4, index: 7>
-| | | | |-- Def size: 3 [(4,1),(1,1),(0,1)]
+| | | | |-- Def size: 4 [(4,1),(2,1),(1,1),(0,1)]
| | | |-- id_str: string <level: 4, index: 8>
-| | | | |-- Def size: 3 [(4,1),(1,1),(0,1)]
+| | | | |-- Def size: 4 [(4,1),(2,1),(1,1),(0,1)]
| | | |-- indices: array <level: 4>
| | | | |-- item: bigint <level: 5, index: 9>
-| | | | | |-- Def size: 4 [(5,1),(3,1),(1,1),(0,1)]
+| | | | | |-- Def size: 6 [(5,1),(4,1),(3,1),(2,1),(1,1),(0,1)]
| | | |-- name: string <level: 4, index: 10>
-| | | | |-- Def size: 3 [(4,1),(1,1),(0,1)]
+| | | | |-- Def size: 4 [(4,1),(2,1),(1,1),(0,1)]
| | | |-- screen_name: string <level: 4, index: 11>
-| | | | |-- Def size: 3 [(4,1),(1,1),(0,1)]
+| | | | |-- Def size: 4 [(4,1),(2,1),(1,1),(0,1)]
|-- favorite_count: bigint <level: 1, index: 12>
| |-- Def size: 2 [(1,2)]
|-- favorited: boolean <level: 1, index: 13>
@@ -41,7 +41,7 @@ root
|-- geo: object <level: 1>
| |-- coordinates: array <level: 2>
| | |-- item: double <level: 3, index: 15>
-| | | |-- Def size: 4 [(3,1),(1,1),(3,1),(1,1)]
+| | | |-- Def size: 6 [(3,1),(2,1),(1,1),(3,1),(2,1),(1,1)]
| |-- type: string <level: 2, index: 16>
| | |-- Def size: 2 [(2,2)]
|-- id: string <level: 1, index: 17>
@@ -68,7 +68,7 @@ root
| | | |-- item: array <level: 4>
| | | | |-- item: array <level: 5>
| | | | | |-- item: double <level: 6, index: 26>
-| | | | | | |-- Def size: 8
[(6,1),(4,1),(3,1),(2,1),(6,1),(4,1),(3,1),(2,1)]
+| | | | | | |-- Def size: 14
[(6,1),(5,1),(4,2),(3,2),(2,1),(6,1),(5,1),(4,2),(3,2),(2,1)]
| | |-- type: string <level: 3, index: 27>
| | | |-- Def size: 2 [(3,2)]
| |-- country: string <level: 2, index: 28>
@@ -94,16 +94,16 @@ root
| | |-- user_mentions: array <level: 3>
| | | |-- item: object <level: 4>
| | | | |-- id: bigint <level: 5, index: 37>
-| | | | | |-- Def size: 4 [(5,1),(2,1),(5,1),(2,1)]
+| | | | | |-- Def size: 6 [(5,1),(3,1),(2,1),(5,1),(3,1),(2,1)]
| | | | |-- id_str: string <level: 5, index: 38>
-| | | | | |-- Def size: 4 [(5,1),(2,1),(5,1),(2,1)]
+| | | | | |-- Def size: 6 [(5,1),(3,1),(2,1),(5,1),(3,1),(2,1)]
| | | | |-- indices: array <level: 5>
| | | | | |-- item: bigint <level: 6, index: 39>
-| | | | | | |-- Def size: 6
[(6,1),(4,1),(2,1),(6,1),(4,1),(2,1)]
+| | | | | | |-- Def size: 10
[(6,1),(5,1),(4,1),(3,1),(2,1),(6,1),(5,1),(4,1),(3,1),(2,1)]
| | | | |-- name: string <level: 5, index: 40>
-| | | | | |-- Def size: 4 [(5,1),(2,1),(5,1),(2,1)]
+| | | | | |-- Def size: 6 [(5,1),(3,1),(2,1),(5,1),(3,1),(2,1)]
| | | | |-- screen_name: string <level: 5, index: 41>
-| | | | | |-- Def size: 4 [(5,1),(2,1),(5,1),(2,1)]
+| | | | | |-- Def size: 6 [(5,1),(3,1),(2,1),(5,1),(3,1),(2,1)]
| |-- favorite_count: bigint <level: 2, index: 42>
| | |-- Def size: 2 [(2,2)]
| |-- favorited: boolean <level: 2, index: 43>