drill-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ve...@apache.org
Subject [1/5] drill git commit: DRILL-4728: Add support for new metadata fetch APIs
Date Sun, 07 Aug 2016 19:51:10 GMT
Repository: drill
Updated Branches:
  refs/heads/master 4bd67a660 -> ef6e522c9


http://git-wip-us.apache.org/repos/asf/drill/blob/ef6e522c/protocol/src/main/java/org/apache/drill/exec/proto/beans/TableMetadata.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/TableMetadata.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/TableMetadata.java
new file mode 100644
index 0000000..89dfb91
--- /dev/null
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/TableMetadata.java
@@ -0,0 +1,229 @@
+/**
+ * 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;
+
+public final class TableMetadata implements Externalizable, Message<TableMetadata>,
Schema<TableMetadata>
+{
+
+    public static Schema<TableMetadata> getSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    public static TableMetadata getDefaultInstance()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    static final TableMetadata DEFAULT_INSTANCE = new TableMetadata();
+
+    
+    private String catalogName;
+    private String schemaName;
+    private String tableName;
+    private String type;
+
+    public TableMetadata()
+    {
+        
+    }
+
+    // getters and setters
+
+    // catalogName
+
+    public String getCatalogName()
+    {
+        return catalogName;
+    }
+
+    public TableMetadata setCatalogName(String catalogName)
+    {
+        this.catalogName = catalogName;
+        return this;
+    }
+
+    // schemaName
+
+    public String getSchemaName()
+    {
+        return schemaName;
+    }
+
+    public TableMetadata setSchemaName(String schemaName)
+    {
+        this.schemaName = schemaName;
+        return this;
+    }
+
+    // tableName
+
+    public String getTableName()
+    {
+        return tableName;
+    }
+
+    public TableMetadata setTableName(String tableName)
+    {
+        this.tableName = tableName;
+        return this;
+    }
+
+    // type
+
+    public String getType()
+    {
+        return type;
+    }
+
+    public TableMetadata setType(String type)
+    {
+        this.type = type;
+        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<TableMetadata> cachedSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    // schema methods
+
+    public TableMetadata newMessage()
+    {
+        return new TableMetadata();
+    }
+
+    public Class<TableMetadata> typeClass()
+    {
+        return TableMetadata.class;
+    }
+
+    public String messageName()
+    {
+        return TableMetadata.class.getSimpleName();
+    }
+
+    public String messageFullName()
+    {
+        return TableMetadata.class.getName();
+    }
+
+    public boolean isInitialized(TableMetadata message)
+    {
+        return true;
+    }
+
+    public void mergeFrom(Input input, TableMetadata message) throws IOException
+    {
+        for(int number = input.readFieldNumber(this);; number = input.readFieldNumber(this))
+        {
+            switch(number)
+            {
+                case 0:
+                    return;
+                case 1:
+                    message.catalogName = input.readString();
+                    break;
+                case 2:
+                    message.schemaName = input.readString();
+                    break;
+                case 3:
+                    message.tableName = input.readString();
+                    break;
+                case 4:
+                    message.type = input.readString();
+                    break;
+                default:
+                    input.handleUnknownField(number, this);
+            }   
+        }
+    }
+
+
+    public void writeTo(Output output, TableMetadata message) throws IOException
+    {
+        if(message.catalogName != null)
+            output.writeString(1, message.catalogName, false);
+
+        if(message.schemaName != null)
+            output.writeString(2, message.schemaName, false);
+
+        if(message.tableName != null)
+            output.writeString(3, message.tableName, false);
+
+        if(message.type != null)
+            output.writeString(4, message.type, false);
+    }
+
+    public String getFieldName(int number)
+    {
+        switch(number)
+        {
+            case 1: return "catalogName";
+            case 2: return "schemaName";
+            case 3: return "tableName";
+            case 4: return "type";
+            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("catalogName", 1);
+        __fieldMap.put("schemaName", 2);
+        __fieldMap.put("tableName", 3);
+        __fieldMap.put("type", 4);
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/ef6e522c/protocol/src/main/protobuf/User.proto
----------------------------------------------------------------------
diff --git a/protocol/src/main/protobuf/User.proto b/protocol/src/main/protobuf/User.proto
index da44955..6af6fcf 100644
--- a/protocol/src/main/protobuf/User.proto
+++ b/protocol/src/main/protobuf/User.proto
@@ -23,11 +23,19 @@ enum RpcType {
   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
+  GET_CATALOGS = 14; // user is requesting metadata of catalog(s).
+  GET_SCHEMAS = 15; // user is requesting metadata of schema(s)
+  GET_TABLES = 16; // user is requesting metadata of table(s)
+  GET_COLUMNS = 17; // user is requesting metadata of column(s)
 
   // 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 
+  QUERY_PLAN_FRAGMENTS = 13; // return plan fragments
+  CATALOGS = 18; // return catalogs metadata in response to GET_CATALOGS
+  SCHEMAS = 19; // return schema metadata in response to GET_SCHEMAS
+  TABLES = 20; // return table metadata in response to GET_TABLES
+  COLUMNS = 21; // return column metadata in response to GET_COLUMNS
 
   REQ_META_FUNCTIONS = 8;
   RESP_FUNCTION_LIST = 9;
@@ -98,3 +106,142 @@ message BitToUserHandshake {
   optional string errorId = 4;
   optional string errorMessage = 5;
 }
+
+/*
+ * Enum indicating the request status.
+ */
+enum RequestStatus {
+  UNKNOWN = 0;
+  OK = 1;
+  FAILED = 2;
+}
+
+/*
+ * Simple filter which encapsulates the SQL LIKE ... ESCAPE function
+ */
+message LikeFilter {
+  optional string regex = 1; // pattern to match
+  optional string escape = 2; // escape character (if any) present in the pattern
+}
+
+/*
+ * Request message for getting the metadata for catalogs satisfying the given optional filter.
+ */
+message GetCatalogsReq {
+  optional LikeFilter catalog_name_filter = 1;
+}
+
+/*
+ * Message encapsulating metadata for a Catalog.
+ */
+message CatalogMetadata {
+  optional string catalog_name = 1;
+  optional string description = 2;
+  optional string connect = 3;
+}
+
+/*
+ * Response message for GetCatalogReq.
+ */
+message GetCatalogsResp {
+  optional RequestStatus status = 1;
+  repeated CatalogMetadata catalogs = 2;
+  optional exec.shared.DrillPBError error = 3;
+}
+
+/*
+ * Request message for getting the metadata for schemas satisfying the given optional filters.
+ */
+message GetSchemasReq {
+  optional LikeFilter catalog_name_filter = 1;
+  optional LikeFilter schame_name_filter = 2;
+}
+
+/*
+ * Message encapsulating metadata for a Schema.
+ */
+message SchemaMetadata {
+  optional string catalog_name = 1;
+  optional string schema_name = 2;
+  optional string owner = 3;
+  optional string type = 4; // Type. Ex. "file", "mongodb", "hive" etc.
+  optional string mutable = 5;
+}
+
+/*
+ * Response message for GetSchemasReq.
+ */
+message GetSchemasResp {
+  optional RequestStatus status = 1;
+  repeated SchemaMetadata schemas = 2;
+  optional exec.shared.DrillPBError error = 3;
+}
+
+/*
+ * Request message for getting the metadata for tables satisfying the given optional filters.
+ */
+message GetTablesReq {
+  optional LikeFilter catalog_name_filter = 1;
+  optional LikeFilter schame_name_filter = 2;
+  optional LikeFilter table_name_filter = 3;
+}
+
+/*
+ * Message encapsulating metadata for a Table.
+ */
+message TableMetadata {
+  optional string catalog_name = 1;
+  optional string schema_name = 2;
+  optional string table_name = 3;
+  optional string type = 4; // Type. Ex. "TABLE", "VIEW" etc.
+}
+
+/*
+ * Response message for GetTablesReq.
+ */
+message GetTablesResp {
+  optional RequestStatus status = 1;
+  repeated TableMetadata tables = 2;
+  optional exec.shared.DrillPBError error = 3;
+}
+
+/*
+ * Request message for getting the metadata for columns satisfying the given optional filters.
+ */
+message GetColumnsReq {
+  optional LikeFilter catalog_name_filter = 1;
+  optional LikeFilter schame_name_filter = 2;
+  optional LikeFilter table_name_filter = 3;
+  optional LikeFilter column_name_filter = 4;
+}
+
+/*
+ * Message encapsulating metadata for a Column.
+ */
+message ColumnMetadata {
+  optional string catalog_name = 1;
+  optional string schema_name = 2;
+  optional string table_name = 3;
+  optional string column_name = 4;
+  optional int32 ordinal_position = 5;
+  optional string default_value = 6;
+  optional bool is_nullable = 7;
+  optional string data_type = 8;
+  optional int32 char_max_length = 9;
+  optional int32 char_octet_length = 10;
+  optional int32 numeric_precision = 11;
+  optional int32 numeric_precision_radix = 12;
+  optional int32 numeric_scale = 13;
+  optional int32 date_time_precision = 14;
+  optional string interval_type = 15;
+  optional int32 interval_precision = 16;
+}
+
+/*
+ * Response message for GetColumnsReq.
+ */
+message GetColumnsResp {
+  optional RequestStatus status = 1;
+  repeated ColumnMetadata columns = 2;
+  optional exec.shared.DrillPBError error = 3;
+}
\ No newline at end of file


Mime
View raw message