You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ra...@apache.org on 2015/04/27 10:33:48 UTC

[4/7] phoenix git commit: PHOENIX-538 Support UDFs(Rajeshbabu Chintaguntla)

http://git-wip-us.apache.org/repos/asf/phoenix/blob/66bd3e35/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/PFunctionProtos.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/PFunctionProtos.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/PFunctionProtos.java
new file mode 100644
index 0000000..12927aa
--- /dev/null
+++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/PFunctionProtos.java
@@ -0,0 +1,2942 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: PFunction.proto
+
+package org.apache.phoenix.coprocessor.generated;
+
+public final class PFunctionProtos {
+  private PFunctionProtos() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+  }
+  public interface PFunctionArgOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string argumentType = 1;
+    /**
+     * <code>required string argumentType = 1;</code>
+     */
+    boolean hasArgumentType();
+    /**
+     * <code>required string argumentType = 1;</code>
+     */
+    java.lang.String getArgumentType();
+    /**
+     * <code>required string argumentType = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getArgumentTypeBytes();
+
+    // optional bool isArrayType = 2;
+    /**
+     * <code>optional bool isArrayType = 2;</code>
+     */
+    boolean hasIsArrayType();
+    /**
+     * <code>optional bool isArrayType = 2;</code>
+     */
+    boolean getIsArrayType();
+
+    // optional bool isConstant = 3;
+    /**
+     * <code>optional bool isConstant = 3;</code>
+     */
+    boolean hasIsConstant();
+    /**
+     * <code>optional bool isConstant = 3;</code>
+     */
+    boolean getIsConstant();
+
+    // optional string defaultValue = 4;
+    /**
+     * <code>optional string defaultValue = 4;</code>
+     */
+    boolean hasDefaultValue();
+    /**
+     * <code>optional string defaultValue = 4;</code>
+     */
+    java.lang.String getDefaultValue();
+    /**
+     * <code>optional string defaultValue = 4;</code>
+     */
+    com.google.protobuf.ByteString
+        getDefaultValueBytes();
+
+    // optional string minValue = 5;
+    /**
+     * <code>optional string minValue = 5;</code>
+     */
+    boolean hasMinValue();
+    /**
+     * <code>optional string minValue = 5;</code>
+     */
+    java.lang.String getMinValue();
+    /**
+     * <code>optional string minValue = 5;</code>
+     */
+    com.google.protobuf.ByteString
+        getMinValueBytes();
+
+    // optional string maxValue = 6;
+    /**
+     * <code>optional string maxValue = 6;</code>
+     */
+    boolean hasMaxValue();
+    /**
+     * <code>optional string maxValue = 6;</code>
+     */
+    java.lang.String getMaxValue();
+    /**
+     * <code>optional string maxValue = 6;</code>
+     */
+    com.google.protobuf.ByteString
+        getMaxValueBytes();
+  }
+  /**
+   * Protobuf type {@code PFunctionArg}
+   */
+  public static final class PFunctionArg extends
+      com.google.protobuf.GeneratedMessage
+      implements PFunctionArgOrBuilder {
+    // Use PFunctionArg.newBuilder() to construct.
+    private PFunctionArg(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private PFunctionArg(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final PFunctionArg defaultInstance;
+    public static PFunctionArg getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public PFunctionArg getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private PFunctionArg(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              argumentType_ = input.readBytes();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              isArrayType_ = input.readBool();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              isConstant_ = input.readBool();
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000008;
+              defaultValue_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              bitField0_ |= 0x00000010;
+              minValue_ = input.readBytes();
+              break;
+            }
+            case 50: {
+              bitField0_ |= 0x00000020;
+              maxValue_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.phoenix.coprocessor.generated.PFunctionProtos.internal_static_PFunctionArg_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.phoenix.coprocessor.generated.PFunctionProtos.internal_static_PFunctionArg_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.class, org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<PFunctionArg> PARSER =
+        new com.google.protobuf.AbstractParser<PFunctionArg>() {
+      public PFunctionArg parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new PFunctionArg(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<PFunctionArg> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string argumentType = 1;
+    public static final int ARGUMENTTYPE_FIELD_NUMBER = 1;
+    private java.lang.Object argumentType_;
+    /**
+     * <code>required string argumentType = 1;</code>
+     */
+    public boolean hasArgumentType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string argumentType = 1;</code>
+     */
+    public java.lang.String getArgumentType() {
+      java.lang.Object ref = argumentType_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          argumentType_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string argumentType = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getArgumentTypeBytes() {
+      java.lang.Object ref = argumentType_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        argumentType_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional bool isArrayType = 2;
+    public static final int ISARRAYTYPE_FIELD_NUMBER = 2;
+    private boolean isArrayType_;
+    /**
+     * <code>optional bool isArrayType = 2;</code>
+     */
+    public boolean hasIsArrayType() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional bool isArrayType = 2;</code>
+     */
+    public boolean getIsArrayType() {
+      return isArrayType_;
+    }
+
+    // optional bool isConstant = 3;
+    public static final int ISCONSTANT_FIELD_NUMBER = 3;
+    private boolean isConstant_;
+    /**
+     * <code>optional bool isConstant = 3;</code>
+     */
+    public boolean hasIsConstant() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional bool isConstant = 3;</code>
+     */
+    public boolean getIsConstant() {
+      return isConstant_;
+    }
+
+    // optional string defaultValue = 4;
+    public static final int DEFAULTVALUE_FIELD_NUMBER = 4;
+    private java.lang.Object defaultValue_;
+    /**
+     * <code>optional string defaultValue = 4;</code>
+     */
+    public boolean hasDefaultValue() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional string defaultValue = 4;</code>
+     */
+    public java.lang.String getDefaultValue() {
+      java.lang.Object ref = defaultValue_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          defaultValue_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string defaultValue = 4;</code>
+     */
+    public com.google.protobuf.ByteString
+        getDefaultValueBytes() {
+      java.lang.Object ref = defaultValue_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        defaultValue_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string minValue = 5;
+    public static final int MINVALUE_FIELD_NUMBER = 5;
+    private java.lang.Object minValue_;
+    /**
+     * <code>optional string minValue = 5;</code>
+     */
+    public boolean hasMinValue() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional string minValue = 5;</code>
+     */
+    public java.lang.String getMinValue() {
+      java.lang.Object ref = minValue_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          minValue_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string minValue = 5;</code>
+     */
+    public com.google.protobuf.ByteString
+        getMinValueBytes() {
+      java.lang.Object ref = minValue_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        minValue_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string maxValue = 6;
+    public static final int MAXVALUE_FIELD_NUMBER = 6;
+    private java.lang.Object maxValue_;
+    /**
+     * <code>optional string maxValue = 6;</code>
+     */
+    public boolean hasMaxValue() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string maxValue = 6;</code>
+     */
+    public java.lang.String getMaxValue() {
+      java.lang.Object ref = maxValue_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          maxValue_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string maxValue = 6;</code>
+     */
+    public com.google.protobuf.ByteString
+        getMaxValueBytes() {
+      java.lang.Object ref = maxValue_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        maxValue_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      argumentType_ = "";
+      isArrayType_ = false;
+      isConstant_ = false;
+      defaultValue_ = "";
+      minValue_ = "";
+      maxValue_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasArgumentType()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getArgumentTypeBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBool(2, isArrayType_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBool(3, isConstant_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(4, getDefaultValueBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBytes(5, getMinValueBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(6, getMaxValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getArgumentTypeBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(2, isArrayType_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(3, isConstant_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getDefaultValueBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(5, getMinValueBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getMaxValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg)) {
+        return super.equals(obj);
+      }
+      org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg other = (org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg) obj;
+
+      boolean result = true;
+      result = result && (hasArgumentType() == other.hasArgumentType());
+      if (hasArgumentType()) {
+        result = result && getArgumentType()
+            .equals(other.getArgumentType());
+      }
+      result = result && (hasIsArrayType() == other.hasIsArrayType());
+      if (hasIsArrayType()) {
+        result = result && (getIsArrayType()
+            == other.getIsArrayType());
+      }
+      result = result && (hasIsConstant() == other.hasIsConstant());
+      if (hasIsConstant()) {
+        result = result && (getIsConstant()
+            == other.getIsConstant());
+      }
+      result = result && (hasDefaultValue() == other.hasDefaultValue());
+      if (hasDefaultValue()) {
+        result = result && getDefaultValue()
+            .equals(other.getDefaultValue());
+      }
+      result = result && (hasMinValue() == other.hasMinValue());
+      if (hasMinValue()) {
+        result = result && getMinValue()
+            .equals(other.getMinValue());
+      }
+      result = result && (hasMaxValue() == other.hasMaxValue());
+      if (hasMaxValue()) {
+        result = result && getMaxValue()
+            .equals(other.getMaxValue());
+      }
+      result = result &&
+          getUnknownFields().equals(other.getUnknownFields());
+      return result;
+    }
+
+    private int memoizedHashCode = 0;
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptorForType().hashCode();
+      if (hasArgumentType()) {
+        hash = (37 * hash) + ARGUMENTTYPE_FIELD_NUMBER;
+        hash = (53 * hash) + getArgumentType().hashCode();
+      }
+      if (hasIsArrayType()) {
+        hash = (37 * hash) + ISARRAYTYPE_FIELD_NUMBER;
+        hash = (53 * hash) + hashBoolean(getIsArrayType());
+      }
+      if (hasIsConstant()) {
+        hash = (37 * hash) + ISCONSTANT_FIELD_NUMBER;
+        hash = (53 * hash) + hashBoolean(getIsConstant());
+      }
+      if (hasDefaultValue()) {
+        hash = (37 * hash) + DEFAULTVALUE_FIELD_NUMBER;
+        hash = (53 * hash) + getDefaultValue().hashCode();
+      }
+      if (hasMinValue()) {
+        hash = (37 * hash) + MINVALUE_FIELD_NUMBER;
+        hash = (53 * hash) + getMinValue().hashCode();
+      }
+      if (hasMaxValue()) {
+        hash = (37 * hash) + MAXVALUE_FIELD_NUMBER;
+        hash = (53 * hash) + getMaxValue().hashCode();
+      }
+      hash = (29 * hash) + getUnknownFields().hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code PFunctionArg}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArgOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.phoenix.coprocessor.generated.PFunctionProtos.internal_static_PFunctionArg_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.phoenix.coprocessor.generated.PFunctionProtos.internal_static_PFunctionArg_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.class, org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.Builder.class);
+      }
+
+      // Construct using org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        argumentType_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        isArrayType_ = false;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        isConstant_ = false;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        defaultValue_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        minValue_ = "";
+        bitField0_ = (bitField0_ & ~0x00000010);
+        maxValue_ = "";
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.phoenix.coprocessor.generated.PFunctionProtos.internal_static_PFunctionArg_descriptor;
+      }
+
+      public org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg getDefaultInstanceForType() {
+        return org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.getDefaultInstance();
+      }
+
+      public org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg build() {
+        org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg buildPartial() {
+        org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg result = new org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.argumentType_ = argumentType_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.isArrayType_ = isArrayType_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.isConstant_ = isConstant_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.defaultValue_ = defaultValue_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.minValue_ = minValue_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.maxValue_ = maxValue_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg) {
+          return mergeFrom((org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg other) {
+        if (other == org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.getDefaultInstance()) return this;
+        if (other.hasArgumentType()) {
+          bitField0_ |= 0x00000001;
+          argumentType_ = other.argumentType_;
+          onChanged();
+        }
+        if (other.hasIsArrayType()) {
+          setIsArrayType(other.getIsArrayType());
+        }
+        if (other.hasIsConstant()) {
+          setIsConstant(other.getIsConstant());
+        }
+        if (other.hasDefaultValue()) {
+          bitField0_ |= 0x00000008;
+          defaultValue_ = other.defaultValue_;
+          onChanged();
+        }
+        if (other.hasMinValue()) {
+          bitField0_ |= 0x00000010;
+          minValue_ = other.minValue_;
+          onChanged();
+        }
+        if (other.hasMaxValue()) {
+          bitField0_ |= 0x00000020;
+          maxValue_ = other.maxValue_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasArgumentType()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string argumentType = 1;
+      private java.lang.Object argumentType_ = "";
+      /**
+       * <code>required string argumentType = 1;</code>
+       */
+      public boolean hasArgumentType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string argumentType = 1;</code>
+       */
+      public java.lang.String getArgumentType() {
+        java.lang.Object ref = argumentType_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          argumentType_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string argumentType = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getArgumentTypeBytes() {
+        java.lang.Object ref = argumentType_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          argumentType_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string argumentType = 1;</code>
+       */
+      public Builder setArgumentType(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        argumentType_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string argumentType = 1;</code>
+       */
+      public Builder clearArgumentType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        argumentType_ = getDefaultInstance().getArgumentType();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string argumentType = 1;</code>
+       */
+      public Builder setArgumentTypeBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        argumentType_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional bool isArrayType = 2;
+      private boolean isArrayType_ ;
+      /**
+       * <code>optional bool isArrayType = 2;</code>
+       */
+      public boolean hasIsArrayType() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional bool isArrayType = 2;</code>
+       */
+      public boolean getIsArrayType() {
+        return isArrayType_;
+      }
+      /**
+       * <code>optional bool isArrayType = 2;</code>
+       */
+      public Builder setIsArrayType(boolean value) {
+        bitField0_ |= 0x00000002;
+        isArrayType_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool isArrayType = 2;</code>
+       */
+      public Builder clearIsArrayType() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        isArrayType_ = false;
+        onChanged();
+        return this;
+      }
+
+      // optional bool isConstant = 3;
+      private boolean isConstant_ ;
+      /**
+       * <code>optional bool isConstant = 3;</code>
+       */
+      public boolean hasIsConstant() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional bool isConstant = 3;</code>
+       */
+      public boolean getIsConstant() {
+        return isConstant_;
+      }
+      /**
+       * <code>optional bool isConstant = 3;</code>
+       */
+      public Builder setIsConstant(boolean value) {
+        bitField0_ |= 0x00000004;
+        isConstant_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool isConstant = 3;</code>
+       */
+      public Builder clearIsConstant() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        isConstant_ = false;
+        onChanged();
+        return this;
+      }
+
+      // optional string defaultValue = 4;
+      private java.lang.Object defaultValue_ = "";
+      /**
+       * <code>optional string defaultValue = 4;</code>
+       */
+      public boolean hasDefaultValue() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional string defaultValue = 4;</code>
+       */
+      public java.lang.String getDefaultValue() {
+        java.lang.Object ref = defaultValue_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          defaultValue_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string defaultValue = 4;</code>
+       */
+      public com.google.protobuf.ByteString
+          getDefaultValueBytes() {
+        java.lang.Object ref = defaultValue_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          defaultValue_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string defaultValue = 4;</code>
+       */
+      public Builder setDefaultValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        defaultValue_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string defaultValue = 4;</code>
+       */
+      public Builder clearDefaultValue() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        defaultValue_ = getDefaultInstance().getDefaultValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string defaultValue = 4;</code>
+       */
+      public Builder setDefaultValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        defaultValue_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string minValue = 5;
+      private java.lang.Object minValue_ = "";
+      /**
+       * <code>optional string minValue = 5;</code>
+       */
+      public boolean hasMinValue() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional string minValue = 5;</code>
+       */
+      public java.lang.String getMinValue() {
+        java.lang.Object ref = minValue_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          minValue_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string minValue = 5;</code>
+       */
+      public com.google.protobuf.ByteString
+          getMinValueBytes() {
+        java.lang.Object ref = minValue_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          minValue_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string minValue = 5;</code>
+       */
+      public Builder setMinValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        minValue_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string minValue = 5;</code>
+       */
+      public Builder clearMinValue() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        minValue_ = getDefaultInstance().getMinValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string minValue = 5;</code>
+       */
+      public Builder setMinValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        minValue_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string maxValue = 6;
+      private java.lang.Object maxValue_ = "";
+      /**
+       * <code>optional string maxValue = 6;</code>
+       */
+      public boolean hasMaxValue() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional string maxValue = 6;</code>
+       */
+      public java.lang.String getMaxValue() {
+        java.lang.Object ref = maxValue_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          maxValue_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string maxValue = 6;</code>
+       */
+      public com.google.protobuf.ByteString
+          getMaxValueBytes() {
+        java.lang.Object ref = maxValue_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          maxValue_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string maxValue = 6;</code>
+       */
+      public Builder setMaxValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        maxValue_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string maxValue = 6;</code>
+       */
+      public Builder clearMaxValue() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        maxValue_ = getDefaultInstance().getMaxValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string maxValue = 6;</code>
+       */
+      public Builder setMaxValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        maxValue_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:PFunctionArg)
+    }
+
+    static {
+      defaultInstance = new PFunctionArg(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:PFunctionArg)
+  }
+
+  public interface PFunctionOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string functionName = 1;
+    /**
+     * <code>required string functionName = 1;</code>
+     */
+    boolean hasFunctionName();
+    /**
+     * <code>required string functionName = 1;</code>
+     */
+    java.lang.String getFunctionName();
+    /**
+     * <code>required string functionName = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getFunctionNameBytes();
+
+    // repeated .PFunctionArg arguments = 2;
+    /**
+     * <code>repeated .PFunctionArg arguments = 2;</code>
+     */
+    java.util.List<org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg> 
+        getArgumentsList();
+    /**
+     * <code>repeated .PFunctionArg arguments = 2;</code>
+     */
+    org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg getArguments(int index);
+    /**
+     * <code>repeated .PFunctionArg arguments = 2;</code>
+     */
+    int getArgumentsCount();
+    /**
+     * <code>repeated .PFunctionArg arguments = 2;</code>
+     */
+    java.util.List<? extends org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArgOrBuilder> 
+        getArgumentsOrBuilderList();
+    /**
+     * <code>repeated .PFunctionArg arguments = 2;</code>
+     */
+    org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArgOrBuilder getArgumentsOrBuilder(
+        int index);
+
+    // required string classname = 3;
+    /**
+     * <code>required string classname = 3;</code>
+     */
+    boolean hasClassname();
+    /**
+     * <code>required string classname = 3;</code>
+     */
+    java.lang.String getClassname();
+    /**
+     * <code>required string classname = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getClassnameBytes();
+
+    // required int64 timeStamp = 4;
+    /**
+     * <code>required int64 timeStamp = 4;</code>
+     */
+    boolean hasTimeStamp();
+    /**
+     * <code>required int64 timeStamp = 4;</code>
+     */
+    long getTimeStamp();
+
+    // optional string jarPath = 5;
+    /**
+     * <code>optional string jarPath = 5;</code>
+     */
+    boolean hasJarPath();
+    /**
+     * <code>optional string jarPath = 5;</code>
+     */
+    java.lang.String getJarPath();
+    /**
+     * <code>optional string jarPath = 5;</code>
+     */
+    com.google.protobuf.ByteString
+        getJarPathBytes();
+
+    // optional bytes tenantId = 6;
+    /**
+     * <code>optional bytes tenantId = 6;</code>
+     */
+    boolean hasTenantId();
+    /**
+     * <code>optional bytes tenantId = 6;</code>
+     */
+    com.google.protobuf.ByteString getTenantId();
+
+    // optional string returnType = 7;
+    /**
+     * <code>optional string returnType = 7;</code>
+     */
+    boolean hasReturnType();
+    /**
+     * <code>optional string returnType = 7;</code>
+     */
+    java.lang.String getReturnType();
+    /**
+     * <code>optional string returnType = 7;</code>
+     */
+    com.google.protobuf.ByteString
+        getReturnTypeBytes();
+
+    // optional bool isArrayReturnType = 8;
+    /**
+     * <code>optional bool isArrayReturnType = 8;</code>
+     */
+    boolean hasIsArrayReturnType();
+    /**
+     * <code>optional bool isArrayReturnType = 8;</code>
+     */
+    boolean getIsArrayReturnType();
+  }
+  /**
+   * Protobuf type {@code PFunction}
+   */
+  public static final class PFunction extends
+      com.google.protobuf.GeneratedMessage
+      implements PFunctionOrBuilder {
+    // Use PFunction.newBuilder() to construct.
+    private PFunction(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private PFunction(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final PFunction defaultInstance;
+    public static PFunction getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public PFunction getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private PFunction(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              functionName_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                arguments_ = new java.util.ArrayList<org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              arguments_.add(input.readMessage(org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.PARSER, extensionRegistry));
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000002;
+              classname_ = input.readBytes();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000004;
+              timeStamp_ = input.readInt64();
+              break;
+            }
+            case 42: {
+              bitField0_ |= 0x00000008;
+              jarPath_ = input.readBytes();
+              break;
+            }
+            case 50: {
+              bitField0_ |= 0x00000010;
+              tenantId_ = input.readBytes();
+              break;
+            }
+            case 58: {
+              bitField0_ |= 0x00000020;
+              returnType_ = input.readBytes();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000040;
+              isArrayReturnType_ = input.readBool();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+          arguments_ = java.util.Collections.unmodifiableList(arguments_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.phoenix.coprocessor.generated.PFunctionProtos.internal_static_PFunction_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.phoenix.coprocessor.generated.PFunctionProtos.internal_static_PFunction_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction.class, org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<PFunction> PARSER =
+        new com.google.protobuf.AbstractParser<PFunction>() {
+      public PFunction parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new PFunction(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<PFunction> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string functionName = 1;
+    public static final int FUNCTIONNAME_FIELD_NUMBER = 1;
+    private java.lang.Object functionName_;
+    /**
+     * <code>required string functionName = 1;</code>
+     */
+    public boolean hasFunctionName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string functionName = 1;</code>
+     */
+    public java.lang.String getFunctionName() {
+      java.lang.Object ref = functionName_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          functionName_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string functionName = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getFunctionNameBytes() {
+      java.lang.Object ref = functionName_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        functionName_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // repeated .PFunctionArg arguments = 2;
+    public static final int ARGUMENTS_FIELD_NUMBER = 2;
+    private java.util.List<org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg> arguments_;
+    /**
+     * <code>repeated .PFunctionArg arguments = 2;</code>
+     */
+    public java.util.List<org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg> getArgumentsList() {
+      return arguments_;
+    }
+    /**
+     * <code>repeated .PFunctionArg arguments = 2;</code>
+     */
+    public java.util.List<? extends org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArgOrBuilder> 
+        getArgumentsOrBuilderList() {
+      return arguments_;
+    }
+    /**
+     * <code>repeated .PFunctionArg arguments = 2;</code>
+     */
+    public int getArgumentsCount() {
+      return arguments_.size();
+    }
+    /**
+     * <code>repeated .PFunctionArg arguments = 2;</code>
+     */
+    public org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg getArguments(int index) {
+      return arguments_.get(index);
+    }
+    /**
+     * <code>repeated .PFunctionArg arguments = 2;</code>
+     */
+    public org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArgOrBuilder getArgumentsOrBuilder(
+        int index) {
+      return arguments_.get(index);
+    }
+
+    // required string classname = 3;
+    public static final int CLASSNAME_FIELD_NUMBER = 3;
+    private java.lang.Object classname_;
+    /**
+     * <code>required string classname = 3;</code>
+     */
+    public boolean hasClassname() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required string classname = 3;</code>
+     */
+    public java.lang.String getClassname() {
+      java.lang.Object ref = classname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          classname_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string classname = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getClassnameBytes() {
+      java.lang.Object ref = classname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        classname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required int64 timeStamp = 4;
+    public static final int TIMESTAMP_FIELD_NUMBER = 4;
+    private long timeStamp_;
+    /**
+     * <code>required int64 timeStamp = 4;</code>
+     */
+    public boolean hasTimeStamp() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required int64 timeStamp = 4;</code>
+     */
+    public long getTimeStamp() {
+      return timeStamp_;
+    }
+
+    // optional string jarPath = 5;
+    public static final int JARPATH_FIELD_NUMBER = 5;
+    private java.lang.Object jarPath_;
+    /**
+     * <code>optional string jarPath = 5;</code>
+     */
+    public boolean hasJarPath() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional string jarPath = 5;</code>
+     */
+    public java.lang.String getJarPath() {
+      java.lang.Object ref = jarPath_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          jarPath_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string jarPath = 5;</code>
+     */
+    public com.google.protobuf.ByteString
+        getJarPathBytes() {
+      java.lang.Object ref = jarPath_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        jarPath_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional bytes tenantId = 6;
+    public static final int TENANTID_FIELD_NUMBER = 6;
+    private com.google.protobuf.ByteString tenantId_;
+    /**
+     * <code>optional bytes tenantId = 6;</code>
+     */
+    public boolean hasTenantId() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional bytes tenantId = 6;</code>
+     */
+    public com.google.protobuf.ByteString getTenantId() {
+      return tenantId_;
+    }
+
+    // optional string returnType = 7;
+    public static final int RETURNTYPE_FIELD_NUMBER = 7;
+    private java.lang.Object returnType_;
+    /**
+     * <code>optional string returnType = 7;</code>
+     */
+    public boolean hasReturnType() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string returnType = 7;</code>
+     */
+    public java.lang.String getReturnType() {
+      java.lang.Object ref = returnType_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          returnType_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string returnType = 7;</code>
+     */
+    public com.google.protobuf.ByteString
+        getReturnTypeBytes() {
+      java.lang.Object ref = returnType_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        returnType_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional bool isArrayReturnType = 8;
+    public static final int ISARRAYRETURNTYPE_FIELD_NUMBER = 8;
+    private boolean isArrayReturnType_;
+    /**
+     * <code>optional bool isArrayReturnType = 8;</code>
+     */
+    public boolean hasIsArrayReturnType() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional bool isArrayReturnType = 8;</code>
+     */
+    public boolean getIsArrayReturnType() {
+      return isArrayReturnType_;
+    }
+
+    private void initFields() {
+      functionName_ = "";
+      arguments_ = java.util.Collections.emptyList();
+      classname_ = "";
+      timeStamp_ = 0L;
+      jarPath_ = "";
+      tenantId_ = com.google.protobuf.ByteString.EMPTY;
+      returnType_ = "";
+      isArrayReturnType_ = false;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasFunctionName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasClassname()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasTimeStamp()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getArgumentsCount(); i++) {
+        if (!getArguments(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getFunctionNameBytes());
+      }
+      for (int i = 0; i < arguments_.size(); i++) {
+        output.writeMessage(2, arguments_.get(i));
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(3, getClassnameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeInt64(4, timeStamp_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(5, getJarPathBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBytes(6, tenantId_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(7, getReturnTypeBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeBool(8, isArrayReturnType_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getFunctionNameBytes());
+      }
+      for (int i = 0; i < arguments_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, arguments_.get(i));
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getClassnameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(4, timeStamp_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(5, getJarPathBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, tenantId_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(7, getReturnTypeBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(8, isArrayReturnType_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction)) {
+        return super.equals(obj);
+      }
+      org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction other = (org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction) obj;
+
+      boolean result = true;
+      result = result && (hasFunctionName() == other.hasFunctionName());
+      if (hasFunctionName()) {
+        result = result && getFunctionName()
+            .equals(other.getFunctionName());
+      }
+      result = result && getArgumentsList()
+          .equals(other.getArgumentsList());
+      result = result && (hasClassname() == other.hasClassname());
+      if (hasClassname()) {
+        result = result && getClassname()
+            .equals(other.getClassname());
+      }
+      result = result && (hasTimeStamp() == other.hasTimeStamp());
+      if (hasTimeStamp()) {
+        result = result && (getTimeStamp()
+            == other.getTimeStamp());
+      }
+      result = result && (hasJarPath() == other.hasJarPath());
+      if (hasJarPath()) {
+        result = result && getJarPath()
+            .equals(other.getJarPath());
+      }
+      result = result && (hasTenantId() == other.hasTenantId());
+      if (hasTenantId()) {
+        result = result && getTenantId()
+            .equals(other.getTenantId());
+      }
+      result = result && (hasReturnType() == other.hasReturnType());
+      if (hasReturnType()) {
+        result = result && getReturnType()
+            .equals(other.getReturnType());
+      }
+      result = result && (hasIsArrayReturnType() == other.hasIsArrayReturnType());
+      if (hasIsArrayReturnType()) {
+        result = result && (getIsArrayReturnType()
+            == other.getIsArrayReturnType());
+      }
+      result = result &&
+          getUnknownFields().equals(other.getUnknownFields());
+      return result;
+    }
+
+    private int memoizedHashCode = 0;
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptorForType().hashCode();
+      if (hasFunctionName()) {
+        hash = (37 * hash) + FUNCTIONNAME_FIELD_NUMBER;
+        hash = (53 * hash) + getFunctionName().hashCode();
+      }
+      if (getArgumentsCount() > 0) {
+        hash = (37 * hash) + ARGUMENTS_FIELD_NUMBER;
+        hash = (53 * hash) + getArgumentsList().hashCode();
+      }
+      if (hasClassname()) {
+        hash = (37 * hash) + CLASSNAME_FIELD_NUMBER;
+        hash = (53 * hash) + getClassname().hashCode();
+      }
+      if (hasTimeStamp()) {
+        hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
+        hash = (53 * hash) + hashLong(getTimeStamp());
+      }
+      if (hasJarPath()) {
+        hash = (37 * hash) + JARPATH_FIELD_NUMBER;
+        hash = (53 * hash) + getJarPath().hashCode();
+      }
+      if (hasTenantId()) {
+        hash = (37 * hash) + TENANTID_FIELD_NUMBER;
+        hash = (53 * hash) + getTenantId().hashCode();
+      }
+      if (hasReturnType()) {
+        hash = (37 * hash) + RETURNTYPE_FIELD_NUMBER;
+        hash = (53 * hash) + getReturnType().hashCode();
+      }
+      if (hasIsArrayReturnType()) {
+        hash = (37 * hash) + ISARRAYRETURNTYPE_FIELD_NUMBER;
+        hash = (53 * hash) + hashBoolean(getIsArrayReturnType());
+      }
+      hash = (29 * hash) + getUnknownFields().hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code PFunction}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.phoenix.coprocessor.generated.PFunctionProtos.internal_static_PFunction_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.phoenix.coprocessor.generated.PFunctionProtos.internal_static_PFunction_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction.class, org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction.Builder.class);
+      }
+
+      // Construct using org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getArgumentsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        functionName_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (argumentsBuilder_ == null) {
+          arguments_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          argumentsBuilder_.clear();
+        }
+        classname_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        timeStamp_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        jarPath_ = "";
+        bitField0_ = (bitField0_ & ~0x00000010);
+        tenantId_ = com.google.protobuf.ByteString.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        returnType_ = "";
+        bitField0_ = (bitField0_ & ~0x00000040);
+        isArrayReturnType_ = false;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.phoenix.coprocessor.generated.PFunctionProtos.internal_static_PFunction_descriptor;
+      }
+
+      public org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction getDefaultInstanceForType() {
+        return org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction.getDefaultInstance();
+      }
+
+      public org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction build() {
+        org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction buildPartial() {
+        org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction result = new org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.functionName_ = functionName_;
+        if (argumentsBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            arguments_ = java.util.Collections.unmodifiableList(arguments_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.arguments_ = arguments_;
+        } else {
+          result.arguments_ = argumentsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.classname_ = classname_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.timeStamp_ = timeStamp_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.jarPath_ = jarPath_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.tenantId_ = tenantId_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.returnType_ = returnType_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.isArrayReturnType_ = isArrayReturnType_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction) {
+          return mergeFrom((org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction other) {
+        if (other == org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction.getDefaultInstance()) return this;
+        if (other.hasFunctionName()) {
+          bitField0_ |= 0x00000001;
+          functionName_ = other.functionName_;
+          onChanged();
+        }
+        if (argumentsBuilder_ == null) {
+          if (!other.arguments_.isEmpty()) {
+            if (arguments_.isEmpty()) {
+              arguments_ = other.arguments_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureArgumentsIsMutable();
+              arguments_.addAll(other.arguments_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.arguments_.isEmpty()) {
+            if (argumentsBuilder_.isEmpty()) {
+              argumentsBuilder_.dispose();
+              argumentsBuilder_ = null;
+              arguments_ = other.arguments_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              argumentsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getArgumentsFieldBuilder() : null;
+            } else {
+              argumentsBuilder_.addAllMessages(other.arguments_);
+            }
+          }
+        }
+        if (other.hasClassname()) {
+          bitField0_ |= 0x00000004;
+          classname_ = other.classname_;
+          onChanged();
+        }
+        if (other.hasTimeStamp()) {
+          setTimeStamp(other.getTimeStamp());
+        }
+        if (other.hasJarPath()) {
+          bitField0_ |= 0x00000010;
+          jarPath_ = other.jarPath_;
+          onChanged();
+        }
+        if (other.hasTenantId()) {
+          setTenantId(other.getTenantId());
+        }
+        if (other.hasReturnType()) {
+          bitField0_ |= 0x00000040;
+          returnType_ = other.returnType_;
+          onChanged();
+        }
+        if (other.hasIsArrayReturnType()) {
+          setIsArrayReturnType(other.getIsArrayReturnType());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasFunctionName()) {
+          
+          return false;
+        }
+        if (!hasClassname()) {
+          
+          return false;
+        }
+        if (!hasTimeStamp()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getArgumentsCount(); i++) {
+          if (!getArguments(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunction) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string functionName = 1;
+      private java.lang.Object functionName_ = "";
+      /**
+       * <code>required string functionName = 1;</code>
+       */
+      public boolean hasFunctionName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string functionName = 1;</code>
+       */
+      public java.lang.String getFunctionName() {
+        java.lang.Object ref = functionName_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          functionName_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string functionName = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getFunctionNameBytes() {
+        java.lang.Object ref = functionName_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          functionName_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string functionName = 1;</code>
+       */
+      public Builder setFunctionName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        functionName_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string functionName = 1;</code>
+       */
+      public Builder clearFunctionName() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        functionName_ = getDefaultInstance().getFunctionName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string functionName = 1;</code>
+       */
+      public Builder setFunctionNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        functionName_ = value;
+        onChanged();
+        return this;
+      }
+
+      // repeated .PFunctionArg arguments = 2;
+      private java.util.List<org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg> arguments_ =
+        java.util.Collections.emptyList();
+      private void ensureArgumentsIsMutable() {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+          arguments_ = new java.util.ArrayList<org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg>(arguments_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg, org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.Builder, org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArgOrBuilder> argumentsBuilder_;
+
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public java.util.List<org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg> getArgumentsList() {
+        if (argumentsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(arguments_);
+        } else {
+          return argumentsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public int getArgumentsCount() {
+        if (argumentsBuilder_ == null) {
+          return arguments_.size();
+        } else {
+          return argumentsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg getArguments(int index) {
+        if (argumentsBuilder_ == null) {
+          return arguments_.get(index);
+        } else {
+          return argumentsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public Builder setArguments(
+          int index, org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg value) {
+        if (argumentsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureArgumentsIsMutable();
+          arguments_.set(index, value);
+          onChanged();
+        } else {
+          argumentsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public Builder setArguments(
+          int index, org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.Builder builderForValue) {
+        if (argumentsBuilder_ == null) {
+          ensureArgumentsIsMutable();
+          arguments_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          argumentsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public Builder addArguments(org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg value) {
+        if (argumentsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureArgumentsIsMutable();
+          arguments_.add(value);
+          onChanged();
+        } else {
+          argumentsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public Builder addArguments(
+          int index, org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg value) {
+        if (argumentsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureArgumentsIsMutable();
+          arguments_.add(index, value);
+          onChanged();
+        } else {
+          argumentsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public Builder addArguments(
+          org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.Builder builderForValue) {
+        if (argumentsBuilder_ == null) {
+          ensureArgumentsIsMutable();
+          arguments_.add(builderForValue.build());
+          onChanged();
+        } else {
+          argumentsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public Builder addArguments(
+          int index, org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.Builder builderForValue) {
+        if (argumentsBuilder_ == null) {
+          ensureArgumentsIsMutable();
+          arguments_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          argumentsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public Builder addAllArguments(
+          java.lang.Iterable<? extends org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg> values) {
+        if (argumentsBuilder_ == null) {
+          ensureArgumentsIsMutable();
+          super.addAll(values, arguments_);
+          onChanged();
+        } else {
+          argumentsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public Builder clearArguments() {
+        if (argumentsBuilder_ == null) {
+          arguments_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          argumentsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public Builder removeArguments(int index) {
+        if (argumentsBuilder_ == null) {
+          ensureArgumentsIsMutable();
+          arguments_.remove(index);
+          onChanged();
+        } else {
+          argumentsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.Builder getArgumentsBuilder(
+          int index) {
+        return getArgumentsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArgOrBuilder getArgumentsOrBuilder(
+          int index) {
+        if (argumentsBuilder_ == null) {
+          return arguments_.get(index);  } else {
+          return argumentsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public java.util.List<? extends org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArgOrBuilder> 
+           getArgumentsOrBuilderList() {
+        if (argumentsBuilder_ != null) {
+          return argumentsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(arguments_);
+        }
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.Builder addArgumentsBuilder() {
+        return getArgumentsFieldBuilder().addBuilder(
+            org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.Builder addArgumentsBuilder(
+          int index) {
+        return getArgumentsFieldBuilder().addBuilder(
+            index, org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .PFunctionArg arguments = 2;</code>
+       */
+      public java.util.List<org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.Builder> 
+           getArgumentsBuilderList() {
+        return getArgumentsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg, org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArg.Builder, org.apache.phoenix.coprocessor.generated.PFunctionProtos.PFunctionArgOrBuilder> 
+          getArgumentsFieldBuilder() {
+        if (argumentsBuilder_ == null) {
+ 

<TRUNCATED>