accumulo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mwa...@apache.org
Subject [accumulo] branch master updated: Add ScannerBase.fetchColumn/Family using CharSequence (#939)
Date Wed, 06 Feb 2019 20:40:35 GMT
This is an automated email from the ASF dual-hosted git repository.

mwalch pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/master by this push:
     new e0e7916  Add ScannerBase.fetchColumn/Family using CharSequence (#939)
e0e7916 is described below

commit e0e791609f3048ba5d6af8ab2dbcd754ad1ad848
Author: Mike Walch <mwalch@apache.org>
AuthorDate: Wed Feb 6 15:40:31 2019 -0500

    Add ScannerBase.fetchColumn/Family using CharSequence (#939)
    
    * Modified some but not all tests to use new method
---
 .../apache/accumulo/core/client/ScannerBase.java   | 33 ++++++++++++++++++++++
 .../accumulo/core/clientImpl/ScannerOptions.java   | 15 ++++++++++
 .../apache/accumulo/test/ClientSideIteratorIT.java |  4 +--
 .../apache/accumulo/test/ConditionalWriterIT.java  | 14 ++++-----
 4 files changed, 57 insertions(+), 9 deletions(-)

diff --git a/core/src/main/java/org/apache/accumulo/core/client/ScannerBase.java b/core/src/main/java/org/apache/accumulo/core/client/ScannerBase.java
index 7d200bf..a490f16 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/ScannerBase.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/ScannerBase.java
@@ -91,6 +91,25 @@ public interface ScannerBase extends Iterable<Entry<Key,Value>>,
AutoCloseable {
   void fetchColumnFamily(Text col);
 
   /**
+   * Adds a column family to the list of columns that will be fetched by this scanner. By
default
+   * when no columns have been added the scanner fetches all columns. To fetch multiple column
+   * families call this function multiple times.
+   *
+   * <p>
+   * This can help limit which locality groups are read on the server side.
+   *
+   * <p>
+   * When used in conjunction with custom iterators, the set of column families fetched is
passed to
+   * the top iterator's seek method. Custom iterators may change this set of column families
when
+   * calling seek on their source.
+   *
+   * @param colFam
+   *          the column family to be fetched
+   * @since 2.0.0
+   */
+  void fetchColumnFamily(CharSequence colFam);
+
+  /**
    * Adds a column to the list of columns that will be fetched by this scanner. The column
is
    * identified by family and qualifier. By default when no columns have been added the scanner
    * fetches all columns.
@@ -122,6 +141,20 @@ public interface ScannerBase extends Iterable<Entry<Key,Value>>,
AutoCloseable {
   void fetchColumn(Text colFam, Text colQual);
 
   /**
+   * Adds a column to the list of columns that will be fetched by this scanner. The column
is
+   * identified by family and qualifier. By default when no columns have been added the scanner
+   * fetches all columns. See the warning on {@link #fetchColumn(Text, Text)}
+   *
+   *
+   * @param colFam
+   *          the column family of the column to be fetched
+   * @param colQual
+   *          the column qualifier of the column to be fetched
+   * @since 2.0.0
+   */
+  void fetchColumn(CharSequence colFam, CharSequence colQual);
+
+  /**
    * Adds a column to the list of columns that will be fetch by this scanner.
    *
    * @param column
diff --git a/core/src/main/java/org/apache/accumulo/core/clientImpl/ScannerOptions.java b/core/src/main/java/org/apache/accumulo/core/clientImpl/ScannerOptions.java
index 71c7900..a9d45f2 100644
--- a/core/src/main/java/org/apache/accumulo/core/clientImpl/ScannerOptions.java
+++ b/core/src/main/java/org/apache/accumulo/core/clientImpl/ScannerOptions.java
@@ -140,6 +140,13 @@ public class ScannerOptions implements ScannerBase {
   }
 
   @Override
+  public void fetchColumnFamily(CharSequence colFam) {
+    checkArgument(colFam != null, "colFam is null");
+    Column c = new Column(colFam.toString().getBytes(), null, null);
+    fetchedColumns.add(c);
+  }
+
+  @Override
   public synchronized void fetchColumn(Text colFam, Text colQual) {
     checkArgument(colFam != null, "colFam is null");
     checkArgument(colQual != null, "colQual is null");
@@ -148,6 +155,14 @@ public class ScannerOptions implements ScannerBase {
   }
 
   @Override
+  public void fetchColumn(CharSequence colFam, CharSequence colQual) {
+    checkArgument(colFam != null, "colFam is null");
+    checkArgument(colQual != null, "colQual is null");
+    Column c = new Column(colFam.toString().getBytes(), colQual.toString().getBytes(), null);
+    fetchedColumns.add(c);
+  }
+
+  @Override
   public void fetchColumn(IteratorSetting.Column column) {
     checkArgument(column != null, "Column is null");
     fetchColumn(column.getColumnFamily(), column.getColumnQualifier());
diff --git a/test/src/main/java/org/apache/accumulo/test/ClientSideIteratorIT.java b/test/src/main/java/org/apache/accumulo/test/ClientSideIteratorIT.java
index c727e68..3569c60 100644
--- a/test/src/main/java/org/apache/accumulo/test/ClientSideIteratorIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ClientSideIteratorIT.java
@@ -145,10 +145,10 @@ public class ClientSideIteratorIT extends AccumuloClusterHarness {
       checkResults(csis, resultSet1, PartialKey.ROW_COLFAM_COLQUAL_COLVIS_TIME);
       checkResults(scanner, resultSet2, PartialKey.ROW_COLFAM_COLQUAL_COLVIS_TIME);
 
-      csis.fetchColumnFamily(new Text("colf"));
+      csis.fetchColumnFamily("colf");
       checkResults(csis, resultSet1, PartialKey.ROW_COLFAM_COLQUAL_COLVIS_TIME);
       csis.clearColumns();
-      csis.fetchColumnFamily(new Text("none"));
+      csis.fetchColumnFamily("none");
       assertFalse(csis.iterator().hasNext());
     }
   }
diff --git a/test/src/main/java/org/apache/accumulo/test/ConditionalWriterIT.java b/test/src/main/java/org/apache/accumulo/test/ConditionalWriterIT.java
index b4b4940..1bf4911 100644
--- a/test/src/main/java/org/apache/accumulo/test/ConditionalWriterIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ConditionalWriterIT.java
@@ -203,7 +203,7 @@ public class ConditionalWriterIT extends AccumuloClusterHarness {
         assertEquals(Status.REJECTED, cw.write(cm5).getStatus());
 
         // ensure rejected mutations did not write
-        scanner.fetchColumn(new Text("name"), new Text("last"));
+        scanner.fetchColumn("name", "last");
         scanner.setRange(new Range("99006"));
         Entry<Key,Value> entry = Iterables.getOnlyElement(scanner);
         assertEquals("Doe", entry.getValue().toString());
@@ -282,7 +282,7 @@ public class ConditionalWriterIT extends AccumuloClusterHarness {
 
           scanner.setRange(new Range("99006"));
           // TODO verify all columns
-          scanner.fetchColumn(new Text("tx"), new Text("seq"));
+          scanner.fetchColumn("tx", "seq");
           Entry<Key,Value> entry = Iterables.getOnlyElement(scanner);
           assertEquals("1", entry.getValue().toString());
           long ts = entry.getKey().getTimestamp();
@@ -538,7 +538,7 @@ public class ConditionalWriterIT extends AccumuloClusterHarness {
       try (Scanner scanner = client.createScanner(tableName, new Authorizations())) {
         scanner.addScanIterator(iterConfig);
         scanner.setRange(new Range("ACCUMULO-1000"));
-        scanner.fetchColumn(new Text("count"), new Text("comments"));
+        scanner.fetchColumn("count", "comments");
 
         Entry<Key,Value> entry = Iterables.getOnlyElement(scanner);
         assertEquals("3", entry.getValue().toString());
@@ -689,7 +689,7 @@ public class ConditionalWriterIT extends AccumuloClusterHarness {
         assertEquals(Status.ACCEPTED, cw.write(cm6).getStatus());
 
         scanner.setRange(new Range("ACCUMULO-1000"));
-        scanner.fetchColumn(new Text("count"), new Text("comments"));
+        scanner.fetchColumn("count", "comments");
 
         Entry<Key,Value> entry = Iterables.getOnlyElement(scanner);
         assertEquals("9", entry.getValue().toString());
@@ -792,7 +792,7 @@ public class ConditionalWriterIT extends AccumuloClusterHarness {
 
         assertEquals(3, count);
 
-        scanner.fetchColumn(new Text("tx"), new Text("seq"));
+        scanner.fetchColumn("tx", "seq");
 
         for (String row : new String[] {"99006", "59056", "19059"}) {
           scanner.setRange(new Range(row));
@@ -853,7 +853,7 @@ public class ConditionalWriterIT extends AccumuloClusterHarness {
         assertEquals("2", entry.getValue().toString());
 
         scanner.clearColumns();
-        scanner.fetchColumn(new Text("name"), new Text("last"));
+        scanner.fetchColumn("name", "last");
         entry = Iterables.getOnlyElement(scanner);
         assertEquals("Doe", entry.getValue().toString());
       }
@@ -1014,7 +1014,7 @@ public class ConditionalWriterIT extends AccumuloClusterHarness {
 
         assertEquals(4, rows.size());
 
-        scanner.fetchColumn(new Text("tx"), new Text("seq"));
+        scanner.fetchColumn("tx", "seq");
         Entry<Key,Value> entry = Iterables.getOnlyElement(scanner);
         assertEquals("1", entry.getValue().toString());
       }


Mime
View raw message