siddharthteotia commented on code in PR #9333:
URL: https://github.com/apache/pinot/pull/9333#discussion_r988665941
##########
pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/TableConfigUtilsTest.java:
##########
@@ -895,6 +895,63 @@ public void testValidateFieldConfig() {
} catch (Exception e) {
Assert.assertEquals(e.getMessage(), "Set compression codec to null for
dictionary encoding type");
}
+
+ tableConfig = new
TableConfigBuilder(TableType.OFFLINE).setTableName(TABLE_NAME)
+ .setNoDictionaryColumns(Arrays.asList("myCol1")).build();
+ try {
+ // Enable forward index disabled flag for a raw column
+ Map<String, String> fieldConfigProperties = new HashMap<>();
+ fieldConfigProperties.put(FieldConfig.FORWARD_INDEX_DISABLED,
Boolean.TRUE.toString());
+ FieldConfig fieldConfig = new FieldConfig("myCol1",
FieldConfig.EncodingType.RAW, null, null, null, null,
+ fieldConfigProperties);
+ tableConfig.setFieldConfigList(Arrays.asList(fieldConfig));
+ TableConfigUtils.validate(tableConfig, schema);
+ Assert.fail("Should fail for myCol1 without dictionary and with forward
index disabled");
+ } catch (Exception e) {
+ Assert.assertEquals(e.getMessage(), "Forward index disabled column
myCol1 must have dictionary enabled");
+ }
+
+ try {
+ // Enable forward index disabled flag for a column without inverted index
+ Map<String, String> fieldConfigProperties = new HashMap<>();
+ fieldConfigProperties.put(FieldConfig.FORWARD_INDEX_DISABLED,
Boolean.TRUE.toString());
+ FieldConfig fieldConfig = new FieldConfig("myCol2",
FieldConfig.EncodingType.DICTIONARY, null, null, null, null,
+ fieldConfigProperties);
+ tableConfig.setFieldConfigList(Arrays.asList(fieldConfig));
+ TableConfigUtils.validate(tableConfig, schema);
+ Assert.fail("Should fail for conflicting myCol2 with forward index
disabled but no inverted index");
+ } catch (Exception e) {
+ Assert.assertEquals(e.getMessage(), "Forward index disabled column
myCol2 must have inverted index enabled");
+ }
+
+ tableConfig = new
TableConfigBuilder(TableType.OFFLINE).setTableName(TABLE_NAME)
+
.setNoDictionaryColumns(Arrays.asList("myCol1")).setInvertedIndexColumns(Arrays.asList("myCol2")).build();
+ try {
+ // Enable forward index disabled flag for a column with inverted index
+ Map<String, String> fieldConfigProperties = new HashMap<>();
+ fieldConfigProperties.put(FieldConfig.FORWARD_INDEX_DISABLED,
Boolean.TRUE.toString());
+ FieldConfig fieldConfig = new FieldConfig("myCol2",
FieldConfig.EncodingType.DICTIONARY,
+ FieldConfig.IndexType.INVERTED, null, null, null,
fieldConfigProperties);
+ tableConfig.setFieldConfigList(Arrays.asList(fieldConfig));
+ TableConfigUtils.validate(tableConfig, schema);
+ } catch (Exception e) {
+ Assert.fail("Should not fail as myCol2 has forward index disabled but
inverted index enabled");
+ }
+
+ tableConfig = new
TableConfigBuilder(TableType.OFFLINE).setTableName(TABLE_NAME)
+
.setNoDictionaryColumns(Arrays.asList("myCol1")).setInvertedIndexColumns(Arrays.asList("myCol2"))
+ .setSortedColumn("myCol2").build();
+ try {
+ // Enable forward index disabled flag for a column with inverted index
and is sorted
+ Map<String, String> fieldConfigProperties = new HashMap<>();
+ fieldConfigProperties.put(FieldConfig.FORWARD_INDEX_DISABLED,
Boolean.TRUE.toString());
+ FieldConfig fieldConfig = new FieldConfig("myCol2",
FieldConfig.EncodingType.DICTIONARY,
+ FieldConfig.IndexType.INVERTED, null, null, null,
fieldConfigProperties);
+ tableConfig.setFieldConfigList(Arrays.asList(fieldConfig));
+ TableConfigUtils.validate(tableConfig, schema);
+ } catch (Exception e) {
+ Assert.fail("Should not fail for myCol2 with forward index disabled but
is sorted, this is a no-op");
Review Comment:
Add a test for range index combination scenario as well ?
--
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]