partConf.setType("RANGE");
KeyRangeFilterConfig.Config rangeConf = new KeyRangeFilterConfig.Config();
rangeConf.setSize(100);
rangeConf.setPartitions("[0,3-4]");
partConf.setRange(rangeConf);
DbusKeyFilter filter = new DbusKeyFilter(new KeyFilterConfigHolder(partConf.build()));
processor.setKeyFilter(filter);
LOG.info("Testing multiple range filters: ");
LOG.info("CATCHUP TABLE: " + processor.getCatchupSQLString("catchuptab"));
LOG.info("SNAPSHOT TABLE: " + processor.getSnapshotSQLString("snapshotTable"));
String catchUpString = processor.getCatchupSQLString("catchuptab").replaceAll("\\s+"," ");
String snapshotString = processor.getSnapshotSQLString("snapshotTable").replaceAll("\\s+"," ");
String catchUpExpectedString = "Select id, scn, windowscn, val, CAST(srckey as SIGNED) as srckey from catchuptab where id > ? and windowscn >= ? and windowscn <= ? and windowscn >= ? AND ( srckey >= 0 AND srckey < 100 OR srckey >= 300 AND srckey < 500 ) order by id limit ?".replaceAll("\\s+"," ");
String snapshotExpectedString = "Select id, scn, CAST(srckey as SIGNED) as srckey, val from snapshotTable where id > ? and scn < ? and scn >= ? AND ( srckey >= 0 AND srckey < 100 OR srckey >= 300 AND srckey < 500 ) order by id limit ?".replaceAll("\\s+"," ");
Assert.assertEquals(catchUpString, catchUpExpectedString);
Assert.assertEquals(snapshotString, snapshotExpectedString);
partConf = new KeyFilterConfigHolder.Config();
partConf.setType("RANGE");
rangeConf = new KeyRangeFilterConfig.Config();
rangeConf.setSize(100);
rangeConf.setPartitions("[0]");
partConf.setRange(rangeConf);
filter = new DbusKeyFilter(new KeyFilterConfigHolder(partConf.build()));
processor.setKeyFilter(filter);
LOG.info("Testing single range filter");
LOG.info("CATCHUP TABLE: " + processor.getCatchupSQLString("catchuptab"));
LOG.info("SNAPSHOT TABLE: " + processor.getSnapshotSQLString("snapshotTable"));
catchUpString = processor.getCatchupSQLString("catchuptab").replaceAll("\\s+"," ");