paul-rogers commented on a change in pull request #1870: DRILL-7359: Add support for DICT type in RowSet Framework URL: https://github.com/apache/drill/pull/1870#discussion_r347115045
########## File path: exec/java-exec/src/test/java/org/apache/drill/test/rowSet/test/TestRowSet.java ########## @@ -586,6 +595,490 @@ public void testRepeatedMapStructure() { RowSetUtilities.verify(expected, actual); } + @Test + public void testDictStructure() { + final String dictName = "d"; + + final TupleMetadata schema = new SchemaBuilder() + .add("id", MinorType.INT) + .addDict(dictName, MinorType.INT) + .value(MinorType.VARCHAR) // required int + .resumeSchema() + .buildSchema(); + final ExtendableRowSet rowSet = fixture.rowSet(schema); + final RowSetWriter writer = rowSet.writer(); + + // Dict + // Pick out components and lightly test. (Assumes structure + // tested earlier is still valid, so no need to exhaustively + // test again.) + + assertEquals(ObjectType.ARRAY, writer.column(dictName).type()); + assertTrue(writer.column(dictName).schema().isDict()); + + final ScalarWriter idWriter = writer.column(0).scalar(); + final DictWriter dictWriter = writer.column(1).dict(); + + assertEquals(ValueType.INTEGER, dictWriter.keyType()); + assertEquals(ObjectType.SCALAR, dictWriter.valueType()); + + final ScalarWriter keyWriter = dictWriter.keyWriter(); + final ScalarWriter valueWriter = dictWriter.valueWriter().scalar(); + + assertEquals(ValueType.INTEGER, keyWriter.valueType()); + assertEquals(ValueType.STRING, valueWriter.valueType()); + + // Write data + idWriter.setInt(1); + + keyWriter.setInt(11); + valueWriter.setString("a"); + dictWriter.save(); // Advance to next entry position + keyWriter.setInt(12); + valueWriter.setString("b"); + dictWriter.save(); Review comment: I like how writing to the DICT works: it is about as simple as you can make it, yet it handles the multiple value types. Nicely done. ---------------------------------------------------------------- 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. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services