drill-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From par...@apache.org
Subject [1/4] drill git commit: DRILL-4132 Ability to submit simple type of physical plan directly to EndPoint DrillBit for execution. There are multiple changes to achieve this: 1. During physical planning split single plan into multiple based on the number of
Date Wed, 04 May 2016 23:38:22 GMT
Repository: drill
Updated Branches:
  refs/heads/master f07f32856 -> 6bba69d48


http://git-wip-us.apache.org/repos/asf/drill/blob/6bba69d4/protocol/src/main/java/org/apache/drill/exec/proto/beans/FragmentHandle.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/FragmentHandle.java
b/protocol/src/main/java/org/apache/drill/exec/proto/beans/FragmentHandle.java
index 6d8a183..36cee7c 100644
--- a/protocol/src/main/java/org/apache/drill/exec/proto/beans/FragmentHandle.java
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/FragmentHandle.java
@@ -50,6 +50,7 @@ public final class FragmentHandle implements Externalizable, Message<FragmentHan
     private QueryId queryId;
     private int majorFragmentId;
     private int minorFragmentId;
+    private QueryId parentQueryId;
 
     public FragmentHandle()
     {
@@ -97,6 +98,19 @@ public final class FragmentHandle implements Externalizable, Message<FragmentHan
         return this;
     }
 
+    // parentQueryId
+
+    public QueryId getParentQueryId()
+    {
+        return parentQueryId;
+    }
+
+    public FragmentHandle setParentQueryId(QueryId parentQueryId)
+    {
+        this.parentQueryId = parentQueryId;
+        return this;
+    }
+
     // java serialization
 
     public void readExternal(ObjectInput in) throws IOException
@@ -161,6 +175,10 @@ public final class FragmentHandle implements Externalizable, Message<FragmentHan
                 case 3:
                     message.minorFragmentId = input.readInt32();
                     break;
+                case 4:
+                    message.parentQueryId = input.mergeObject(message.parentQueryId, QueryId.getSchema());
+                    break;
+
                 default:
                     input.handleUnknownField(number, this);
             }   
@@ -179,6 +197,10 @@ public final class FragmentHandle implements Externalizable, Message<FragmentHan
 
         if(message.minorFragmentId != 0)
             output.writeInt32(3, message.minorFragmentId, false);
+
+        if(message.parentQueryId != null)
+             output.writeObject(4, message.parentQueryId, QueryId.getSchema(), false);
+
     }
 
     public String getFieldName(int number)
@@ -188,6 +210,7 @@ public final class FragmentHandle implements Externalizable, Message<FragmentHan
             case 1: return "queryId";
             case 2: return "majorFragmentId";
             case 3: return "minorFragmentId";
+            case 4: return "parentQueryId";
             default: return null;
         }
     }
@@ -204,6 +227,7 @@ public final class FragmentHandle implements Externalizable, Message<FragmentHan
         __fieldMap.put("queryId", 1);
         __fieldMap.put("majorFragmentId", 2);
         __fieldMap.put("minorFragmentId", 3);
+        __fieldMap.put("parentQueryId", 4);
     }
     
 }

http://git-wip-us.apache.org/repos/asf/drill/blob/6bba69d4/protocol/src/main/java/org/apache/drill/exec/proto/beans/GetQueryPlanFragments.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/GetQueryPlanFragments.java
b/protocol/src/main/java/org/apache/drill/exec/proto/beans/GetQueryPlanFragments.java
new file mode 100644
index 0000000..4c0109c
--- /dev/null
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/GetQueryPlanFragments.java
@@ -0,0 +1,218 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+// Generated by http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import com.dyuproject.protostuff.GraphIOUtil;
+import com.dyuproject.protostuff.Input;
+import com.dyuproject.protostuff.Message;
+import com.dyuproject.protostuff.Output;
+import com.dyuproject.protostuff.Schema;
+import com.dyuproject.protostuff.UninitializedMessageException;
+
+public final class GetQueryPlanFragments implements Externalizable, Message<GetQueryPlanFragments>,
Schema<GetQueryPlanFragments>
+{
+
+    public static Schema<GetQueryPlanFragments> getSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    public static GetQueryPlanFragments getDefaultInstance()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    static final GetQueryPlanFragments DEFAULT_INSTANCE = new GetQueryPlanFragments();
+
+    static final Boolean DEFAULT_SPLIT_PLAN = new Boolean(false);
+    
+    private String query;
+    private QueryType type;
+    private Boolean splitPlan = DEFAULT_SPLIT_PLAN;
+
+    public GetQueryPlanFragments()
+    {
+        
+    }
+
+    public GetQueryPlanFragments(
+        String query
+    )
+    {
+        this.query = query;
+    }
+
+    // getters and setters
+
+    // query
+
+    public String getQuery()
+    {
+        return query;
+    }
+
+    public GetQueryPlanFragments setQuery(String query)
+    {
+        this.query = query;
+        return this;
+    }
+
+    // type
+
+    public QueryType getType()
+    {
+        return type == null ? QueryType.SQL : type;
+    }
+
+    public GetQueryPlanFragments setType(QueryType type)
+    {
+        this.type = type;
+        return this;
+    }
+
+    // splitPlan
+
+    public Boolean getSplitPlan()
+    {
+        return splitPlan;
+    }
+
+    public GetQueryPlanFragments setSplitPlan(Boolean splitPlan)
+    {
+        this.splitPlan = splitPlan;
+        return this;
+    }
+
+    // java serialization
+
+    public void readExternal(ObjectInput in) throws IOException
+    {
+        GraphIOUtil.mergeDelimitedFrom(in, this, this);
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException
+    {
+        GraphIOUtil.writeDelimitedTo(out, this, this);
+    }
+
+    // message method
+
+    public Schema<GetQueryPlanFragments> cachedSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    // schema methods
+
+    public GetQueryPlanFragments newMessage()
+    {
+        return new GetQueryPlanFragments();
+    }
+
+    public Class<GetQueryPlanFragments> typeClass()
+    {
+        return GetQueryPlanFragments.class;
+    }
+
+    public String messageName()
+    {
+        return GetQueryPlanFragments.class.getSimpleName();
+    }
+
+    public String messageFullName()
+    {
+        return GetQueryPlanFragments.class.getName();
+    }
+
+    public boolean isInitialized(GetQueryPlanFragments message)
+    {
+        return 
+            message.query != null;
+    }
+
+    public void mergeFrom(Input input, GetQueryPlanFragments message) throws IOException
+    {
+        for(int number = input.readFieldNumber(this);; number = input.readFieldNumber(this))
+        {
+            switch(number)
+            {
+                case 0:
+                    return;
+                case 1:
+                    message.query = input.readString();
+                    break;
+                case 2:
+                    message.type = QueryType.valueOf(input.readEnum());
+                    break;
+                case 3:
+                    message.splitPlan = input.readBool();
+                    break;
+                default:
+                    input.handleUnknownField(number, this);
+            }   
+        }
+    }
+
+
+    public void writeTo(Output output, GetQueryPlanFragments message) throws IOException
+    {
+        if(message.query == null)
+            throw new UninitializedMessageException(message);
+        output.writeString(1, message.query, false);
+
+        if(message.type != null)
+             output.writeEnum(2, message.type.number, false);
+
+        if(message.splitPlan != null && message.splitPlan != DEFAULT_SPLIT_PLAN)
+            output.writeBool(3, message.splitPlan, false);
+    }
+
+    public String getFieldName(int number)
+    {
+        switch(number)
+        {
+            case 1: return "query";
+            case 2: return "type";
+            case 3: return "splitPlan";
+            default: return null;
+        }
+    }
+
+    public int getFieldNumber(String name)
+    {
+        final Integer number = __fieldMap.get(name);
+        return number == null ? 0 : number.intValue();
+    }
+
+    private static final java.util.HashMap<String,Integer> __fieldMap = new java.util.HashMap<String,Integer>();
+    static
+    {
+        __fieldMap.put("query", 1);
+        __fieldMap.put("type", 2);
+        __fieldMap.put("splitPlan", 3);
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/6bba69d4/protocol/src/main/java/org/apache/drill/exec/proto/beans/QueryPlanFragments.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/QueryPlanFragments.java
b/protocol/src/main/java/org/apache/drill/exec/proto/beans/QueryPlanFragments.java
new file mode 100644
index 0000000..c64baf8
--- /dev/null
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/QueryPlanFragments.java
@@ -0,0 +1,255 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+// Generated by http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.dyuproject.protostuff.GraphIOUtil;
+import com.dyuproject.protostuff.Input;
+import com.dyuproject.protostuff.Message;
+import com.dyuproject.protostuff.Output;
+import com.dyuproject.protostuff.Schema;
+import com.dyuproject.protostuff.UninitializedMessageException;
+
+public final class QueryPlanFragments implements Externalizable, Message<QueryPlanFragments>,
Schema<QueryPlanFragments>
+{
+
+    public static Schema<QueryPlanFragments> getSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    public static QueryPlanFragments getDefaultInstance()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    static final QueryPlanFragments DEFAULT_INSTANCE = new QueryPlanFragments();
+
+    
+    private QueryResult.QueryState status;
+    private QueryId queryId;
+    private List<PlanFragment> fragments;
+    private DrillPBError error;
+
+    public QueryPlanFragments()
+    {
+        
+    }
+
+    public QueryPlanFragments(
+        QueryResult.QueryState status
+    )
+    {
+        this.status = status;
+    }
+
+    // getters and setters
+
+    // status
+
+    public QueryResult.QueryState getStatus()
+    {
+        return status;
+    }
+
+    public QueryPlanFragments setStatus(QueryResult.QueryState status)
+    {
+        this.status = status;
+        return this;
+    }
+
+    // queryId
+
+    public QueryId getQueryId()
+    {
+        return queryId;
+    }
+
+    public QueryPlanFragments setQueryId(QueryId queryId)
+    {
+        this.queryId = queryId;
+        return this;
+    }
+
+    // fragments
+
+    public List<PlanFragment> getFragmentsList()
+    {
+        return fragments;
+    }
+
+    public QueryPlanFragments setFragmentsList(List<PlanFragment> fragments)
+    {
+        this.fragments = fragments;
+        return this;
+    }
+
+    // error
+
+    public DrillPBError getError()
+    {
+        return error;
+    }
+
+    public QueryPlanFragments setError(DrillPBError error)
+    {
+        this.error = error;
+        return this;
+    }
+
+    // java serialization
+
+    public void readExternal(ObjectInput in) throws IOException
+    {
+        GraphIOUtil.mergeDelimitedFrom(in, this, this);
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException
+    {
+        GraphIOUtil.writeDelimitedTo(out, this, this);
+    }
+
+    // message method
+
+    public Schema<QueryPlanFragments> cachedSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    // schema methods
+
+    public QueryPlanFragments newMessage()
+    {
+        return new QueryPlanFragments();
+    }
+
+    public Class<QueryPlanFragments> typeClass()
+    {
+        return QueryPlanFragments.class;
+    }
+
+    public String messageName()
+    {
+        return QueryPlanFragments.class.getSimpleName();
+    }
+
+    public String messageFullName()
+    {
+        return QueryPlanFragments.class.getName();
+    }
+
+    public boolean isInitialized(QueryPlanFragments message)
+    {
+        return 
+            message.status != null;
+    }
+
+    public void mergeFrom(Input input, QueryPlanFragments message) throws IOException
+    {
+        for(int number = input.readFieldNumber(this);; number = input.readFieldNumber(this))
+        {
+            switch(number)
+            {
+                case 0:
+                    return;
+                case 1:
+                    message.status = QueryResult.QueryState.valueOf(input.readEnum());
+                    break;
+                case 2:
+                    message.queryId = input.mergeObject(message.queryId, QueryId.getSchema());
+                    break;
+
+                case 3:
+                    if(message.fragments == null)
+                        message.fragments = new ArrayList<PlanFragment>();
+                    message.fragments.add(input.mergeObject(null, PlanFragment.getSchema()));
+                    break;
+
+                case 4:
+                    message.error = input.mergeObject(message.error, DrillPBError.getSchema());
+                    break;
+
+                default:
+                    input.handleUnknownField(number, this);
+            }   
+        }
+    }
+
+
+    public void writeTo(Output output, QueryPlanFragments message) throws IOException
+    {
+        if(message.status == null)
+            throw new UninitializedMessageException(message);
+        output.writeEnum(1, message.status.number, false);
+
+        if(message.queryId != null)
+             output.writeObject(2, message.queryId, QueryId.getSchema(), false);
+
+
+        if(message.fragments != null)
+        {
+            for(PlanFragment fragments : message.fragments)
+            {
+                if(fragments != null)
+                    output.writeObject(3, fragments, PlanFragment.getSchema(), true);
+            }
+        }
+
+
+        if(message.error != null)
+             output.writeObject(4, message.error, DrillPBError.getSchema(), false);
+
+    }
+
+    public String getFieldName(int number)
+    {
+        switch(number)
+        {
+            case 1: return "status";
+            case 2: return "queryId";
+            case 3: return "fragments";
+            case 4: return "error";
+            default: return null;
+        }
+    }
+
+    public int getFieldNumber(String name)
+    {
+        final Integer number = __fieldMap.get(name);
+        return number == null ? 0 : number.intValue();
+    }
+
+    private static final java.util.HashMap<String,Integer> __fieldMap = new java.util.HashMap<String,Integer>();
+    static
+    {
+        __fieldMap.put("status", 1);
+        __fieldMap.put("queryId", 2);
+        __fieldMap.put("fragments", 3);
+        __fieldMap.put("error", 4);
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/6bba69d4/protocol/src/main/java/org/apache/drill/exec/proto/beans/QueryType.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/QueryType.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/QueryType.java
index 6c8f3c5..71f98f3 100644
--- a/protocol/src/main/java/org/apache/drill/exec/proto/beans/QueryType.java
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/QueryType.java
@@ -24,7 +24,8 @@ public enum QueryType implements com.dyuproject.protostuff.EnumLite<QueryType>
 {
     SQL(1),
     LOGICAL(2),
-    PHYSICAL(3);
+    PHYSICAL(3),
+    EXECUTION(4);
     
     public final int number;
     
@@ -45,6 +46,7 @@ public enum QueryType implements com.dyuproject.protostuff.EnumLite<QueryType>
             case 1: return SQL;
             case 2: return LOGICAL;
             case 3: return PHYSICAL;
+            case 4: return EXECUTION;
             default: return null;
         }
     }

http://git-wip-us.apache.org/repos/asf/drill/blob/6bba69d4/protocol/src/main/java/org/apache/drill/exec/proto/beans/RpcType.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/RpcType.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/RpcType.java
index 6687a86..5800183 100644
--- a/protocol/src/main/java/org/apache/drill/exec/proto/beans/RpcType.java
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/RpcType.java
@@ -29,8 +29,10 @@ public enum RpcType implements com.dyuproject.protostuff.EnumLite<RpcType>
     CANCEL_QUERY(4),
     REQUEST_RESULTS(5),
     RESUME_PAUSED_QUERY(11),
+    GET_QUERY_PLAN_FRAGMENTS(12),
     QUERY_DATA(6),
     QUERY_HANDLE(7),
+    QUERY_PLAN_FRAGMENTS(13),
     REQ_META_FUNCTIONS(8),
     RESP_FUNCTION_LIST(9),
     QUERY_RESULT(10);
@@ -63,6 +65,8 @@ public enum RpcType implements com.dyuproject.protostuff.EnumLite<RpcType>
             case 9: return RESP_FUNCTION_LIST;
             case 10: return QUERY_RESULT;
             case 11: return RESUME_PAUSED_QUERY;
+            case 12: return GET_QUERY_PLAN_FRAGMENTS;
+            case 13: return QUERY_PLAN_FRAGMENTS;
             default: return null;
         }
     }

http://git-wip-us.apache.org/repos/asf/drill/blob/6bba69d4/protocol/src/main/java/org/apache/drill/exec/proto/beans/RunQuery.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/RunQuery.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/RunQuery.java
index 2c3f0f5..e6035d1 100644
--- a/protocol/src/main/java/org/apache/drill/exec/proto/beans/RunQuery.java
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/RunQuery.java
@@ -24,6 +24,8 @@ import java.io.Externalizable;
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
+import java.util.ArrayList;
+import java.util.List;
 
 import com.dyuproject.protostuff.GraphIOUtil;
 import com.dyuproject.protostuff.Input;
@@ -50,6 +52,7 @@ public final class RunQuery implements Externalizable, Message<RunQuery>,
Schema
     private QueryResultsMode resultsMode;
     private QueryType type;
     private String plan;
+    private List<PlanFragment> fragments;
 
     public RunQuery()
     {
@@ -97,6 +100,19 @@ public final class RunQuery implements Externalizable, Message<RunQuery>,
Schema
         return this;
     }
 
+    // fragments
+
+    public List<PlanFragment> getFragmentsList()
+    {
+        return fragments;
+    }
+
+    public RunQuery setFragmentsList(List<PlanFragment> fragments)
+    {
+        this.fragments = fragments;
+        return this;
+    }
+
     // java serialization
 
     public void readExternal(ObjectInput in) throws IOException
@@ -160,6 +176,12 @@ public final class RunQuery implements Externalizable, Message<RunQuery>,
Schema
                 case 3:
                     message.plan = input.readString();
                     break;
+                case 4:
+                    if(message.fragments == null)
+                        message.fragments = new ArrayList<PlanFragment>();
+                    message.fragments.add(input.mergeObject(null, PlanFragment.getSchema()));
+                    break;
+
                 default:
                     input.handleUnknownField(number, this);
             }   
@@ -177,6 +199,16 @@ public final class RunQuery implements Externalizable, Message<RunQuery>,
Schema
 
         if(message.plan != null)
             output.writeString(3, message.plan, false);
+
+        if(message.fragments != null)
+        {
+            for(PlanFragment fragments : message.fragments)
+            {
+                if(fragments != null)
+                    output.writeObject(4, fragments, PlanFragment.getSchema(), true);
+            }
+        }
+
     }
 
     public String getFieldName(int number)
@@ -186,6 +218,7 @@ public final class RunQuery implements Externalizable, Message<RunQuery>,
Schema
             case 1: return "resultsMode";
             case 2: return "type";
             case 3: return "plan";
+            case 4: return "fragments";
             default: return null;
         }
     }
@@ -202,6 +235,7 @@ public final class RunQuery implements Externalizable, Message<RunQuery>,
Schema
         __fieldMap.put("resultsMode", 1);
         __fieldMap.put("type", 2);
         __fieldMap.put("plan", 3);
+        __fieldMap.put("fragments", 4);
     }
     
 }

http://git-wip-us.apache.org/repos/asf/drill/blob/6bba69d4/protocol/src/main/protobuf/ExecutionProtos.proto
----------------------------------------------------------------------
diff --git a/protocol/src/main/protobuf/ExecutionProtos.proto b/protocol/src/main/protobuf/ExecutionProtos.proto
index 8ad8c47..36cd12b 100644
--- a/protocol/src/main/protobuf/ExecutionProtos.proto
+++ b/protocol/src/main/protobuf/ExecutionProtos.proto
@@ -11,5 +11,6 @@ message FragmentHandle {
 	optional exec.shared.QueryId query_id = 1;
 	optional int32 major_fragment_id = 2;
 	optional int32 minor_fragment_id = 3;
+	optional exec.shared.QueryId parent_query_id = 4;
 }
 

http://git-wip-us.apache.org/repos/asf/drill/blob/6bba69d4/protocol/src/main/protobuf/User.proto
----------------------------------------------------------------------
diff --git a/protocol/src/main/protobuf/User.proto b/protocol/src/main/protobuf/User.proto
index ceed3d8..da44955 100644
--- a/protocol/src/main/protobuf/User.proto
+++ b/protocol/src/main/protobuf/User.proto
@@ -6,6 +6,10 @@ option optimize_for = SPEED;
 
 import "SchemaDef.proto";
 import "UserBitShared.proto";
+import "BitData.proto";
+import "BitControl.proto";
+import "ExecutionProtos.proto";
+
 
 ////// UserToBit RPC ///////
 enum RpcType {
@@ -18,10 +22,12 @@ enum RpcType {
   CANCEL_QUERY = 4; // user is sending a query cancellation request to the drillbit
   REQUEST_RESULTS = 5;
   RESUME_PAUSED_QUERY = 11; // user is sending a query resume request to the drillbit
+  GET_QUERY_PLAN_FRAGMENTS = 12; // to get plan fragments from query
 
   // bit to user
   QUERY_DATA = 6; // drillbit is sending a query result data batch to the user
   QUERY_HANDLE = 7;
+  QUERY_PLAN_FRAGMENTS = 13; // return plan fragments 
 
   REQ_META_FUNCTIONS = 8;
   RESP_FUNCTION_LIST = 9;
@@ -57,6 +63,20 @@ message RunQuery {
   optional QueryResultsMode results_mode = 1;
   optional exec.shared.QueryType type = 2;
   optional string plan = 3;
+  repeated exec.bit.control.PlanFragment fragments = 4;
+}
+
+message GetQueryPlanFragments {
+  required string query = 1;
+  optional exec.shared.QueryType type = 2;
+  optional bool split_plan = 3 [default = false];
+}
+
+message QueryPlanFragments {
+  required exec.shared.QueryResult.QueryState status = 1;
+  optional exec.shared.QueryId query_id = 2;
+  repeated exec.bit.control.PlanFragment fragments = 3;
+  optional exec.shared.DrillPBError error = 4;
 }
 
 enum QueryResultsMode {

http://git-wip-us.apache.org/repos/asf/drill/blob/6bba69d4/protocol/src/main/protobuf/UserBitShared.proto
----------------------------------------------------------------------
diff --git a/protocol/src/main/protobuf/UserBitShared.proto b/protocol/src/main/protobuf/UserBitShared.proto
index c44d2b2..2293dc0 100644
--- a/protocol/src/main/protobuf/UserBitShared.proto
+++ b/protocol/src/main/protobuf/UserBitShared.proto
@@ -18,6 +18,7 @@ enum QueryType {
   SQL = 1;
   LOGICAL = 2;
   PHYSICAL = 3;
+  EXECUTION = 4;
 }
 
 message UserCredentials {


Mime
View raw message