You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by js...@apache.org on 2015/05/07 20:02:40 UTC

[8/8] drill git commit: DRILL-2508: Added a wrapper class for OptionValue to include status Option status: BOOT, DEFAULT, CHANGED

DRILL-2508: Added a wrapper class for OptionValue to include status Option status: BOOT, DEFAULT, CHANGED


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

Branch: refs/heads/master
Commit: d12bee05a8f6e974c70d5d2a94176b176d7dba5b
Parents: 784be4b
Author: Sudheesh Katkam <sk...@maprtech.com>
Authored: Mon Apr 13 22:29:01 2015 -0700
Committer: Jason Altekruse <al...@gmail.com>
Committed: Thu May 7 10:08:36 2015 -0700

----------------------------------------------------------------------
 .../server/options/FallbackOptionManager.java   |  4 ++
 .../exec/server/options/OptionManager.java      |  1 +
 .../server/options/SystemOptionManager.java     | 10 +++
 .../drill/exec/store/sys/SystemTable.java       | 73 ++++++++++++++++++--
 4 files changed, 82 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/d12bee05/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/FallbackOptionManager.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/FallbackOptionManager.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/FallbackOptionManager.java
index 0af816d..142fa0e 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/FallbackOptionManager.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/FallbackOptionManager.java
@@ -70,6 +70,10 @@ public abstract class FallbackOptionManager extends BaseOptionManager {
     }
   }
 
+  @Override
+  public OptionValue getDefault(final String name) {
+    return fallback.getDefault(name);
+  }
 
   @Override
   public OptionAdmin getAdmin() {

http://git-wip-us.apache.org/repos/asf/drill/blob/d12bee05/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/OptionManager.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/OptionManager.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/OptionManager.java
index 1bdc108..414713a 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/OptionManager.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/OptionManager.java
@@ -26,6 +26,7 @@ public interface OptionManager extends Iterable<OptionValue> {
   public OptionAdmin getAdmin();
   public OptionManager getSystemManager();
   public OptionList getOptionList();
+  public OptionValue getDefault(final String name);
 
   public boolean getOption(TypeValidators.BooleanValidator validator);
   public double getOption(TypeValidators.DoubleValidator validator);

http://git-wip-us.apache.org/repos/asf/drill/blob/d12bee05/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/SystemOptionManager.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/SystemOptionManager.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/SystemOptionManager.java
index 07ad328..ea4af43 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/SystemOptionManager.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/SystemOptionManager.java
@@ -163,6 +163,16 @@ public class SystemOptionManager extends BaseOptionManager {
   }
 
   @Override
+  public OptionValue getDefault(final String name) {
+    final OptionValidator validator = knownOptions.get(name);
+    if(validator == null) {
+      return null;
+    } else {
+      return validator.getDefault();
+    }
+  }
+
+  @Override
   public void setOption(final OptionValue value) {
     assert value.type == OptionType.SYSTEM;
     admin.validate(value);

http://git-wip-us.apache.org/repos/asf/drill/blob/d12bee05/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/SystemTable.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/SystemTable.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/SystemTable.java
index bd23d81..cd8af08 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/SystemTable.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/SystemTable.java
@@ -22,10 +22,9 @@ import org.apache.drill.exec.ops.FragmentContext;
 import org.apache.drill.exec.server.options.DrillConfigIterator;
 import org.apache.drill.exec.server.options.OptionManager;
 import org.apache.drill.exec.server.options.OptionValue;
-import org.apache.drill.exec.store.RecordDataType;
-import org.apache.drill.exec.store.pojo.PojoDataType;
-import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.rel.type.RelDataTypeFactory;
+import org.apache.drill.exec.server.options.OptionValue.Kind;
+import org.apache.drill.exec.server.options.OptionValue.OptionType;
+import org.apache.drill.exec.store.sys.SystemTable.OptionValueWrapper.Status;
 
 import java.util.Iterator;
 
@@ -39,12 +38,43 @@ import java.util.Iterator;
  */
 public enum SystemTable {
 
-  OPTION("options", false, OptionValue.class) {
+  OPTION("options", false, OptionValueWrapper.class) {
     @Override
     public Iterator<Object> getIterator(final FragmentContext context) {
       final DrillConfigIterator configOptions = new DrillConfigIterator(context.getConfig());
       final OptionManager fragmentOptions = context.getOptions();
-      return (Iterator<Object>) (Object) Iterators.concat(configOptions.iterator(), fragmentOptions.iterator());
+      final Iterator<OptionValue> mergedOptions = Iterators.concat(configOptions.iterator(), fragmentOptions.iterator());
+      final Iterator<OptionValueWrapper> optionValues = new Iterator<OptionValueWrapper>() {
+        @Override
+        public boolean hasNext() {
+          return mergedOptions.hasNext();
+        }
+
+        @Override
+        public OptionValueWrapper next() {
+          final OptionValue value = mergedOptions.next();
+          final Status status;
+          if (value.type == OptionType.BOOT) {
+            status = Status.BOOT;
+          } else {
+            final OptionValue def = fragmentOptions.getSystemManager().getDefault(value.name);
+            if (value.equals(def)) {
+              status = Status.DEFAULT;
+            } else {
+              status = Status.CHANGED;
+            }
+          }
+          return new OptionValueWrapper(value.name, value.kind, value.type, value.num_val, value.string_val,
+            value.bool_val, value.float_val, status);
+        }
+
+        @Override
+        public void remove() {
+        }
+      };
+      @SuppressWarnings("unchecked")
+      final Iterator<Object> iterator = (Iterator<Object>) (Object) optionValues;
+      return iterator;
     }
   },
 
@@ -104,4 +134,35 @@ public enum SystemTable {
     return pojoClass;
   }
 
+  /**
+   * Wrapper class for OptionValue to add Status
+   */
+  public static class OptionValueWrapper {
+
+    public static enum Status {
+      BOOT, DEFAULT, CHANGED
+    }
+
+    public final String name;
+    public final Kind kind;
+    public final OptionType type;
+    public final Status status;
+    public final Long num_val;
+    public final String string_val;
+    public final Boolean bool_val;
+    public final Double float_val;
+
+    public OptionValueWrapper(final String name, final Kind kind, final OptionType type, final Long num_val,
+                              final String string_val, final Boolean bool_val, final Double float_val,
+                              final Status status) {
+      this.name = name;
+      this.kind = kind;
+      this.type = type;
+      this.num_val = num_val;
+      this.string_val = string_val;
+      this.bool_val = bool_val;
+      this.float_val = float_val;
+      this.status = status;
+    }
+  }
 }