clintropolis commented on code in PR #13653:
URL: https://github.com/apache/druid/pull/13653#discussion_r1068857229
##########
processing/src/test/java/org/apache/druid/segment/NestedDataColumnIndexerTest.java:
##########
@@ -83,4 +126,459 @@ public void testStuff()
Assert.assertEquals(6, indexer.getCardinality());
}
}
+
+ @Test
+ public void testNestedColumnIndexerSchemaDiscoveryRootString() throws
IndexSizeExceededException
+ {
+ long minTimestamp = System.currentTimeMillis();
+ IncrementalIndex index = makeIncrementalIndex(minTimestamp);
+
+ index.add(makeInputRow(minTimestamp + 1, true, STRING_COL, "a"));
+ index.add(makeInputRow(minTimestamp + 2, true, STRING_COL, "b"));
+ index.add(makeInputRow(minTimestamp + 3, true, STRING_COL, "c"));
+ index.add(makeInputRow(minTimestamp + 4, true, STRING_COL, null));
+ index.add(makeInputRow(minTimestamp + 5, false, STRING_COL, null));
+
+ IncrementalIndexStorageAdapter storageAdapter = new
IncrementalIndexStorageAdapter(index);
+ Sequence<Cursor> cursorSequence = storageAdapter.makeCursors(
+ null,
+ Intervals.ETERNITY,
+ VirtualColumns.EMPTY,
+ Granularities.NONE,
+ false,
+ null
+ );
+ final DimensionSpec dimensionSpec = new DefaultDimensionSpec(STRING_COL,
STRING_COL, ColumnType.STRING);
+ List<Cursor> cursorList = cursorSequence.toList();
+ ColumnSelectorFactory columnSelectorFactory =
cursorList.get(0).getColumnSelectorFactory();
+
+ ColumnValueSelector valueSelector =
columnSelectorFactory.makeColumnValueSelector(STRING_COL);
+ DimensionSelector dimensionSelector =
columnSelectorFactory.makeDimensionSelector(dimensionSpec);
+ Assert.assertEquals("a", valueSelector.getObject());
+ Assert.assertEquals(1, dimensionSelector.getRow().size());
+ Assert.assertEquals("a",
dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
+ Assert.assertEquals("a", dimensionSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(1).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(STRING_COL);
+ dimensionSelector =
columnSelectorFactory.makeDimensionSelector(dimensionSpec);
+ Assert.assertEquals("b", valueSelector.getObject());
+ Assert.assertEquals(1, dimensionSelector.getRow().size());
+ Assert.assertEquals("b",
dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
+ Assert.assertEquals("b", dimensionSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(2).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(STRING_COL);
+ dimensionSelector =
columnSelectorFactory.makeDimensionSelector(dimensionSpec);
+ Assert.assertEquals("c", valueSelector.getObject());
+ Assert.assertEquals(1, dimensionSelector.getRow().size());
+ Assert.assertEquals("c",
dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
+ Assert.assertEquals("c", dimensionSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(3).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(STRING_COL);
+ dimensionSelector =
columnSelectorFactory.makeDimensionSelector(dimensionSpec);
+ Assert.assertNull(valueSelector.getObject());
+ Assert.assertEquals(1, dimensionSelector.getRow().size());
+
Assert.assertNull(dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
+ Assert.assertNull(dimensionSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(4).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(STRING_COL);
+ dimensionSelector =
columnSelectorFactory.makeDimensionSelector(dimensionSpec);
+ Assert.assertNull(valueSelector.getObject());
+ Assert.assertEquals(1, dimensionSelector.getRow().size());
+
Assert.assertNull(dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
+ Assert.assertNull(dimensionSelector.getObject());
+ }
+
+ @Test
+ public void testNestedColumnIndexerSchemaDiscoveryRootLong() throws
IndexSizeExceededException
+ {
+ long minTimestamp = System.currentTimeMillis();
+ IncrementalIndex index = makeIncrementalIndex(minTimestamp);
+
+ index.add(makeInputRow(minTimestamp + 1, true, LONG_COL, 1L));
+ index.add(makeInputRow(minTimestamp + 2, true, LONG_COL, 2L));
+ index.add(makeInputRow(minTimestamp + 3, true, LONG_COL, 3L));
+ index.add(makeInputRow(minTimestamp + 4, true, LONG_COL, null));
+ index.add(makeInputRow(minTimestamp + 5, false, LONG_COL, null));
+
+ IncrementalIndexStorageAdapter storageAdapter = new
IncrementalIndexStorageAdapter(index);
+ Sequence<Cursor> cursorSequence = storageAdapter.makeCursors(
+ null,
+ Intervals.ETERNITY,
+ VirtualColumns.EMPTY,
+ Granularities.NONE,
+ false,
+ null
+ );
+ final DimensionSpec dimensionSpec = new DefaultDimensionSpec(LONG_COL,
LONG_COL, ColumnType.LONG);
+ List<Cursor> cursorList = cursorSequence.toList();
+ ColumnSelectorFactory columnSelectorFactory =
cursorList.get(0).getColumnSelectorFactory();
+
+ ColumnValueSelector valueSelector =
columnSelectorFactory.makeColumnValueSelector(LONG_COL);
+ DimensionSelector dimensionSelector =
columnSelectorFactory.makeDimensionSelector(dimensionSpec);
+ Assert.assertEquals(1L, valueSelector.getObject());
+ Assert.assertEquals(1L, valueSelector.getLong());
+ Assert.assertFalse(valueSelector.isNull());
+ Assert.assertEquals(1, dimensionSelector.getRow().size());
+ Assert.assertEquals("1",
dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
+ Assert.assertEquals("1", dimensionSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(1).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(LONG_COL);
+ dimensionSelector =
columnSelectorFactory.makeDimensionSelector(dimensionSpec);
+ Assert.assertEquals(2L, valueSelector.getObject());
+ Assert.assertEquals(2L, valueSelector.getLong());
+ Assert.assertFalse(valueSelector.isNull());
+ Assert.assertEquals(1, dimensionSelector.getRow().size());
+ Assert.assertEquals("2",
dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
+ Assert.assertEquals("2", dimensionSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(2).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(LONG_COL);
+ dimensionSelector =
columnSelectorFactory.makeDimensionSelector(dimensionSpec);
+ Assert.assertEquals(3L, valueSelector.getObject());
+ Assert.assertEquals(3L, valueSelector.getLong());
+ Assert.assertFalse(valueSelector.isNull());
+ Assert.assertEquals(1, dimensionSelector.getRow().size());
+ Assert.assertEquals("3",
dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
+ Assert.assertEquals("3", dimensionSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(3).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(LONG_COL);
+ dimensionSelector =
columnSelectorFactory.makeDimensionSelector(dimensionSpec);
+ Assert.assertNull(valueSelector.getObject());
+ Assert.assertTrue(valueSelector.isNull());
+ Assert.assertEquals(1, dimensionSelector.getRow().size());
+
Assert.assertNull(dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
+ Assert.assertNull(dimensionSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(4).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(LONG_COL);
+ dimensionSelector =
columnSelectorFactory.makeDimensionSelector(dimensionSpec);
+ Assert.assertNull(valueSelector.getObject());
+ Assert.assertTrue(valueSelector.isNull());
+ Assert.assertEquals(1, dimensionSelector.getRow().size());
+
Assert.assertNull(dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
+ Assert.assertNull(dimensionSelector.getObject());
+ }
+
+ @Test
+ public void testNestedColumnIndexerSchemaDiscoveryRootDouble() throws
IndexSizeExceededException
+ {
+ long minTimestamp = System.currentTimeMillis();
+ IncrementalIndex index = makeIncrementalIndex(minTimestamp);
+
+ index.add(makeInputRow(minTimestamp + 1, true, DOUBLE_COL, 1.1));
+ index.add(makeInputRow(minTimestamp + 2, true, DOUBLE_COL, 2.2));
+ index.add(makeInputRow(minTimestamp + 3, true, DOUBLE_COL, 3.3));
+ index.add(makeInputRow(minTimestamp + 4, true, DOUBLE_COL, null));
+ index.add(makeInputRow(minTimestamp + 5, false, DOUBLE_COL, null));
+
+ IncrementalIndexStorageAdapter storageAdapter = new
IncrementalIndexStorageAdapter(index);
+ Sequence<Cursor> cursorSequence = storageAdapter.makeCursors(
+ null,
+ Intervals.ETERNITY,
+ VirtualColumns.EMPTY,
+ Granularities.NONE,
+ false,
+ null
+ );
+ final DimensionSpec dimensionSpec = new DefaultDimensionSpec(DOUBLE_COL,
DOUBLE_COL, ColumnType.DOUBLE);
+ List<Cursor> cursorList = cursorSequence.toList();
+ ColumnSelectorFactory columnSelectorFactory =
cursorList.get(0).getColumnSelectorFactory();
+
+ ColumnValueSelector valueSelector =
columnSelectorFactory.makeColumnValueSelector(DOUBLE_COL);
+ DimensionSelector dimensionSelector =
columnSelectorFactory.makeDimensionSelector(dimensionSpec);
+ Assert.assertEquals(1.1, valueSelector.getObject());
+ Assert.assertEquals(1.1, valueSelector.getDouble(), 0.0);
+ Assert.assertFalse(valueSelector.isNull());
+ Assert.assertEquals(1, dimensionSelector.getRow().size());
+ Assert.assertEquals("1.1",
dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
+ Assert.assertEquals("1.1", dimensionSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(1).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(DOUBLE_COL);
+ dimensionSelector =
columnSelectorFactory.makeDimensionSelector(dimensionSpec);
+ Assert.assertEquals(2.2, valueSelector.getObject());
+ Assert.assertEquals(2.2, valueSelector.getDouble(), 0.0);
+ Assert.assertFalse(valueSelector.isNull());
+ Assert.assertEquals(1, dimensionSelector.getRow().size());
+ Assert.assertEquals("2.2",
dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
+ Assert.assertEquals("2.2", dimensionSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(2).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(DOUBLE_COL);
+ dimensionSelector =
columnSelectorFactory.makeDimensionSelector(dimensionSpec);
+ Assert.assertEquals(3.3, valueSelector.getObject());
+ Assert.assertEquals(3.3, valueSelector.getDouble(), 0.0);
+ Assert.assertFalse(valueSelector.isNull());
+ Assert.assertEquals(1, dimensionSelector.getRow().size());
+ Assert.assertEquals("3.3",
dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
+ Assert.assertEquals("3.3", dimensionSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(3).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(DOUBLE_COL);
+ dimensionSelector =
columnSelectorFactory.makeDimensionSelector(dimensionSpec);
+ Assert.assertNull(valueSelector.getObject());
+ Assert.assertEquals(1, dimensionSelector.getRow().size());
+
Assert.assertNull(dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
+ Assert.assertNull(dimensionSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(4).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(DOUBLE_COL);
+ dimensionSelector =
columnSelectorFactory.makeDimensionSelector(dimensionSpec);
+ Assert.assertNull(valueSelector.getObject());
+ Assert.assertEquals(1, dimensionSelector.getRow().size());
+
Assert.assertNull(dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
+ Assert.assertNull(dimensionSelector.getObject());
+ }
+
+ @Test
+ public void testNestedColumnIndexerSchemaDiscoveryRootStringArray() throws
IndexSizeExceededException
+ {
+ long minTimestamp = System.currentTimeMillis();
+ IncrementalIndex index = makeIncrementalIndex(minTimestamp);
+
+ index.add(makeInputRow(minTimestamp + 1, true, STRING_ARRAY_COL, new
String[]{"a"}));
+ index.add(makeInputRow(minTimestamp + 2, true, STRING_ARRAY_COL, new
Object[]{"b", "c"}));
+ index.add(makeInputRow(minTimestamp + 3, true, STRING_ARRAY_COL,
ImmutableList.of("d", "e")));
+ index.add(makeInputRow(minTimestamp + 4, true, STRING_ARRAY_COL, null));
+ index.add(makeInputRow(minTimestamp + 5, false, STRING_ARRAY_COL, null));
+
+ IncrementalIndexStorageAdapter storageAdapter = new
IncrementalIndexStorageAdapter(index);
+ Sequence<Cursor> cursorSequence = storageAdapter.makeCursors(
+ null,
+ Intervals.ETERNITY,
+ VirtualColumns.EMPTY,
+ Granularities.NONE,
+ false,
+ null
+ );
+ final DimensionSpec dimensionSpec = new
DefaultDimensionSpec(STRING_ARRAY_COL, STRING_ARRAY_COL, ColumnType.STRING);
+ List<Cursor> cursorList = cursorSequence.toList();
+ ColumnSelectorFactory columnSelectorFactory =
cursorList.get(0).getColumnSelectorFactory();
+
+ ColumnValueSelector valueSelector =
columnSelectorFactory.makeColumnValueSelector(STRING_ARRAY_COL);
+ Assert.assertThrows(
+ UnsupportedOperationException.class,
+ () ->
cursorList.get(0).getColumnSelectorFactory().makeDimensionSelector(dimensionSpec)
+ );
+ Assert.assertEquals(StructuredData.wrap(new Object[]{"a"}),
valueSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(1).getColumnSelectorFactory();
+ valueSelector =
columnSelectorFactory.makeColumnValueSelector(STRING_ARRAY_COL);
+ Assert.assertThrows(
+ UnsupportedOperationException.class,
+ () ->
cursorList.get(1).getColumnSelectorFactory().makeDimensionSelector(dimensionSpec)
+ );
+ Assert.assertEquals(StructuredData.wrap(new Object[]{"b", "c"}),
valueSelector.getObject());
+ Assert.assertFalse(valueSelector.isNull());
+
+ columnSelectorFactory = cursorList.get(2).getColumnSelectorFactory();
+ valueSelector =
columnSelectorFactory.makeColumnValueSelector(STRING_ARRAY_COL);
+ Assert.assertThrows(
+ UnsupportedOperationException.class,
+ () ->
cursorList.get(2).getColumnSelectorFactory().makeDimensionSelector(dimensionSpec)
+ );
+ // raw data is left as is, so is currently still a list while in
incremental index...
+ Assert.assertEquals(StructuredData.wrap(ImmutableList.of("d", "e")),
valueSelector.getObject());
+ Assert.assertFalse(valueSelector.isNull());
+
+ columnSelectorFactory = cursorList.get(3).getColumnSelectorFactory();
+ valueSelector =
columnSelectorFactory.makeColumnValueSelector(STRING_ARRAY_COL);
+ Assert.assertThrows(
+ UnsupportedOperationException.class,
+ () ->
cursorList.get(3).getColumnSelectorFactory().makeDimensionSelector(dimensionSpec)
+ );
+ Assert.assertNull(valueSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(4).getColumnSelectorFactory();
+ valueSelector =
columnSelectorFactory.makeColumnValueSelector(STRING_ARRAY_COL);
+ Assert.assertThrows(
+ UnsupportedOperationException.class,
+ () ->
cursorList.get(4).getColumnSelectorFactory().makeDimensionSelector(dimensionSpec)
+ );
+ Assert.assertNull(valueSelector.getObject());
+ }
+
+ @Test
+ public void testNestedColumnIndexerSchemaDiscoveryRootVariant() throws
IndexSizeExceededException
+ {
+ long minTimestamp = System.currentTimeMillis();
+ IncrementalIndex index = makeIncrementalIndex(minTimestamp);
+
+ index.add(makeInputRow(minTimestamp + 1, true, VARIANT_COL, "a"));
+ index.add(makeInputRow(minTimestamp + 2, true, VARIANT_COL, 2L));
+ index.add(makeInputRow(minTimestamp + 3, true, VARIANT_COL, 3.3));
+ index.add(makeInputRow(minTimestamp + 4, true, VARIANT_COL, null));
+ index.add(makeInputRow(minTimestamp + 5, false, VARIANT_COL, null));
+
+ IncrementalIndexStorageAdapter storageAdapter = new
IncrementalIndexStorageAdapter(index);
+ Sequence<Cursor> cursorSequence = storageAdapter.makeCursors(
+ null,
+ Intervals.ETERNITY,
+ VirtualColumns.EMPTY,
+ Granularities.NONE,
+ false,
+ null
+ );
+ final DimensionSpec dimensionSpec = new DefaultDimensionSpec(VARIANT_COL,
VARIANT_COL, ColumnType.STRING);
+ List<Cursor> cursorList = cursorSequence.toList();
+ ColumnSelectorFactory columnSelectorFactory =
cursorList.get(0).getColumnSelectorFactory();
+
+ ColumnValueSelector valueSelector =
columnSelectorFactory.makeColumnValueSelector(VARIANT_COL);
+ Assert.assertThrows(
+ UnsupportedOperationException.class,
+ () ->
cursorList.get(0).getColumnSelectorFactory().makeDimensionSelector(dimensionSpec)
+ );
+ Assert.assertEquals(StructuredData.wrap("a"), valueSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(1).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(VARIANT_COL);
+ Assert.assertThrows(
+ UnsupportedOperationException.class,
+ () ->
cursorList.get(1).getColumnSelectorFactory().makeDimensionSelector(dimensionSpec)
+ );
+ Assert.assertEquals(StructuredData.wrap(2L), valueSelector.getObject());
+ Assert.assertFalse(valueSelector.isNull());
+
+ columnSelectorFactory = cursorList.get(2).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(VARIANT_COL);
+ Assert.assertThrows(
+ UnsupportedOperationException.class,
+ () ->
cursorList.get(2).getColumnSelectorFactory().makeDimensionSelector(dimensionSpec)
+ );
+ Assert.assertEquals(StructuredData.wrap(3.3), valueSelector.getObject());
+ Assert.assertFalse(valueSelector.isNull());
+
+ columnSelectorFactory = cursorList.get(3).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(VARIANT_COL);
+ Assert.assertThrows(
+ UnsupportedOperationException.class,
+ () ->
cursorList.get(3).getColumnSelectorFactory().makeDimensionSelector(dimensionSpec)
+ );
+ Assert.assertNull(valueSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(4).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(VARIANT_COL);
+ Assert.assertThrows(
+ UnsupportedOperationException.class,
+ () ->
cursorList.get(4).getColumnSelectorFactory().makeDimensionSelector(dimensionSpec)
+ );
+ Assert.assertNull(valueSelector.getObject());
+ }
+
+ @Test
+ public void testNestedColumnIndexerSchemaDiscoveryNested() throws
IndexSizeExceededException
+ {
+ long minTimestamp = System.currentTimeMillis();
+ IncrementalIndex index = makeIncrementalIndex(minTimestamp);
+
+ index.add(makeInputRow(minTimestamp + 1, true, NESTED_COL, "a"));
+ index.add(makeInputRow(minTimestamp + 2, true, NESTED_COL, 2L));
+ index.add(makeInputRow(minTimestamp + 3, true, NESTED_COL,
ImmutableMap.of("x", 1.1, "y", 2L)));
+ index.add(makeInputRow(minTimestamp + 4, true, NESTED_COL, null));
+ index.add(makeInputRow(minTimestamp + 5, false, NESTED_COL, null));
+
+ IncrementalIndexStorageAdapter storageAdapter = new
IncrementalIndexStorageAdapter(index);
+ Sequence<Cursor> cursorSequence = storageAdapter.makeCursors(
+ null,
+ Intervals.ETERNITY,
+ VirtualColumns.EMPTY,
+ Granularities.NONE,
+ false,
+ null
+ );
+ final DimensionSpec dimensionSpec = new DefaultDimensionSpec(NESTED_COL,
NESTED_COL, ColumnType.STRING);
+ List<Cursor> cursorList = cursorSequence.toList();
+ ColumnSelectorFactory columnSelectorFactory =
cursorList.get(0).getColumnSelectorFactory();
+
+ ColumnValueSelector valueSelector =
columnSelectorFactory.makeColumnValueSelector(NESTED_COL);
+ Assert.assertThrows(
+ UnsupportedOperationException.class,
+ () ->
cursorList.get(0).getColumnSelectorFactory().makeDimensionSelector(dimensionSpec)
+ );
+ Assert.assertEquals(StructuredData.wrap("a"), valueSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(1).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(NESTED_COL);
+ Assert.assertThrows(
+ UnsupportedOperationException.class,
+ () ->
cursorList.get(1).getColumnSelectorFactory().makeDimensionSelector(dimensionSpec)
+ );
+ Assert.assertEquals(StructuredData.wrap(2L), valueSelector.getObject());
+ Assert.assertFalse(valueSelector.isNull());
+
+ columnSelectorFactory = cursorList.get(2).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(NESTED_COL);
+ Assert.assertThrows(
+ UnsupportedOperationException.class,
+ () ->
cursorList.get(2).getColumnSelectorFactory().makeDimensionSelector(dimensionSpec)
+ );
+ Assert.assertEquals(StructuredData.wrap(ImmutableMap.of("x", 1.1, "y",
2L)), valueSelector.getObject());
+ Assert.assertFalse(valueSelector.isNull());
+
+ columnSelectorFactory = cursorList.get(3).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(NESTED_COL);
+ Assert.assertThrows(
+ UnsupportedOperationException.class,
+ () ->
cursorList.get(3).getColumnSelectorFactory().makeDimensionSelector(dimensionSpec)
+ );
+ Assert.assertNull(valueSelector.getObject());
+
+ columnSelectorFactory = cursorList.get(4).getColumnSelectorFactory();
+ valueSelector = columnSelectorFactory.makeColumnValueSelector(NESTED_COL);
+ Assert.assertThrows(
+ UnsupportedOperationException.class,
+ () ->
cursorList.get(4).getColumnSelectorFactory().makeDimensionSelector(dimensionSpec)
+ );
+ Assert.assertNull(valueSelector.getObject());
+ }
+
+ @Nonnull
+ private static IncrementalIndex makeIncrementalIndex(long minTimestamp)
+ {
+ IncrementalIndex index = new OnheapIncrementalIndex.Builder()
+ .setIndexSchema(
+ new IncrementalIndexSchema(
+ minTimestamp,
+ new TimestampSpec(TIME_COL, "millis", null),
+ Granularities.NONE,
+ VirtualColumns.EMPTY,
+ new DimensionsSpec(Collections.emptyList()),
+ new AggregatorFactory[0],
+ false
+ )
+ )
+ .setMaxRowCount(1000)
+ .setUseNestedColumnIndexerForSchemaDiscovery(true)
+ .build();
+ return index;
+ }
+
+ private MapBasedInputRow makeInputRow(
Review Comment:
will move in a future PR
##########
processing/src/main/java/org/apache/druid/segment/nested/NestedDataColumnSupplier.java:
##########
@@ -91,6 +95,15 @@ public NestedDataColumnSupplier(
fields = GenericIndexed.read(bb, GenericIndexed.STRING_STRATEGY,
mapper);
fieldInfo = NestedLiteralTypeInfo.read(bb, fields.size());
+ if (fields.size() == 1 &&
+ ((version == 0x03 &&
NestedPathFinder.JQ_PATH_ROOT.equals(fields.get(0))) ||
+ (version == 0x04 &&
NestedPathFinder.JSON_PATH_ROOT.equals(fields.get(0))))
+ ) {
+ simpleType = fieldInfo.getTypes(0).getSingleType();
+ } else {
+ simpleType = null;
+ }
Review Comment:
agree, will rework this in a follow-up PR
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]