This is an automated email from the ASF dual-hosted git repository.
abhishek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new b4bc9b69506 fix issue with auto columns with mix of scalar values and
empty arrays (#15083)
b4bc9b69506 is described below
commit b4bc9b695061b558e1d71e19756900bf779f79fb
Author: Clint Wylie <[email protected]>
AuthorDate: Wed Oct 4 21:45:45 2023 -0700
fix issue with auto columns with mix of scalar values and empty arrays
(#15083)
---
.../druid/segment/nested/DictionaryIdLookup.java | 15 +++--
.../apache/druid/segment/nested/FieldTypeInfo.java | 74 +++++++++++++---------
.../druid/query/scan/NestedDataScanQueryTest.java | 4 +-
.../segment/nested/NestedFieldTypeInfoTest.java | 62 ++++++++++++++++++
.../test/resources/nested-all-types-test-data.json | 14 ++--
.../sql/calcite/CalciteNestedDataQueryTest.java | 24 +++----
6 files changed, 136 insertions(+), 57 deletions(-)
diff --git
a/processing/src/main/java/org/apache/druid/segment/nested/DictionaryIdLookup.java
b/processing/src/main/java/org/apache/druid/segment/nested/DictionaryIdLookup.java
index 24f9ca75780..4e46a1a529a 100644
---
a/processing/src/main/java/org/apache/druid/segment/nested/DictionaryIdLookup.java
+++
b/processing/src/main/java/org/apache/druid/segment/nested/DictionaryIdLookup.java
@@ -24,7 +24,6 @@ import org.apache.druid.annotations.SuppressFBWarnings;
import org.apache.druid.error.DruidException;
import org.apache.druid.java.util.common.ByteBufferUtils;
import org.apache.druid.java.util.common.FileUtils;
-import org.apache.druid.java.util.common.ISE;
import org.apache.druid.java.util.common.StringUtils;
import org.apache.druid.java.util.common.io.smoosh.FileSmoosher;
import org.apache.druid.java.util.common.io.smoosh.SmooshedFileMapper;
@@ -127,7 +126,7 @@ public final class DictionaryIdLookup implements Closeable
final byte[] bytes = StringUtils.toUtf8Nullable(value);
final int index = stringDictionary.indexOf(bytes == null ? null :
ByteBuffer.wrap(bytes));
if (index < 0) {
- throw DruidException.defensive("Value not found in string dictionary");
+ throw DruidException.defensive("Value not found in column[%s] string
dictionary", name);
}
return index;
}
@@ -143,7 +142,7 @@ public final class DictionaryIdLookup implements Closeable
}
final int index = longDictionary.indexOf(value);
if (index < 0) {
- throw DruidException.defensive("Value not found in long dictionary");
+ throw DruidException.defensive("Value not found in column[%s] long
dictionary", name);
}
return index + longOffset();
}
@@ -164,7 +163,7 @@ public final class DictionaryIdLookup implements Closeable
}
final int index = doubleDictionary.indexOf(value);
if (index < 0) {
- throw DruidException.defensive("Value not found in double dictionary");
+ throw DruidException.defensive("Value not found in column[%s] double
dictionary", name);
}
return index + doubleOffset();
}
@@ -180,7 +179,7 @@ public final class DictionaryIdLookup implements Closeable
}
final int index = arrayDictionary.indexOf(value);
if (index < 0) {
- throw DruidException.defensive("Value not found in array dictionary");
+ throw DruidException.defensive("Value not found in column[%s] array
dictionary", name);
}
return index + arrayOffset();
}
@@ -320,7 +319,11 @@ public final class DictionaryIdLookup implements Closeable
public int addToOffset(long numBytesWritten)
{
if (numBytesWritten > bytesLeft()) {
- throw new ISE("Wrote more bytes[%,d] than available[%,d]. Don't do
that.", numBytesWritten, bytesLeft());
+ throw DruidException.defensive(
+ "Wrote more bytes[%,d] than available[%,d]. Don't do that.",
+ numBytesWritten,
+ bytesLeft()
+ );
}
currOffset += numBytesWritten;
diff --git
a/processing/src/main/java/org/apache/druid/segment/nested/FieldTypeInfo.java
b/processing/src/main/java/org/apache/druid/segment/nested/FieldTypeInfo.java
index c8b3ab31302..15691cfc9c4 100644
---
a/processing/src/main/java/org/apache/druid/segment/nested/FieldTypeInfo.java
+++
b/processing/src/main/java/org/apache/druid/segment/nested/FieldTypeInfo.java
@@ -151,35 +151,7 @@ public class FieldTypeInfo
public MutableTypeSet add(ColumnType type)
{
- switch (type.getType()) {
- case STRING:
- types |= STRING_MASK;
- break;
- case LONG:
- types |= LONG_MASK;
- break;
- case DOUBLE:
- types |= DOUBLE_MASK;
- break;
- case ARRAY:
- Preconditions.checkNotNull(type.getElementType(), "ElementType must
not be null");
- switch (type.getElementType().getType()) {
- case STRING:
- types |= STRING_ARRAY_MASK;
- break;
- case LONG:
- types |= LONG_ARRAY_MASK;
- break;
- case DOUBLE:
- types |= DOUBLE_ARRAY_MASK;
- break;
- default:
- throw new ISE("Unsupported nested array type: [%s]",
type.asTypeString());
- }
- break;
- default:
- throw new ISE("Unsupported nested type: [%s]", type.asTypeString());
- }
+ types = FieldTypeInfo.add(types, type);
return this;
}
@@ -207,7 +179,11 @@ public class FieldTypeInfo
@Nullable
public ColumnType getSingleType()
{
- return FieldTypeInfo.getSingleType(types);
+ final ColumnType columnType = FieldTypeInfo.getSingleType(types);
+ if (hasEmptyArray && columnType != null && !columnType.isArray()) {
+ return null;
+ }
+ return columnType;
}
public boolean isEmpty()
@@ -218,6 +194,10 @@ public class FieldTypeInfo
public byte getByteValue()
{
+ final ColumnType singleType = FieldTypeInfo.getSingleType(types);
+ if (hasEmptyArray && singleType != null && !singleType.isArray()) {
+ return FieldTypeInfo.add(types, ColumnType.ofArray(singleType));
+ }
return types;
}
@@ -293,6 +273,40 @@ public class FieldTypeInfo
}
}
+ public static byte add(byte types, ColumnType type)
+ {
+ switch (type.getType()) {
+ case STRING:
+ types |= STRING_MASK;
+ break;
+ case LONG:
+ types |= LONG_MASK;
+ break;
+ case DOUBLE:
+ types |= DOUBLE_MASK;
+ break;
+ case ARRAY:
+ Preconditions.checkNotNull(type.getElementType(), "ElementType must
not be null");
+ switch (type.getElementType().getType()) {
+ case STRING:
+ types |= STRING_ARRAY_MASK;
+ break;
+ case LONG:
+ types |= LONG_ARRAY_MASK;
+ break;
+ case DOUBLE:
+ types |= DOUBLE_ARRAY_MASK;
+ break;
+ default:
+ throw new ISE("Unsupported nested array type: [%s]",
type.asTypeString());
+ }
+ break;
+ default:
+ throw new ISE("Unsupported nested type: [%s]", type.asTypeString());
+ }
+ return types;
+ }
+
public static Set<ColumnType> convertToSet(byte types)
{
final Set<ColumnType> theTypes = Sets.newHashSetWithExpectedSize(4);
diff --git
a/processing/src/test/java/org/apache/druid/query/scan/NestedDataScanQueryTest.java
b/processing/src/test/java/org/apache/druid/query/scan/NestedDataScanQueryTest.java
index 0d91e7d5e00..fcf6720311f 100644
---
a/processing/src/test/java/org/apache/druid/query/scan/NestedDataScanQueryTest.java
+++
b/processing/src/test/java/org/apache/druid/query/scan/NestedDataScanQueryTest.java
@@ -787,12 +787,12 @@ public class NestedDataScanQueryTest extends
InitializedNullHandlingTest
Assert.assertEquals(resultsRealtime.size(), resultsSegments.size());
if (NullHandling.replaceWithDefault()) {
Assert.assertEquals(
- "[[1672531200000, null, 0, 0.0, 1, 51, -0.13, 1, [], [51, -35],
{a=700, b={x=g, y=1.1, z=[9, null, 9, 9]}}, {x=400, y=[{l=[null], m=100, n=5},
{l=[a, b, c], m=a, n=1}], z={}}, null, [a, b], null, [2, 3], null, [null],
null, [1, 0, 1], null, [{x=1}, {x=2}], null, hello, 1234, 1.234, {x=1, y=hello,
z={a=1.1, b=1234, c=[a, b, c]}}, [a, b, c], [1, 2, 3], [1.1, 2.2, 3.3], [], {},
[null, null], [{}, {}, {}], [{a=b, x=1, y=1.3}], 1], [1672531200000, null, 2,
0.0, 0, b, 1.1, b, 2, b, { [...]
+ "[[1672531200000, null, 0, 0.0, 1, 51, -0.13, 1, [], [51, -35],
{a=700, b={x=g, y=1.1, z=[9, null, 9, 9]}, v=[]}, {x=400, y=[{l=[null], m=100,
n=5}, {l=[a, b, c], m=a, n=1}], z={}}, null, [a, b], null, [2, 3], null,
[null], null, [1, 0, 1], null, [{x=1}, {x=2}], null, hello, 1234, 1.234, {x=1,
y=hello, z={a=1.1, b=1234, c=[a, b, c]}}, [a, b, c], [1, 2, 3], [1.1, 2.2,
3.3], [], {}, [null, null], [{}, {}, {}], [{a=b, x=1, y=1.3}], 1],
[1672531200000, null, 2, 0.0, 0, b, 1.1, b, 2 [...]
resultsSegments.get(0).getEvents().toString()
);
} else {
Assert.assertEquals(
- "[[1672531200000, null, null, null, 1, 51, -0.13, 1, [], [51, -35],
{a=700, b={x=g, y=1.1, z=[9, null, 9, 9]}}, {x=400, y=[{l=[null], m=100, n=5},
{l=[a, b, c], m=a, n=1}], z={}}, null, [a, b], null, [2, 3], null, [null],
null, [1, 0, 1], null, [{x=1}, {x=2}], null, hello, 1234, 1.234, {x=1, y=hello,
z={a=1.1, b=1234, c=[a, b, c]}}, [a, b, c], [1, 2, 3], [1.1, 2.2, 3.3], [], {},
[null, null], [{}, {}, {}], [{a=b, x=1, y=1.3}], 1], [1672531200000, , 2, null,
0, b, 1.1, b, 2, b, [...]
+ "[[1672531200000, null, null, null, 1, 51, -0.13, 1, [], [51, -35],
{a=700, b={x=g, y=1.1, z=[9, null, 9, 9]}, v=[]}, {x=400, y=[{l=[null], m=100,
n=5}, {l=[a, b, c], m=a, n=1}], z={}}, null, [a, b], null, [2, 3], null,
[null], null, [1, 0, 1], null, [{x=1}, {x=2}], null, hello, 1234, 1.234, {x=1,
y=hello, z={a=1.1, b=1234, c=[a, b, c]}}, [a, b, c], [1, 2, 3], [1.1, 2.2,
3.3], [], {}, [null, null], [{}, {}, {}], [{a=b, x=1, y=1.3}], 1],
[1672531200000, , 2, null, 0, b, 1.1, b, [...]
resultsSegments.get(0).getEvents().toString()
);
}
diff --git
a/processing/src/test/java/org/apache/druid/segment/nested/NestedFieldTypeInfoTest.java
b/processing/src/test/java/org/apache/druid/segment/nested/NestedFieldTypeInfoTest.java
index 0e8d95cc57c..33df1887ea5 100644
---
a/processing/src/test/java/org/apache/druid/segment/nested/NestedFieldTypeInfoTest.java
+++
b/processing/src/test/java/org/apache/druid/segment/nested/NestedFieldTypeInfoTest.java
@@ -56,6 +56,23 @@ public class NestedFieldTypeInfoTest
}
}
+ @Test
+ public void testSingleTypeWithEmptyArray() throws IOException
+ {
+ List<ColumnType> supportedTypes = ImmutableList.of(
+ ColumnType.STRING,
+ ColumnType.LONG,
+ ColumnType.DOUBLE,
+ ColumnType.STRING_ARRAY,
+ ColumnType.LONG_ARRAY,
+ ColumnType.DOUBLE_ARRAY
+ );
+
+ for (ColumnType type : supportedTypes) {
+ testSingleTypeWithEmptyArray(type);
+ }
+ }
+
@Test
public void testMultiType() throws IOException
{
@@ -137,6 +154,51 @@ public class NestedFieldTypeInfoTest
Assert.assertEquals(1, BUFFER.position());
}
+ private void testSingleTypeWithEmptyArray(ColumnType columnType) throws
IOException
+ {
+ FieldTypeInfo.MutableTypeSet typeSet = new FieldTypeInfo.MutableTypeSet();
+ typeSet.add(columnType);
+ typeSet.addUntypedArray();
+
+ if (columnType.isArray()) {
+ // arrays with empty arrays are still single type
+ Assert.assertEquals(columnType, typeSet.getSingleType());
+ Assert.assertEquals(ImmutableSet.of(columnType),
FieldTypeInfo.convertToSet(typeSet.getByteValue()));
+
+ writeTypeSet(typeSet);
+ FieldTypeInfo info = new FieldTypeInfo(BUFFER);
+ Assert.assertEquals(0, BUFFER.position());
+
+ FieldTypeInfo.TypeSet roundTrip = info.getTypes(0);
+ Assert.assertEquals(columnType, roundTrip.getSingleType());
+
+ FieldTypeInfo info2 = FieldTypeInfo.read(BUFFER, 1);
+ Assert.assertEquals(info.getTypes(0), info2.getTypes(0));
+ Assert.assertEquals(1, BUFFER.position());
+ } else {
+ // scalar types become multi-type
+ Set<ColumnType> columnTypes = ImmutableSet.of(columnType,
ColumnType.ofArray(columnType));
+ FieldTypeInfo.MutableTypeSet merge = new FieldTypeInfo.MutableTypeSet();
+ merge.merge(new
FieldTypeInfo.MutableTypeSet().add(columnType).getByteValue(), true);
+
+ Assert.assertEquals(merge.getByteValue(), typeSet.getByteValue());
+ Assert.assertNull(typeSet.getSingleType());
+ Assert.assertEquals(columnTypes,
FieldTypeInfo.convertToSet(typeSet.getByteValue()));
+
+ writeTypeSet(typeSet);
+ FieldTypeInfo info = new FieldTypeInfo(BUFFER);
+ Assert.assertEquals(0, BUFFER.position());
+
+ FieldTypeInfo.TypeSet roundTrip = info.getTypes(0);
+ Assert.assertNull(roundTrip.getSingleType());
+ Assert.assertEquals(columnTypes,
FieldTypeInfo.convertToSet(roundTrip.getByteValue()));
+
+ FieldTypeInfo info2 = FieldTypeInfo.read(BUFFER, 1);
+ Assert.assertEquals(info.getTypes(0), info2.getTypes(0));
+ Assert.assertEquals(1, BUFFER.position());
+ }
+ }
+
private static void writeTypeSet(FieldTypeInfo.MutableTypeSet typeSet)
throws IOException
{
BUFFER.position(0);
diff --git a/processing/src/test/resources/nested-all-types-test-data.json
b/processing/src/test/resources/nested-all-types-test-data.json
index 34d92b52ae8..b70c8764601 100644
--- a/processing/src/test/resources/nested-all-types-test-data.json
+++ b/processing/src/test/resources/nested-all-types-test-data.json
@@ -1,7 +1,7 @@
-{"timestamp": "2023-01-01T00:00:00", "str":"a", "long":1, "double":1.0,
"bool": true, "variant": 1, "variantNumeric": 1,
"variantEmptyObj":1, "variantEmtpyArray":1, "variantWithArrays": 1,
"obj":{"a": 100, "b": {"x": "a", "y": 1.1, "z": [1, 2, 3, 4]}},
"complexObj":{"x": 1234, "y": [{"l": ["a", "b", "c"], "m": "a", "n": 1},{"l":
["a", "b", "c"], "m": "a", "n": 1}], "z": {"a": [1.1, 2.2, 3.3], "b": true}},
"arrayString": ["a", "b"], "arrayStringN [...]
-{"timestamp": "2023-01-01T00:00:00", "str":"", "long":2,
"bool": false, "variant": "b", "variantNumeric": 1.1,
"variantEmptyObj":"b", "variantEmtpyArray":2, "variantWithArrays": "b",
"obj":{"a": 200, "b": {"x": "b", "y": 1.1, "z": [2, 4, 6]}},
"complexObj":{"x": 10, "y": [{"l": ["b", "b", "c"], "m": "b", "n": 2}, [1, 2,
3]], "z": {"a": [5.5], "b": false}},
"arrayString": ["a", "b", "c"], "arrayStringN [...]
-{"timestamp": "2023-01-01T00:00:00", "str":"null", "long":3, "double":2.0,
"variant": 3.0, "variantNumeric": 1.0,
"variantEmptyObj":3.3, "variantEmtpyArray":3, "variantWithArrays": 3.0,
"obj":{"a": 300},
"complexObj":{"x": 4.4, "y": [{"l": [], "m": 100, "n": 3},{"l": ["a"]}, {"l":
["b"], "n": []}], "z": {"a": [], "b": true}},
"arrayString": ["b", "c"], "arrayStringN [...]
-{"timestamp": "2023-01-01T00:00:00", "str":"b", "long":4, "double":3.3,
"bool": true, "variant": "1",
"variantEmptyObj":{}, "variantEmtpyArray":4, "variantWithArrays": "1",
"obj":{"a": 400, "b": {"x": "d", "y": 1.1, "z": [3, 4]}},
"complexObj":{"x": 1234,
"z": {"a": [1.1, 2.2, 3.3], "b": true}},
"arrayString": ["d", "e"], "arrayStringN [...]
-{"timestamp": "2023-01-01T00:00:00", "str":"c", "long": null, "double":4.4,
"bool": true, "variant": "hello", "variantNumeric": -1000,
"variantEmptyObj":{}, "variantEmtpyArray":[], "variantWithArrays": "hello",
"obj":{"a": 500, "b": {"x": "e", "z": [1, 2, 3, 4]}},
"complexObj":{"x": 11, "y": [],
"z": {"a": [null], "b": false}},
"arrayString": null, [...]
-{"timestamp": "2023-01-01T00:00:00", "str":"d", "long":5, "double":5.9,
"bool": false, "variantNumeric": 3.33,
"variantEmptyObj":"a", "variantEmtpyArray":6,
"obj":{"a": 600, "b": {"x": "f", "y": 1.1, "z": [6, 7, 8, 9]}},
"arrayString": ["a", "b"], "arrayStringN [...]
-{"timestamp": "2023-01-01T00:00:00", "str":null,
"double":null, "bool": true, "variant": 51, "variantNumeric": -0.13,
"variantEmptyObj":1, "variantEmtpyArray":[], "variantWithArrays": [51, -35],
"obj":{"a": 700, "b": {"x": "g", "y": 1.1, "z": [9, null, 9, 9]}},
"complexObj":{"x": 400, "y": [{"l": [null], "m": 100, "n": 5},{"l": ["a", "b",
"c"], "m": "a", "n": 1}], "z": {}},
"arrayStringN [...]
+{"timestamp": "2023-01-01T00:00:00", "str":"a", "long":1, "double":1.0,
"bool": true, "variant": 1, "variantNumeric": 1,
"variantEmptyObj":1, "variantEmtpyArray":1, "variantWithArrays": 1,
"obj":{"a": 100, "b": {"x": "a", "y": 1.1, "z": [1, 2, 3, 4]}, "v": []},
"complexObj":{"x": 1234, "y": [{"l": ["a", "b", "c"], "m": "a", "n": 1},{"l":
["a", "b", "c"], "m": "a", "n": 1}], "z": {"a": [1.1, 2.2, 3.3], "b": true}},
"arrayString": ["a", "b"], "ar [...]
+{"timestamp": "2023-01-01T00:00:00", "str":"", "long":2,
"bool": false, "variant": "b", "variantNumeric": 1.1,
"variantEmptyObj":"b", "variantEmtpyArray":2, "variantWithArrays": "b",
"obj":{"a": 200, "b": {"x": "b", "y": 1.1, "z": [2, 4, 6]}, "v": []},
"complexObj":{"x": 10, "y": [{"l": ["b", "b", "c"], "m": "b", "n": 2}, [1, 2,
3]], "z": {"a": [5.5], "b": false}},
"arrayString": ["a", "b", "c"], "ar [...]
+{"timestamp": "2023-01-01T00:00:00", "str":"null", "long":3, "double":2.0,
"variant": 3.0, "variantNumeric": 1.0,
"variantEmptyObj":3.3, "variantEmtpyArray":3, "variantWithArrays": 3.0,
"obj":{"a": 300},
"complexObj":{"x": 4.4, "y": [{"l": [], "m": 100, "n": 3},{"l": ["a"]}, {"l":
["b"], "n": []}], "z": {"a": [], "b": true}},
"arrayString": ["b", "c"], "ar [...]
+{"timestamp": "2023-01-01T00:00:00", "str":"b", "long":4, "double":3.3,
"bool": true, "variant": "1",
"variantEmptyObj":{}, "variantEmtpyArray":4, "variantWithArrays": "1",
"obj":{"a": 400, "b": {"x": "d", "y": 1.1, "z": [3, 4]}, "v": []},
"complexObj":{"x": 1234,
"z": {"a": [1.1, 2.2, 3.3], "b": true}},
"arrayString": ["d", "e"], "ar [...]
+{"timestamp": "2023-01-01T00:00:00", "str":"c", "long": null, "double":4.4,
"bool": true, "variant": "hello", "variantNumeric": -1000,
"variantEmptyObj":{}, "variantEmtpyArray":[], "variantWithArrays": "hello",
"obj":{"a": 500, "b": {"x": "e", "z": [1, 2, 3, 4]}, "v": "a"},
"complexObj":{"x": 11, "y": [],
"z": {"a": [null], "b": false}},
"arrayString": null, [...]
+{"timestamp": "2023-01-01T00:00:00", "str":"d", "long":5, "double":5.9,
"bool": false, "variantNumeric": 3.33,
"variantEmptyObj":"a", "variantEmtpyArray":6,
"obj":{"a": 600, "b": {"x": "f", "y": 1.1, "z": [6, 7, 8, 9]}, "v": "b"},
"arrayString": ["a", "b"], "ar [...]
+{"timestamp": "2023-01-01T00:00:00", "str":null,
"double":null, "bool": true, "variant": 51, "variantNumeric": -0.13,
"variantEmptyObj":1, "variantEmtpyArray":[], "variantWithArrays": [51, -35],
"obj":{"a": 700, "b": {"x": "g", "y": 1.1, "z": [9, null, 9, 9]}, "v": []},
"complexObj":{"x": 400, "y": [{"l": [null], "m": 100, "n": 5},{"l": ["a", "b",
"c"], "m": "a", "n": 1}], "z": {}},
"ar [...]
diff --git
a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteNestedDataQueryTest.java
b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteNestedDataQueryTest.java
index d440a6bb718..5098343b538 100644
---
a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteNestedDataQueryTest.java
+++
b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteNestedDataQueryTest.java
@@ -5667,7 +5667,7 @@ public class CalciteNestedDataQueryTest extends
BaseCalciteQueryTest
"1",
"[]",
"[51,-35]",
- "{\"a\":700,\"b\":{\"x\":\"g\",\"y\":1.1,\"z\":[9,null,9,9]}}",
+
"{\"a\":700,\"b\":{\"x\":\"g\",\"y\":1.1,\"z\":[9,null,9,9]},\"v\":[]}",
"{\"x\":400,\"y\":[{\"l\":[null],\"m\":100,\"n\":5},{\"l\":[\"a\",\"b\",\"c\"],\"m\":\"a\",\"n\":1}],\"z\":{}}",
null,
"[\"a\",\"b\"]",
@@ -5705,7 +5705,7 @@ public class CalciteNestedDataQueryTest extends
BaseCalciteQueryTest
"\"b\"",
"2",
"b",
- "{\"a\":200,\"b\":{\"x\":\"b\",\"y\":1.1,\"z\":[2,4,6]}}",
+
"{\"a\":200,\"b\":{\"x\":\"b\",\"y\":1.1,\"z\":[2,4,6]},\"v\":[]}",
"{\"x\":10,\"y\":[{\"l\":[\"b\",\"b\",\"c\"],\"m\":\"b\",\"n\":2},[1,2,3]],\"z\":{\"a\":[5.5],\"b\":false}}",
"[\"a\",\"b\",\"c\"]",
"[null,\"b\"]",
@@ -5743,7 +5743,7 @@ public class CalciteNestedDataQueryTest extends
BaseCalciteQueryTest
"1",
"1",
"1",
- "{\"a\":100,\"b\":{\"x\":\"a\",\"y\":1.1,\"z\":[1,2,3,4]}}",
+
"{\"a\":100,\"b\":{\"x\":\"a\",\"y\":1.1,\"z\":[1,2,3,4]},\"v\":[]}",
"{\"x\":1234,\"y\":[{\"l\":[\"a\",\"b\",\"c\"],\"m\":\"a\",\"n\":1},{\"l\":[\"a\",\"b\",\"c\"],\"m\":\"a\",\"n\":1}],\"z\":{\"a\":[1.1,2.2,3.3],\"b\":true}}",
"[\"a\",\"b\"]",
"[\"a\",\"b\"]",
@@ -5781,7 +5781,7 @@ public class CalciteNestedDataQueryTest extends
BaseCalciteQueryTest
"{}",
"4",
"1",
- "{\"a\":400,\"b\":{\"x\":\"d\",\"y\":1.1,\"z\":[3,4]}}",
+
"{\"a\":400,\"b\":{\"x\":\"d\",\"y\":1.1,\"z\":[3,4]},\"v\":[]}",
"{\"x\":1234,\"z\":{\"a\":[1.1,2.2,3.3],\"b\":true}}",
"[\"d\",\"e\"]",
"[\"b\",\"b\"]",
@@ -5819,7 +5819,7 @@ public class CalciteNestedDataQueryTest extends
BaseCalciteQueryTest
"{}",
"[]",
"hello",
- "{\"a\":500,\"b\":{\"x\":\"e\",\"z\":[1,2,3,4]}}",
+ "{\"a\":500,\"b\":{\"x\":\"e\",\"z\":[1,2,3,4]},\"v\":\"a\"}",
"{\"x\":11,\"y\":[],\"z\":{\"a\":[null],\"b\":false}}",
null,
null,
@@ -5857,7 +5857,7 @@ public class CalciteNestedDataQueryTest extends
BaseCalciteQueryTest
"\"a\"",
"6",
null,
- "{\"a\":600,\"b\":{\"x\":\"f\",\"y\":1.1,\"z\":[6,7,8,9]}}",
+
"{\"a\":600,\"b\":{\"x\":\"f\",\"y\":1.1,\"z\":[6,7,8,9]},\"v\":\"b\"}",
null,
"[\"a\",\"b\"]",
null,
@@ -5935,7 +5935,7 @@ public class CalciteNestedDataQueryTest extends
BaseCalciteQueryTest
"1",
"[]",
"[51,-35]",
- "{\"a\":700,\"b\":{\"x\":\"g\",\"y\":1.1,\"z\":[9,null,9,9]}}",
+
"{\"a\":700,\"b\":{\"x\":\"g\",\"y\":1.1,\"z\":[9,null,9,9]},\"v\":[]}",
"{\"x\":400,\"y\":[{\"l\":[null],\"m\":100,\"n\":5},{\"l\":[\"a\",\"b\",\"c\"],\"m\":\"a\",\"n\":1}],\"z\":{}}",
null,
"[\"a\",\"b\"]",
@@ -5973,7 +5973,7 @@ public class CalciteNestedDataQueryTest extends
BaseCalciteQueryTest
"\"b\"",
"2",
"b",
- "{\"a\":200,\"b\":{\"x\":\"b\",\"y\":1.1,\"z\":[2,4,6]}}",
+
"{\"a\":200,\"b\":{\"x\":\"b\",\"y\":1.1,\"z\":[2,4,6]},\"v\":[]}",
"{\"x\":10,\"y\":[{\"l\":[\"b\",\"b\",\"c\"],\"m\":\"b\",\"n\":2},[1,2,3]],\"z\":{\"a\":[5.5],\"b\":false}}",
"[\"a\",\"b\",\"c\"]",
"[null,\"b\"]",
@@ -6011,7 +6011,7 @@ public class CalciteNestedDataQueryTest extends
BaseCalciteQueryTest
"1",
"1",
"1",
- "{\"a\":100,\"b\":{\"x\":\"a\",\"y\":1.1,\"z\":[1,2,3,4]}}",
+
"{\"a\":100,\"b\":{\"x\":\"a\",\"y\":1.1,\"z\":[1,2,3,4]},\"v\":[]}",
"{\"x\":1234,\"y\":[{\"l\":[\"a\",\"b\",\"c\"],\"m\":\"a\",\"n\":1},{\"l\":[\"a\",\"b\",\"c\"],\"m\":\"a\",\"n\":1}],\"z\":{\"a\":[1.1,2.2,3.3],\"b\":true}}",
"[\"a\",\"b\"]",
"[\"a\",\"b\"]",
@@ -6049,7 +6049,7 @@ public class CalciteNestedDataQueryTest extends
BaseCalciteQueryTest
"{}",
"4",
"1",
- "{\"a\":400,\"b\":{\"x\":\"d\",\"y\":1.1,\"z\":[3,4]}}",
+
"{\"a\":400,\"b\":{\"x\":\"d\",\"y\":1.1,\"z\":[3,4]},\"v\":[]}",
"{\"x\":1234,\"z\":{\"a\":[1.1,2.2,3.3],\"b\":true}}",
"[\"d\",\"e\"]",
"[\"b\",\"b\"]",
@@ -6087,7 +6087,7 @@ public class CalciteNestedDataQueryTest extends
BaseCalciteQueryTest
"{}",
"[]",
"hello",
- "{\"a\":500,\"b\":{\"x\":\"e\",\"z\":[1,2,3,4]}}",
+ "{\"a\":500,\"b\":{\"x\":\"e\",\"z\":[1,2,3,4]},\"v\":\"a\"}",
"{\"x\":11,\"y\":[],\"z\":{\"a\":[null],\"b\":false}}",
null,
null,
@@ -6125,7 +6125,7 @@ public class CalciteNestedDataQueryTest extends
BaseCalciteQueryTest
"\"a\"",
"6",
null,
- "{\"a\":600,\"b\":{\"x\":\"f\",\"y\":1.1,\"z\":[6,7,8,9]}}",
+
"{\"a\":600,\"b\":{\"x\":\"f\",\"y\":1.1,\"z\":[6,7,8,9]},\"v\":\"b\"}",
null,
"[\"a\",\"b\"]",
null,
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]