/** * Encode columns and NOT flags indicating which columns should be negated (docIDs will be * excluded if matching negated columns, instead of included). */ public static void setColumnFamilies(IteratorSetting cfg, Text[] columns, boolean[] notFlags) { if (columns.length < 1) throw new IllegalArgumentException("Must supply at least one terms to intersect"); if (columns.length != notFlags.length) throw new IllegalArgumentException("columns and notFlags arrays must be the same length"); setColumnFamilies(cfg, columns); cfg.addOption(IntersectingIterator.notFlagOptionName, IntersectingIterator.encodeBooleans(notFlags)); } }
/** * Encode columns and NOT flags indicating which columns should be negated (docIDs will be * excluded if matching negated columns, instead of included). */ public static void setColumnFamilies(IteratorSetting cfg, Text[] columns, boolean[] notFlags) { if (columns.length < 1) throw new IllegalArgumentException("Must supply at least one terms to intersect"); if (columns.length != notFlags.length) throw new IllegalArgumentException("columns and notFlags arrays must be the same length"); setColumnFamilies(cfg, columns); cfg.addOption(IntersectingIterator.notFlagOptionName, IntersectingIterator.encodeBooleans(notFlags)); } }
IntersectingIterator.setColumnFamilies(ii, columns); bs.addScanIterator(ii); bs.setRanges(Collections.singleton(new Range()));
IntersectingIterator.setColumnFamilies(ii, columns); bs.addScanIterator(ii); bs.setRanges(Collections.singleton(new Range()));
10); IteratorSetting ii = new IteratorSetting(20, "ii", IntersectingIterator.class); IntersectingIterator.setColumnFamilies(ii, columns); bs.addScanIterator(ii); bs.setRanges(Collections.singleton(new Range()));
16); IteratorSetting ii = new IteratorSetting(20, "ii", IntersectingIterator.class.getName()); IntersectingIterator.setColumnFamilies(ii, words); bs.addScanIterator(ii); bs.setRanges(Collections.singleton(new Range()));
@Test public void testBugFix() throws Exception { // test bug fox for ACCUMULO-3977 String table = super.getUniqueNames(1)[0]; Connector conn = getConnector(); conn.tableOperations().create(table); BatchWriter bw = conn.createBatchWriter(table, new BatchWriterConfig()); addDocument(bw, "000A", "dog", "cat", "hamster", "iguana", "the"); addDocument(bw, "000B", "java", "perl", "C++", "pascal", "the"); addDocument(bw, "000C", "chrome", "firefox", "safari", "opera", "the"); addDocument(bw, "000D", "logarithmic", "quadratic", "linear", "exponential", "the"); bw.close(); // its a bug when using rfiles, so flush conn.tableOperations().flush(table, null, null, true); IteratorSetting iterCfg = new IteratorSetting(30, "ayeaye", IntersectingIterator.class.getName()); IntersectingIterator.setColumnFamilies(iterCfg, new Text[] {new Text("the"), new Text("hamster")}); Scanner scanner = conn.createScanner(table, Authorizations.EMPTY); scanner.enableIsolation(); scanner.addScanIterator(iterCfg); for (int i = 0; i < 100; i++) { Iterator<Entry<Key,Value>> iter = scanner.iterator(); Assert.assertTrue(iter.hasNext()); Assert.assertEquals("000A", iter.next().getKey().getColumnQualifierData().toString()); Assert.assertFalse(iter.hasNext()); } }
@Test public void testIntersect() throws Exception { conn.tableOperations().create(tableName); BatchWriter bw = conn.createBatchWriter(tableName, new BatchWriterConfig()); Mutation m = new Mutation("part1"); m.put("bar", "doc1", "value"); m.put("bar", "doc2", "value"); m.put("dog", "doc3", "value"); m.put("foo", "doc2", "value"); m.put("foo", "doc3", "value"); bw.addMutation(m); m = new Mutation("part2"); m.put("bar", "DOC1", "value"); m.put("bar", "DOC2", "value"); m.put("dog", "DOC3", "value"); m.put("foo", "DOC2", "value"); m.put("foo", "DOC3", "value"); bw.addMutation(m); bw.flush(); final ClientSideIteratorScanner csis = new ClientSideIteratorScanner( conn.createScanner(tableName, new Authorizations())); final IteratorSetting si = new IteratorSetting(10, tableName, IntersectingIterator.class); IntersectingIterator.setColumnFamilies(si, new Text[] {new Text("bar"), new Text("foo")}); csis.addScanIterator(si); checkResults(csis, resultSet3, PartialKey.ROW_COLFAM_COLQUAL); }