incubator-blur-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From amccu...@apache.org
Subject [01/12] git commit: BLUR-174 maintain strict family order
Date Mon, 12 Aug 2013 15:14:16 GMT
Updated Branches:
  refs/heads/0.2.0-newtypesystem 64c9bcd05 -> 015c6811a
  refs/heads/master c448ccaf9 -> 05bb056a2


BLUR-174 maintain strict family order


Project: http://git-wip-us.apache.org/repos/asf/incubator-blur/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-blur/commit/c448ccaf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-blur/tree/c448ccaf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-blur/diff/c448ccaf

Branch: refs/heads/0.2.0-newtypesystem
Commit: c448ccaf98c116a86a12c9c4ed6244985add3ffa
Parents: 08f8211
Author: Gagan <gagandeepjuneja@gmail.com>
Authored: Mon Aug 12 11:10:36 2013 +0530
Committer: Gagan <gagandeepjuneja@gmail.com>
Committed: Mon Aug 12 11:10:36 2013 +0530

----------------------------------------------------------------------
 .../blur/thrift/BlurControllerServer.java       |  4 +-
 .../java/org/apache/blur/utils/BlurUtil.java    | 81 ++++++++++++--------
 .../org/apache/blur/utils/BlurUtilsTest.java    | 36 ++++++++-
 .../org/apache/blur/shell/SelectorCommand.java  |  8 +-
 .../apache/blur/thrift/generated/Selector.java  | 42 +++++-----
 .../src/main/scripts/interface/Blur.thrift      |  2 +-
 .../main/scripts/interface/gen-html/Blur.html   |  2 +-
 .../apache/blur/thrift/generated/Selector.java  | 42 +++++-----
 .../main/scripts/interface/gen-js/Blur_types.js | 12 +--
 .../scripts/interface/gen-perl/Blur/Types.pm    | 18 ++---
 .../main/scripts/interface/gen-rb/blur_types.rb |  2 +-
 11 files changed, 149 insertions(+), 100 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/c448ccaf/blur-core/src/main/java/org/apache/blur/thrift/BlurControllerServer.java
----------------------------------------------------------------------
diff --git a/blur-core/src/main/java/org/apache/blur/thrift/BlurControllerServer.java b/blur-core/src/main/java/org/apache/blur/thrift/BlurControllerServer.java
index c888535..473cb9b 100644
--- a/blur-core/src/main/java/org/apache/blur/thrift/BlurControllerServer.java
+++ b/blur-core/src/main/java/org/apache/blur/thrift/BlurControllerServer.java
@@ -104,7 +104,7 @@ public class BlurControllerServer extends TableAdmin implements Iface
{
   private static final String CONTROLLER_THREAD_POOL = "controller-thread-pool";
   private static final Log LOG = LogFactory.getLog(BlurControllerServer.class);
   private static final Map<String, Set<String>> EMPTY_MAP = new HashMap<String,
Set<String>>();
-  private static final Set<String> EMPTY_SET = new HashSet<String>();
+  private static final List<String> EMPTY_LIST = new ArrayList<String>();
 
   private ExecutorService _executor;
   private AtomicReference<Map<String, Map<String, String>>> _shardServerLayout
= new AtomicReference<Map<String, Map<String, String>>>(
@@ -316,7 +316,7 @@ public class BlurControllerServer extends TableAdmin implements Iface
{
         Selector selector = blurQuery.getSelector();
         if (selector == null) {
           selector = new Selector();
-          selector.setColumnFamiliesToFetch(EMPTY_SET);
+          selector.setColumnFamiliesToFetch(EMPTY_LIST);
           selector.setColumnsToFetch(EMPTY_MAP);
           if (!blurQuery.simpleQuery.superQueryOn) {
             selector.setRecordOnly(true);

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/c448ccaf/blur-core/src/main/java/org/apache/blur/utils/BlurUtil.java
----------------------------------------------------------------------
diff --git a/blur-core/src/main/java/org/apache/blur/utils/BlurUtil.java b/blur-core/src/main/java/org/apache/blur/utils/BlurUtil.java
index e805867..9c9c85d 100644
--- a/blur-core/src/main/java/org/apache/blur/utils/BlurUtil.java
+++ b/blur-core/src/main/java/org/apache/blur/utils/BlurUtil.java
@@ -35,6 +35,7 @@ import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
@@ -95,6 +96,7 @@ import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
+import org.apache.lucene.search.ScoreDoc;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.TopDocs;
 import org.apache.zookeeper.CreateMode;
@@ -732,47 +734,60 @@ public class BlurUtil {
       throws IOException {
     IndexSearcher indexSearcher = new IndexSearcher(reader);
     int docFreq = reader.docFreq(term);
-    BooleanQuery booleanQueryForFamily = null;
-    BooleanQuery booleanQuery = null;
-    if (selector.getColumnFamiliesToFetchSize() > 0) {
-      booleanQueryForFamily = new BooleanQuery();
-      for (String familyName : selector.getColumnFamiliesToFetch()) {
-        booleanQueryForFamily
-            .add(new TermQuery(new Term(BlurConstants.FAMILY, familyName)), BooleanClause.Occur.SHOULD);
-      }
-      booleanQuery = new BooleanQuery();
-      booleanQuery.add(new TermQuery(term), BooleanClause.Occur.MUST);
-      booleanQuery.add(booleanQueryForFamily, BooleanClause.Occur.MUST);
-    }
-    Query query = booleanQuery == null ? new TermQuery(term) : booleanQuery;
-    TopDocs topDocs = indexSearcher.search(query, docFreq);
-    int totalHits = topDocs.totalHits;
-    List<Document> docs = new ArrayList<Document>();
-
+    
     int start = selector.getStartRecord();
     int end = selector.getMaxRecordsToFetch() + start;
-
+    
+    List<Document> docs = new ArrayList<Document>();
+    List<ScoreDoc> scoreDocs = new ArrayList<ScoreDoc>();
+    int count = 0;
+    int totalHits = 0;
+    while (scoreDocs.size() < end ){
+    	Query query = getQuery(term, selector, count++);
+    	if(query == null){
+    		break;
+    	}
+    	TopDocs topDocs = indexSearcher.search(query, docFreq);
+    	totalHits += topDocs.totalHits;
+    	scoreDocs.addAll(Arrays.asList(topDocs.scoreDocs));
+    	topDocs = null;
+    }
+     
     int totalHeap = 0;
-
     for (int i = start; i < end; i++) {
-      if (i >= totalHits) {
-        break;
-      }
-      if (totalHeap >= maxHeap) {
-        LOG.warn("Max heap size exceeded for this request [{0}] max [{1}] for [{2}] and rowid
[{3}]", totalHeap,
+    	if (i >= totalHits) {
+    		 break;
+    	 }
+    	 if (totalHeap >= maxHeap) {
+    		 LOG.warn("Max heap size exceeded for this request [{0}] max [{1}] for [{2}] and rowid
[{3}]", totalHeap,
             maxHeap, context, term.text());
-        break;
-      }
-      int doc = topDocs.scoreDocs[i].doc;
-      indexSearcher.doc(doc, fieldSelector);
-      docs.add(fieldSelector.getDocument());
-      int heapSize = fieldSelector.getSize();
-      totalHeap += heapSize;
-      fieldSelector.reset();
-    }
+    		 break;
+    	 }
+    	 int doc = scoreDocs.get(i).doc;
+    	 indexSearcher.doc(doc, fieldSelector);
+    	 docs.add(fieldSelector.getDocument());
+    	 int heapSize = fieldSelector.getSize();
+    	 totalHeap += heapSize;
+    	 fieldSelector.reset();
+     }
     return docs;
   }
 
+private static Query getQuery(Term term,
+		Selector selector, int index) {
+    BooleanQuery booleanQuery = null;
+    int familySize = selector.getColumnFamiliesToFetchSize();
+    if ( familySize > 0 && index < familySize) {
+      booleanQuery = new BooleanQuery();
+      booleanQuery.add(new TermQuery(term), BooleanClause.Occur.MUST);
+      booleanQuery.add(new TermQuery(new Term(BlurConstants.FAMILY, selector.getColumnFamiliesToFetch().get(index))),
BooleanClause.Occur.MUST);
+    }
+    if (booleanQuery == null && index == 0){
+    	return new TermQuery(term);
+    }
+	return booleanQuery;
+}
+
   public static AtomicReader getAtomicReader(IndexReader reader) throws IOException {
     return SlowCompositeReaderWrapper.wrap(reader);
   }

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/c448ccaf/blur-core/src/test/java/org/apache/blur/utils/BlurUtilsTest.java
----------------------------------------------------------------------
diff --git a/blur-core/src/test/java/org/apache/blur/utils/BlurUtilsTest.java b/blur-core/src/test/java/org/apache/blur/utils/BlurUtilsTest.java
index a8b3ed5..3280080 100644
--- a/blur-core/src/test/java/org/apache/blur/utils/BlurUtilsTest.java
+++ b/blur-core/src/test/java/org/apache/blur/utils/BlurUtilsTest.java
@@ -23,7 +23,7 @@ import static org.junit.Assert.fail;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.HashSet;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
@@ -156,7 +156,7 @@ public class BlurUtilsTest {
   @Test
   public void testFetchDocuments() throws CorruptIndexException, LockObtainFailedException,
IOException{
 	  Selector selector = new Selector();
-	  HashSet<String> columnFamiliesToFetch = new HashSet<String>();
+	  List<String> columnFamiliesToFetch = new ArrayList<String>();
 	  columnFamiliesToFetch.add("f1");
 	  columnFamiliesToFetch.add("f2");
 	  selector.setColumnFamiliesToFetch(columnFamiliesToFetch);
@@ -167,6 +167,21 @@ public class BlurUtilsTest {
   }
   
   @Test
+  public void testFetchDocumentsStrictFamilyOrder() throws CorruptIndexException, LockObtainFailedException,
IOException{
+	  Selector selector = new Selector();
+	  List<String> columnFamiliesToFetch = new ArrayList<String>();
+	  columnFamiliesToFetch.add("f1");
+	  columnFamiliesToFetch.add("f2");
+	  selector.setColumnFamiliesToFetch(columnFamiliesToFetch);
+	  
+	  ResetableDocumentStoredFieldVisitor resetableDocumentStoredFieldVisitor = new ResetableDocumentStoredFieldVisitor();
+	  List<Document> docs = BlurUtil.fetchDocuments(getReaderWithDocsHavingFamily(), new
Term("a","b"), resetableDocumentStoredFieldVisitor, selector, 10000000, "test-context");
+	  assertEquals(docs.size(),2);
+	  assertEquals(docs.get(0).getField("family").stringValue(),"f1");
+	  assertEquals(docs.get(1).getField("family").stringValue(),"f2");
+  }
+  
+  @Test
   public void testFetchDocumentsWithoutFamily() throws CorruptIndexException, LockObtainFailedException,
IOException{
 	  Selector selector = new Selector();
 	  ResetableDocumentStoredFieldVisitor resetableDocumentStoredFieldVisitor = new ResetableDocumentStoredFieldVisitor();
@@ -207,5 +222,22 @@ public class BlurUtilsTest {
     writer.close();
     return IndexReader.open(directory);
   }
+  
+  private IndexReader getReaderWithDocsHavingFamily() throws CorruptIndexException, LockObtainFailedException,
IOException {
+	    RAMDirectory directory = new RAMDirectory();
+	    IndexWriterConfig conf = new IndexWriterConfig(LUCENE_VERSION, new KeywordAnalyzer());
+	    IndexWriter writer = new IndexWriter(directory, conf);
+	    Document doc = new Document();
+	    doc.add(new Field("a", "b", Store.YES, Index.NOT_ANALYZED_NO_NORMS));
+	    doc.add(new Field("family", "f2", Store.YES, Index.NOT_ANALYZED_NO_NORMS));
+	    
+	    Document doc1 = new Document();
+	    doc1.add(new Field("a", "b", Store.YES, Index.NOT_ANALYZED_NO_NORMS));
+	    doc1.add(new Field("family", "f1", Store.YES, Index.NOT_ANALYZED_NO_NORMS));
+	    writer.addDocument(doc);
+	    writer.addDocument(doc1);
+	    writer.close();
+	    return IndexReader.open(directory);
+	  }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/c448ccaf/blur-shell/src/main/java/org/apache/blur/shell/SelectorCommand.java
----------------------------------------------------------------------
diff --git a/blur-shell/src/main/java/org/apache/blur/shell/SelectorCommand.java b/blur-shell/src/main/java/org/apache/blur/shell/SelectorCommand.java
index b5e0aab..adbb539 100644
--- a/blur-shell/src/main/java/org/apache/blur/shell/SelectorCommand.java
+++ b/blur-shell/src/main/java/org/apache/blur/shell/SelectorCommand.java
@@ -19,7 +19,9 @@
 package org.apache.blur.shell;
 
 import java.io.PrintWriter;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
@@ -41,13 +43,13 @@ public class SelectorCommand extends Command {
       command = args[1];
     }
     if (command == null) {
-      Set<String> columnFamiliesToFetch = Main.selector.getColumnFamiliesToFetch();
+      List<String> columnFamiliesToFetch = Main.selector.getColumnFamiliesToFetch();
       Map<String, Set<String>> columnsToFetch = Main.selector.getColumnsToFetch();
-      TreeSet<String> names = new TreeSet<String>();
+      List<String> names = new ArrayList<String>();
       if (columnFamiliesToFetch != null) {
         names.addAll(columnFamiliesToFetch);
       } else {
-        columnFamiliesToFetch = new TreeSet<String>();
+        columnFamiliesToFetch = new ArrayList<String>();
       }
       if (columnsToFetch != null) {
         names.addAll(columnsToFetch.keySet());

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/c448ccaf/blur-thrift/src/main/java/org/apache/blur/thrift/generated/Selector.java
----------------------------------------------------------------------
diff --git a/blur-thrift/src/main/java/org/apache/blur/thrift/generated/Selector.java b/blur-thrift/src/main/java/org/apache/blur/thrift/generated/Selector.java
index bb8515e..dbce74f 100644
--- a/blur-thrift/src/main/java/org/apache/blur/thrift/generated/Selector.java
+++ b/blur-thrift/src/main/java/org/apache/blur/thrift/generated/Selector.java
@@ -59,7 +59,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
   private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField LOCATION_ID_FIELD_DESC
= new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("locationId", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING,
(short)2);
   private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField ROW_ID_FIELD_DESC
= new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("rowId", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING,
(short)3);
   private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField RECORD_ID_FIELD_DESC
= new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("recordId", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING,
(short)4);
-  private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField COLUMN_FAMILIES_TO_FETCH_FIELD_DESC
= new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("columnFamiliesToFetch", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.SET,
(short)5);
+  private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField COLUMN_FAMILIES_TO_FETCH_FIELD_DESC
= new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("columnFamiliesToFetch", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.LIST,
(short)5);
   private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField COLUMNS_TO_FETCH_FIELD_DESC
= new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("columnsToFetch", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.MAP,
(short)6);
   private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField ALLOW_STALE_DATA_FIELD_DESC
= new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("allowStaleData", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.BOOL,
(short)7);
   private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField START_RECORD_FIELD_DESC
= new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("startRecord", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.I32,
(short)8);
@@ -92,7 +92,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
   /**
    * The column families to fetch.  If null, fetch all.  If empty, fetch none.
    */
-  public Set<String> columnFamiliesToFetch; // required
+  public List<String> columnFamiliesToFetch; // required
   /**
    * The columns in the families to fetch.  If null, fetch all.  If empty, fetch none.
    */
@@ -260,7 +260,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
     tmpMap.put(_Fields.RECORD_ID, new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldMetaData("recordId",
org.apache.blur.thirdparty.thrift_0_9_0.TFieldRequirementType.DEFAULT, 
         new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldValueMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING)));
     tmpMap.put(_Fields.COLUMN_FAMILIES_TO_FETCH, new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldMetaData("columnFamiliesToFetch",
org.apache.blur.thirdparty.thrift_0_9_0.TFieldRequirementType.DEFAULT, 
-        new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.SetMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.SET,

+        new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.ListMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.LIST,

             new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldValueMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING))));
     tmpMap.put(_Fields.COLUMNS_TO_FETCH, new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldMetaData("columnsToFetch",
org.apache.blur.thirdparty.thrift_0_9_0.TFieldRequirementType.DEFAULT, 
         new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.MapMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.MAP,

@@ -291,7 +291,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
     String locationId,
     String rowId,
     String recordId,
-    Set<String> columnFamiliesToFetch,
+    List<String> columnFamiliesToFetch,
     Map<String,Set<String>> columnsToFetch,
     boolean allowStaleData,
     int startRecord,
@@ -331,7 +331,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
       this.recordId = other.recordId;
     }
     if (other.isSetColumnFamiliesToFetch()) {
-      Set<String> __this__columnFamiliesToFetch = new HashSet<String>();
+      List<String> __this__columnFamiliesToFetch = new ArrayList<String>();
       for (String other_element : other.columnFamiliesToFetch) {
         __this__columnFamiliesToFetch.add(other_element);
       }
@@ -516,7 +516,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
 
   public void addToColumnFamiliesToFetch(String elem) {
     if (this.columnFamiliesToFetch == null) {
-      this.columnFamiliesToFetch = new HashSet<String>();
+      this.columnFamiliesToFetch = new ArrayList<String>();
     }
     this.columnFamiliesToFetch.add(elem);
   }
@@ -524,14 +524,14 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
   /**
    * The column families to fetch.  If null, fetch all.  If empty, fetch none.
    */
-  public Set<String> getColumnFamiliesToFetch() {
+  public List<String> getColumnFamiliesToFetch() {
     return this.columnFamiliesToFetch;
   }
 
   /**
    * The column families to fetch.  If null, fetch all.  If empty, fetch none.
    */
-  public Selector setColumnFamiliesToFetch(Set<String> columnFamiliesToFetch) {
+  public Selector setColumnFamiliesToFetch(List<String> columnFamiliesToFetch) {
     this.columnFamiliesToFetch = columnFamiliesToFetch;
     return this;
   }
@@ -759,7 +759,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
       if (value == null) {
         unsetColumnFamiliesToFetch();
       } else {
-        setColumnFamiliesToFetch((Set<String>)value);
+        setColumnFamiliesToFetch((List<String>)value);
       }
       break;
 
@@ -1256,17 +1256,17 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
             }
             break;
           case 5: // COLUMN_FAMILIES_TO_FETCH
-            if (schemeField.type == org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.SET)
{
+            if (schemeField.type == org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.LIST)
{
               {
-                org.apache.blur.thirdparty.thrift_0_9_0.protocol.TSet _set16 = iprot.readSetBegin();
-                struct.columnFamiliesToFetch = new HashSet<String>(2*_set16.size);
-                for (int _i17 = 0; _i17 < _set16.size; ++_i17)
+                org.apache.blur.thirdparty.thrift_0_9_0.protocol.TList _list16 = iprot.readListBegin();
+                struct.columnFamiliesToFetch = new ArrayList<String>(_list16.size);
+                for (int _i17 = 0; _i17 < _list16.size; ++_i17)
                 {
                   String _elem18; // required
                   _elem18 = iprot.readString();
                   struct.columnFamiliesToFetch.add(_elem18);
                 }
-                iprot.readSetEnd();
+                iprot.readListEnd();
               }
               struct.setColumnFamiliesToFetchIsSet(true);
             } else { 
@@ -1281,7 +1281,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
                 for (int _i20 = 0; _i20 < _map19.size; ++_i20)
                 {
                   String _key21; // required
-                  Set<String> _val22; // optional
+                  Set<String> _val22; // required
                   _key21 = iprot.readString();
                   {
                     org.apache.blur.thirdparty.thrift_0_9_0.protocol.TSet _set23 = iprot.readSetBegin();
@@ -1372,12 +1372,12 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
       if (struct.columnFamiliesToFetch != null) {
         oprot.writeFieldBegin(COLUMN_FAMILIES_TO_FETCH_FIELD_DESC);
         {
-          oprot.writeSetBegin(new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TSet(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING,
struct.columnFamiliesToFetch.size()));
+          oprot.writeListBegin(new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TList(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING,
struct.columnFamiliesToFetch.size()));
           for (String _iter26 : struct.columnFamiliesToFetch)
           {
             oprot.writeString(_iter26);
           }
-          oprot.writeSetEnd();
+          oprot.writeListEnd();
         }
         oprot.writeFieldEnd();
       }
@@ -1537,9 +1537,9 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
       }
       if (incoming.get(4)) {
         {
-          org.apache.blur.thirdparty.thrift_0_9_0.protocol.TSet _set32 = new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TSet(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING,
iprot.readI32());
-          struct.columnFamiliesToFetch = new HashSet<String>(2*_set32.size);
-          for (int _i33 = 0; _i33 < _set32.size; ++_i33)
+          org.apache.blur.thirdparty.thrift_0_9_0.protocol.TList _list32 = new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TList(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING,
iprot.readI32());
+          struct.columnFamiliesToFetch = new ArrayList<String>(_list32.size);
+          for (int _i33 = 0; _i33 < _list32.size; ++_i33)
           {
             String _elem34; // required
             _elem34 = iprot.readString();
@@ -1555,7 +1555,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
           for (int _i36 = 0; _i36 < _map35.size; ++_i36)
           {
             String _key37; // required
-            Set<String> _val38; // optional
+            Set<String> _val38; // required
             _key37 = iprot.readString();
             {
               org.apache.blur.thirdparty.thrift_0_9_0.protocol.TSet _set39 = new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TSet(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING,
iprot.readI32());

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/c448ccaf/distribution/src/main/scripts/interface/Blur.thrift
----------------------------------------------------------------------
diff --git a/distribution/src/main/scripts/interface/Blur.thrift b/distribution/src/main/scripts/interface/Blur.thrift
index a005b34..248206c 100644
--- a/distribution/src/main/scripts/interface/Blur.thrift
+++ b/distribution/src/main/scripts/interface/Blur.thrift
@@ -249,7 +249,7 @@ struct Selector {
   /**
    * The column families to fetch.  If null, fetch all.  If empty, fetch none.
    */
-  5:set<string> columnFamiliesToFetch,
+  5:list<string> columnFamiliesToFetch,
   /**
    * The columns in the families to fetch.  If null, fetch all.  If empty, fetch none.
    */

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/c448ccaf/distribution/src/main/scripts/interface/gen-html/Blur.html
----------------------------------------------------------------------
diff --git a/distribution/src/main/scripts/interface/gen-html/Blur.html b/distribution/src/main/scripts/interface/gen-html/Blur.html
index e94a8cd..4b63b53 100644
--- a/distribution/src/main/scripts/interface/gen-html/Blur.html
+++ b/distribution/src/main/scripts/interface/gen-html/Blur.html
@@ -225,7 +225,7 @@ The location id of the Record or Row to be fetched.
 </td><td>default</td><td></td></tr>
 <tr><td>4</td><td>recordId</td><td><code>string</code></td><td>The
record id of the Record to be fetched, not to be used with location id.  However the row id
needs to be provided to locate the correct Row with the requested Record.
 </td><td>default</td><td></td></tr>
-<tr><td>5</td><td>columnFamiliesToFetch</td><td><code>set&lt;<code>string</code>&gt;</code></td><td>The
column families to fetch.  If null, fetch all.  If empty, fetch none.
+<tr><td>5</td><td>columnFamiliesToFetch</td><td><code>list&lt;<code>string</code>&gt;</code></td><td>The
column families to fetch.  If null, fetch all.  If empty, fetch none.
 </td><td>default</td><td></td></tr>
 <tr><td>6</td><td>columnsToFetch</td><td><code>map&lt;<code>string</code>,
<code>set&lt;<code>string</code>&gt;</code>&gt;</code></td><td>The
columns in the families to fetch.  If null, fetch all.  If empty, fetch none.
 </td><td>default</td><td></td></tr>

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/c448ccaf/distribution/src/main/scripts/interface/gen-java/org/apache/blur/thrift/generated/Selector.java
----------------------------------------------------------------------
diff --git a/distribution/src/main/scripts/interface/gen-java/org/apache/blur/thrift/generated/Selector.java
b/distribution/src/main/scripts/interface/gen-java/org/apache/blur/thrift/generated/Selector.java
index bb8515e..dbce74f 100644
--- a/distribution/src/main/scripts/interface/gen-java/org/apache/blur/thrift/generated/Selector.java
+++ b/distribution/src/main/scripts/interface/gen-java/org/apache/blur/thrift/generated/Selector.java
@@ -59,7 +59,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
   private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField LOCATION_ID_FIELD_DESC
= new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("locationId", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING,
(short)2);
   private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField ROW_ID_FIELD_DESC
= new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("rowId", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING,
(short)3);
   private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField RECORD_ID_FIELD_DESC
= new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("recordId", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING,
(short)4);
-  private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField COLUMN_FAMILIES_TO_FETCH_FIELD_DESC
= new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("columnFamiliesToFetch", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.SET,
(short)5);
+  private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField COLUMN_FAMILIES_TO_FETCH_FIELD_DESC
= new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("columnFamiliesToFetch", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.LIST,
(short)5);
   private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField COLUMNS_TO_FETCH_FIELD_DESC
= new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("columnsToFetch", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.MAP,
(short)6);
   private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField ALLOW_STALE_DATA_FIELD_DESC
= new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("allowStaleData", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.BOOL,
(short)7);
   private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField START_RECORD_FIELD_DESC
= new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("startRecord", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.I32,
(short)8);
@@ -92,7 +92,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
   /**
    * The column families to fetch.  If null, fetch all.  If empty, fetch none.
    */
-  public Set<String> columnFamiliesToFetch; // required
+  public List<String> columnFamiliesToFetch; // required
   /**
    * The columns in the families to fetch.  If null, fetch all.  If empty, fetch none.
    */
@@ -260,7 +260,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
     tmpMap.put(_Fields.RECORD_ID, new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldMetaData("recordId",
org.apache.blur.thirdparty.thrift_0_9_0.TFieldRequirementType.DEFAULT, 
         new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldValueMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING)));
     tmpMap.put(_Fields.COLUMN_FAMILIES_TO_FETCH, new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldMetaData("columnFamiliesToFetch",
org.apache.blur.thirdparty.thrift_0_9_0.TFieldRequirementType.DEFAULT, 
-        new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.SetMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.SET,

+        new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.ListMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.LIST,

             new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldValueMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING))));
     tmpMap.put(_Fields.COLUMNS_TO_FETCH, new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldMetaData("columnsToFetch",
org.apache.blur.thirdparty.thrift_0_9_0.TFieldRequirementType.DEFAULT, 
         new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.MapMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.MAP,

@@ -291,7 +291,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
     String locationId,
     String rowId,
     String recordId,
-    Set<String> columnFamiliesToFetch,
+    List<String> columnFamiliesToFetch,
     Map<String,Set<String>> columnsToFetch,
     boolean allowStaleData,
     int startRecord,
@@ -331,7 +331,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
       this.recordId = other.recordId;
     }
     if (other.isSetColumnFamiliesToFetch()) {
-      Set<String> __this__columnFamiliesToFetch = new HashSet<String>();
+      List<String> __this__columnFamiliesToFetch = new ArrayList<String>();
       for (String other_element : other.columnFamiliesToFetch) {
         __this__columnFamiliesToFetch.add(other_element);
       }
@@ -516,7 +516,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
 
   public void addToColumnFamiliesToFetch(String elem) {
     if (this.columnFamiliesToFetch == null) {
-      this.columnFamiliesToFetch = new HashSet<String>();
+      this.columnFamiliesToFetch = new ArrayList<String>();
     }
     this.columnFamiliesToFetch.add(elem);
   }
@@ -524,14 +524,14 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
   /**
    * The column families to fetch.  If null, fetch all.  If empty, fetch none.
    */
-  public Set<String> getColumnFamiliesToFetch() {
+  public List<String> getColumnFamiliesToFetch() {
     return this.columnFamiliesToFetch;
   }
 
   /**
    * The column families to fetch.  If null, fetch all.  If empty, fetch none.
    */
-  public Selector setColumnFamiliesToFetch(Set<String> columnFamiliesToFetch) {
+  public Selector setColumnFamiliesToFetch(List<String> columnFamiliesToFetch) {
     this.columnFamiliesToFetch = columnFamiliesToFetch;
     return this;
   }
@@ -759,7 +759,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
       if (value == null) {
         unsetColumnFamiliesToFetch();
       } else {
-        setColumnFamiliesToFetch((Set<String>)value);
+        setColumnFamiliesToFetch((List<String>)value);
       }
       break;
 
@@ -1256,17 +1256,17 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
             }
             break;
           case 5: // COLUMN_FAMILIES_TO_FETCH
-            if (schemeField.type == org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.SET)
{
+            if (schemeField.type == org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.LIST)
{
               {
-                org.apache.blur.thirdparty.thrift_0_9_0.protocol.TSet _set16 = iprot.readSetBegin();
-                struct.columnFamiliesToFetch = new HashSet<String>(2*_set16.size);
-                for (int _i17 = 0; _i17 < _set16.size; ++_i17)
+                org.apache.blur.thirdparty.thrift_0_9_0.protocol.TList _list16 = iprot.readListBegin();
+                struct.columnFamiliesToFetch = new ArrayList<String>(_list16.size);
+                for (int _i17 = 0; _i17 < _list16.size; ++_i17)
                 {
                   String _elem18; // required
                   _elem18 = iprot.readString();
                   struct.columnFamiliesToFetch.add(_elem18);
                 }
-                iprot.readSetEnd();
+                iprot.readListEnd();
               }
               struct.setColumnFamiliesToFetchIsSet(true);
             } else { 
@@ -1281,7 +1281,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
                 for (int _i20 = 0; _i20 < _map19.size; ++_i20)
                 {
                   String _key21; // required
-                  Set<String> _val22; // optional
+                  Set<String> _val22; // required
                   _key21 = iprot.readString();
                   {
                     org.apache.blur.thirdparty.thrift_0_9_0.protocol.TSet _set23 = iprot.readSetBegin();
@@ -1372,12 +1372,12 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
       if (struct.columnFamiliesToFetch != null) {
         oprot.writeFieldBegin(COLUMN_FAMILIES_TO_FETCH_FIELD_DESC);
         {
-          oprot.writeSetBegin(new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TSet(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING,
struct.columnFamiliesToFetch.size()));
+          oprot.writeListBegin(new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TList(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING,
struct.columnFamiliesToFetch.size()));
           for (String _iter26 : struct.columnFamiliesToFetch)
           {
             oprot.writeString(_iter26);
           }
-          oprot.writeSetEnd();
+          oprot.writeListEnd();
         }
         oprot.writeFieldEnd();
       }
@@ -1537,9 +1537,9 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
       }
       if (incoming.get(4)) {
         {
-          org.apache.blur.thirdparty.thrift_0_9_0.protocol.TSet _set32 = new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TSet(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING,
iprot.readI32());
-          struct.columnFamiliesToFetch = new HashSet<String>(2*_set32.size);
-          for (int _i33 = 0; _i33 < _set32.size; ++_i33)
+          org.apache.blur.thirdparty.thrift_0_9_0.protocol.TList _list32 = new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TList(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING,
iprot.readI32());
+          struct.columnFamiliesToFetch = new ArrayList<String>(_list32.size);
+          for (int _i33 = 0; _i33 < _list32.size; ++_i33)
           {
             String _elem34; // required
             _elem34 = iprot.readString();
@@ -1555,7 +1555,7 @@ public class Selector implements org.apache.blur.thirdparty.thrift_0_9_0.TBase<S
           for (int _i36 = 0; _i36 < _map35.size; ++_i36)
           {
             String _key37; // required
-            Set<String> _val38; // optional
+            Set<String> _val38; // required
             _key37 = iprot.readString();
             {
               org.apache.blur.thirdparty.thrift_0_9_0.protocol.TSet _set39 = new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TSet(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING,
iprot.readI32());

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/c448ccaf/distribution/src/main/scripts/interface/gen-js/Blur_types.js
----------------------------------------------------------------------
diff --git a/distribution/src/main/scripts/interface/gen-js/Blur_types.js b/distribution/src/main/scripts/interface/gen-js/Blur_types.js
index 57e8302..2bbef3c 100644
--- a/distribution/src/main/scripts/interface/gen-js/Blur_types.js
+++ b/distribution/src/main/scripts/interface/gen-js/Blur_types.js
@@ -688,12 +688,12 @@ Selector.prototype.read = function(input) {
       }
       break;
       case 5:
-      if (ftype == Thrift.Type.SET) {
+      if (ftype == Thrift.Type.LIST) {
         var _size16 = 0;
         var _rtmp320;
         this.columnFamiliesToFetch = [];
         var _etype19 = 0;
-        _rtmp320 = input.readSetBegin();
+        _rtmp320 = input.readListBegin();
         _etype19 = _rtmp320.etype;
         _size16 = _rtmp320.size;
         for (var _i21 = 0; _i21 < _size16; ++_i21)
@@ -702,7 +702,7 @@ Selector.prototype.read = function(input) {
           elem22 = input.readString().value;
           this.columnFamiliesToFetch.push(elem22);
         }
-        input.readSetEnd();
+        input.readListEnd();
       } else {
         input.skip(ftype);
       }
@@ -810,8 +810,8 @@ Selector.prototype.write = function(output) {
     output.writeFieldEnd();
   }
   if (this.columnFamiliesToFetch !== null && this.columnFamiliesToFetch !== undefined)
{
-    output.writeFieldBegin('columnFamiliesToFetch', Thrift.Type.SET, 5);
-    output.writeSetBegin(Thrift.Type.STRING, this.columnFamiliesToFetch.length);
+    output.writeFieldBegin('columnFamiliesToFetch', Thrift.Type.LIST, 5);
+    output.writeListBegin(Thrift.Type.STRING, this.columnFamiliesToFetch.length);
     for (var iter38 in this.columnFamiliesToFetch)
     {
       if (this.columnFamiliesToFetch.hasOwnProperty(iter38))
@@ -820,7 +820,7 @@ Selector.prototype.write = function(output) {
         output.writeString(iter38);
       }
     }
-    output.writeSetEnd();
+    output.writeListEnd();
     output.writeFieldEnd();
   }
   if (this.columnsToFetch !== null && this.columnsToFetch !== undefined) {

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/c448ccaf/distribution/src/main/scripts/interface/gen-perl/Blur/Types.pm
----------------------------------------------------------------------
diff --git a/distribution/src/main/scripts/interface/gen-perl/Blur/Types.pm b/distribution/src/main/scripts/interface/gen-perl/Blur/Types.pm
index 02ae25c..5232265 100644
--- a/distribution/src/main/scripts/interface/gen-perl/Blur/Types.pm
+++ b/distribution/src/main/scripts/interface/gen-perl/Blur/Types.pm
@@ -763,19 +763,19 @@ sub read {
         $xfer += $input->skip($ftype);
       }
       last; };
-      /^5$/ && do{      if ($ftype == TType::SET) {
+      /^5$/ && do{      if ($ftype == TType::LIST) {
         {
           my $_size14 = 0;
-          $self->{columnFamiliesToFetch} = {};
+          $self->{columnFamiliesToFetch} = [];
           my $_etype17 = 0;
-          $xfer += $input->readSetBegin(\$_etype17, \$_size14);
+          $xfer += $input->readListBegin(\$_etype17, \$_size14);
           for (my $_i18 = 0; $_i18 < $_size14; ++$_i18)
           {
             my $elem19 = undef;
             $xfer += $input->readString(\$elem19);
-            $self->{columnFamiliesToFetch}->{$elem19} = 1;
+            push(@{$self->{columnFamiliesToFetch}},$elem19);
           }
-          $xfer += $input->readSetEnd();
+          $xfer += $input->readListEnd();
         }
       } else {
         $xfer += $input->skip($ftype);
@@ -872,16 +872,16 @@ sub write {
     $xfer += $output->writeFieldEnd();
   }
   if (defined $self->{columnFamiliesToFetch}) {
-    $xfer += $output->writeFieldBegin('columnFamiliesToFetch', TType::SET, 5);
+    $xfer += $output->writeFieldBegin('columnFamiliesToFetch', TType::LIST, 5);
     {
-      $xfer += $output->writeSetBegin(TType::STRING, scalar(@{$self->{columnFamiliesToFetch}}));
+      $xfer += $output->writeListBegin(TType::STRING, scalar(@{$self->{columnFamiliesToFetch}}));
       {
-        foreach my $iter33 (@{$self->{columnFamiliesToFetch}})
+        foreach my $iter33 (@{$self->{columnFamiliesToFetch}}) 
         {
           $xfer += $output->writeString($iter33);
         }
       }
-      $xfer += $output->writeSetEnd();
+      $xfer += $output->writeListEnd();
     }
     $xfer += $output->writeFieldEnd();
   }

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/c448ccaf/distribution/src/main/scripts/interface/gen-rb/blur_types.rb
----------------------------------------------------------------------
diff --git a/distribution/src/main/scripts/interface/gen-rb/blur_types.rb b/distribution/src/main/scripts/interface/gen-rb/blur_types.rb
index 5f4dcf3..680f342 100644
--- a/distribution/src/main/scripts/interface/gen-rb/blur_types.rb
+++ b/distribution/src/main/scripts/interface/gen-rb/blur_types.rb
@@ -253,7 +253,7 @@ module Blur
       # The record id of the Record to be fetched, not to be used with location id.  However
the row id needs to be provided to locate the correct Row with the requested Record.
       RECORDID => {:type => ::Thrift::Types::STRING, :name => 'recordId'},
       # The column families to fetch.  If null, fetch all.  If empty, fetch none.
-      COLUMNFAMILIESTOFETCH => {:type => ::Thrift::Types::SET, :name => 'columnFamiliesToFetch',
:element => {:type => ::Thrift::Types::STRING}},
+      COLUMNFAMILIESTOFETCH => {:type => ::Thrift::Types::LIST, :name => 'columnFamiliesToFetch',
:element => {:type => ::Thrift::Types::STRING}},
       # The columns in the families to fetch.  If null, fetch all.  If empty, fetch none.
       COLUMNSTOFETCH => {:type => ::Thrift::Types::MAP, :name => 'columnsToFetch',
:key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::SET,
:element => {:type => ::Thrift::Types::STRING}}},
       # @deprecated This value is no longer used.  This allows the fetch to see the most
current data that has been added to the table.


Mime
View raw message