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]

Reply via email to