You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by vg...@apache.org on 2016/01/08 01:19:35 UTC

[25/51] [partial] hive git commit: HIVE-12442: Refactor/repackage HiveServer2's Thrift code so that it can be used in the tasks (Rohit Dholakia reviewed by Vaibhav Gumashta)

http://git-wip-us.apache.org/repos/asf/hive/blob/2542f5cc/service-rpc/src/gen/thrift/gen-php/Types.php
----------------------------------------------------------------------
diff --git a/service-rpc/src/gen/thrift/gen-php/Types.php b/service-rpc/src/gen/thrift/gen-php/Types.php
new file mode 100644
index 0000000..d5ac168
--- /dev/null
+++ b/service-rpc/src/gen/thrift/gen-php/Types.php
@@ -0,0 +1,9040 @@
+<?php
+namespace ;
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.2)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+final class TProtocolVersion {
+  const HIVE_CLI_SERVICE_PROTOCOL_V1 = 0;
+  const HIVE_CLI_SERVICE_PROTOCOL_V2 = 1;
+  const HIVE_CLI_SERVICE_PROTOCOL_V3 = 2;
+  const HIVE_CLI_SERVICE_PROTOCOL_V4 = 3;
+  const HIVE_CLI_SERVICE_PROTOCOL_V5 = 4;
+  const HIVE_CLI_SERVICE_PROTOCOL_V6 = 5;
+  const HIVE_CLI_SERVICE_PROTOCOL_V7 = 6;
+  const HIVE_CLI_SERVICE_PROTOCOL_V8 = 7;
+  static public $__names = array(
+    0 => 'HIVE_CLI_SERVICE_PROTOCOL_V1',
+    1 => 'HIVE_CLI_SERVICE_PROTOCOL_V2',
+    2 => 'HIVE_CLI_SERVICE_PROTOCOL_V3',
+    3 => 'HIVE_CLI_SERVICE_PROTOCOL_V4',
+    4 => 'HIVE_CLI_SERVICE_PROTOCOL_V5',
+    5 => 'HIVE_CLI_SERVICE_PROTOCOL_V6',
+    6 => 'HIVE_CLI_SERVICE_PROTOCOL_V7',
+    7 => 'HIVE_CLI_SERVICE_PROTOCOL_V8',
+  );
+}
+
+final class TTypeId {
+  const BOOLEAN_TYPE = 0;
+  const TINYINT_TYPE = 1;
+  const SMALLINT_TYPE = 2;
+  const INT_TYPE = 3;
+  const BIGINT_TYPE = 4;
+  const FLOAT_TYPE = 5;
+  const DOUBLE_TYPE = 6;
+  const STRING_TYPE = 7;
+  const TIMESTAMP_TYPE = 8;
+  const BINARY_TYPE = 9;
+  const ARRAY_TYPE = 10;
+  const MAP_TYPE = 11;
+  const STRUCT_TYPE = 12;
+  const UNION_TYPE = 13;
+  const USER_DEFINED_TYPE = 14;
+  const DECIMAL_TYPE = 15;
+  const NULL_TYPE = 16;
+  const DATE_TYPE = 17;
+  const VARCHAR_TYPE = 18;
+  const CHAR_TYPE = 19;
+  const INTERVAL_YEAR_MONTH_TYPE = 20;
+  const INTERVAL_DAY_TIME_TYPE = 21;
+  static public $__names = array(
+    0 => 'BOOLEAN_TYPE',
+    1 => 'TINYINT_TYPE',
+    2 => 'SMALLINT_TYPE',
+    3 => 'INT_TYPE',
+    4 => 'BIGINT_TYPE',
+    5 => 'FLOAT_TYPE',
+    6 => 'DOUBLE_TYPE',
+    7 => 'STRING_TYPE',
+    8 => 'TIMESTAMP_TYPE',
+    9 => 'BINARY_TYPE',
+    10 => 'ARRAY_TYPE',
+    11 => 'MAP_TYPE',
+    12 => 'STRUCT_TYPE',
+    13 => 'UNION_TYPE',
+    14 => 'USER_DEFINED_TYPE',
+    15 => 'DECIMAL_TYPE',
+    16 => 'NULL_TYPE',
+    17 => 'DATE_TYPE',
+    18 => 'VARCHAR_TYPE',
+    19 => 'CHAR_TYPE',
+    20 => 'INTERVAL_YEAR_MONTH_TYPE',
+    21 => 'INTERVAL_DAY_TIME_TYPE',
+  );
+}
+
+final class TStatusCode {
+  const SUCCESS_STATUS = 0;
+  const SUCCESS_WITH_INFO_STATUS = 1;
+  const STILL_EXECUTING_STATUS = 2;
+  const ERROR_STATUS = 3;
+  const INVALID_HANDLE_STATUS = 4;
+  static public $__names = array(
+    0 => 'SUCCESS_STATUS',
+    1 => 'SUCCESS_WITH_INFO_STATUS',
+    2 => 'STILL_EXECUTING_STATUS',
+    3 => 'ERROR_STATUS',
+    4 => 'INVALID_HANDLE_STATUS',
+  );
+}
+
+final class TOperationState {
+  const INITIALIZED_STATE = 0;
+  const RUNNING_STATE = 1;
+  const FINISHED_STATE = 2;
+  const CANCELED_STATE = 3;
+  const CLOSED_STATE = 4;
+  const ERROR_STATE = 5;
+  const UKNOWN_STATE = 6;
+  const PENDING_STATE = 7;
+  static public $__names = array(
+    0 => 'INITIALIZED_STATE',
+    1 => 'RUNNING_STATE',
+    2 => 'FINISHED_STATE',
+    3 => 'CANCELED_STATE',
+    4 => 'CLOSED_STATE',
+    5 => 'ERROR_STATE',
+    6 => 'UKNOWN_STATE',
+    7 => 'PENDING_STATE',
+  );
+}
+
+final class TOperationType {
+  const EXECUTE_STATEMENT = 0;
+  const GET_TYPE_INFO = 1;
+  const GET_CATALOGS = 2;
+  const GET_SCHEMAS = 3;
+  const GET_TABLES = 4;
+  const GET_TABLE_TYPES = 5;
+  const GET_COLUMNS = 6;
+  const GET_FUNCTIONS = 7;
+  const UNKNOWN = 8;
+  static public $__names = array(
+    0 => 'EXECUTE_STATEMENT',
+    1 => 'GET_TYPE_INFO',
+    2 => 'GET_CATALOGS',
+    3 => 'GET_SCHEMAS',
+    4 => 'GET_TABLES',
+    5 => 'GET_TABLE_TYPES',
+    6 => 'GET_COLUMNS',
+    7 => 'GET_FUNCTIONS',
+    8 => 'UNKNOWN',
+  );
+}
+
+final class TGetInfoType {
+  const CLI_MAX_DRIVER_CONNECTIONS = 0;
+  const CLI_MAX_CONCURRENT_ACTIVITIES = 1;
+  const CLI_DATA_SOURCE_NAME = 2;
+  const CLI_FETCH_DIRECTION = 8;
+  const CLI_SERVER_NAME = 13;
+  const CLI_SEARCH_PATTERN_ESCAPE = 14;
+  const CLI_DBMS_NAME = 17;
+  const CLI_DBMS_VER = 18;
+  const CLI_ACCESSIBLE_TABLES = 19;
+  const CLI_ACCESSIBLE_PROCEDURES = 20;
+  const CLI_CURSOR_COMMIT_BEHAVIOR = 23;
+  const CLI_DATA_SOURCE_READ_ONLY = 25;
+  const CLI_DEFAULT_TXN_ISOLATION = 26;
+  const CLI_IDENTIFIER_CASE = 28;
+  const CLI_IDENTIFIER_QUOTE_CHAR = 29;
+  const CLI_MAX_COLUMN_NAME_LEN = 30;
+  const CLI_MAX_CURSOR_NAME_LEN = 31;
+  const CLI_MAX_SCHEMA_NAME_LEN = 32;
+  const CLI_MAX_CATALOG_NAME_LEN = 34;
+  const CLI_MAX_TABLE_NAME_LEN = 35;
+  const CLI_SCROLL_CONCURRENCY = 43;
+  const CLI_TXN_CAPABLE = 46;
+  const CLI_USER_NAME = 47;
+  const CLI_TXN_ISOLATION_OPTION = 72;
+  const CLI_INTEGRITY = 73;
+  const CLI_GETDATA_EXTENSIONS = 81;
+  const CLI_NULL_COLLATION = 85;
+  const CLI_ALTER_TABLE = 86;
+  const CLI_ORDER_BY_COLUMNS_IN_SELECT = 90;
+  const CLI_SPECIAL_CHARACTERS = 94;
+  const CLI_MAX_COLUMNS_IN_GROUP_BY = 97;
+  const CLI_MAX_COLUMNS_IN_INDEX = 98;
+  const CLI_MAX_COLUMNS_IN_ORDER_BY = 99;
+  const CLI_MAX_COLUMNS_IN_SELECT = 100;
+  const CLI_MAX_COLUMNS_IN_TABLE = 101;
+  const CLI_MAX_INDEX_SIZE = 102;
+  const CLI_MAX_ROW_SIZE = 104;
+  const CLI_MAX_STATEMENT_LEN = 105;
+  const CLI_MAX_TABLES_IN_SELECT = 106;
+  const CLI_MAX_USER_NAME_LEN = 107;
+  const CLI_OJ_CAPABILITIES = 115;
+  const CLI_XOPEN_CLI_YEAR = 10000;
+  const CLI_CURSOR_SENSITIVITY = 10001;
+  const CLI_DESCRIBE_PARAMETER = 10002;
+  const CLI_CATALOG_NAME = 10003;
+  const CLI_COLLATION_SEQ = 10004;
+  const CLI_MAX_IDENTIFIER_LEN = 10005;
+  static public $__names = array(
+    0 => 'CLI_MAX_DRIVER_CONNECTIONS',
+    1 => 'CLI_MAX_CONCURRENT_ACTIVITIES',
+    2 => 'CLI_DATA_SOURCE_NAME',
+    8 => 'CLI_FETCH_DIRECTION',
+    13 => 'CLI_SERVER_NAME',
+    14 => 'CLI_SEARCH_PATTERN_ESCAPE',
+    17 => 'CLI_DBMS_NAME',
+    18 => 'CLI_DBMS_VER',
+    19 => 'CLI_ACCESSIBLE_TABLES',
+    20 => 'CLI_ACCESSIBLE_PROCEDURES',
+    23 => 'CLI_CURSOR_COMMIT_BEHAVIOR',
+    25 => 'CLI_DATA_SOURCE_READ_ONLY',
+    26 => 'CLI_DEFAULT_TXN_ISOLATION',
+    28 => 'CLI_IDENTIFIER_CASE',
+    29 => 'CLI_IDENTIFIER_QUOTE_CHAR',
+    30 => 'CLI_MAX_COLUMN_NAME_LEN',
+    31 => 'CLI_MAX_CURSOR_NAME_LEN',
+    32 => 'CLI_MAX_SCHEMA_NAME_LEN',
+    34 => 'CLI_MAX_CATALOG_NAME_LEN',
+    35 => 'CLI_MAX_TABLE_NAME_LEN',
+    43 => 'CLI_SCROLL_CONCURRENCY',
+    46 => 'CLI_TXN_CAPABLE',
+    47 => 'CLI_USER_NAME',
+    72 => 'CLI_TXN_ISOLATION_OPTION',
+    73 => 'CLI_INTEGRITY',
+    81 => 'CLI_GETDATA_EXTENSIONS',
+    85 => 'CLI_NULL_COLLATION',
+    86 => 'CLI_ALTER_TABLE',
+    90 => 'CLI_ORDER_BY_COLUMNS_IN_SELECT',
+    94 => 'CLI_SPECIAL_CHARACTERS',
+    97 => 'CLI_MAX_COLUMNS_IN_GROUP_BY',
+    98 => 'CLI_MAX_COLUMNS_IN_INDEX',
+    99 => 'CLI_MAX_COLUMNS_IN_ORDER_BY',
+    100 => 'CLI_MAX_COLUMNS_IN_SELECT',
+    101 => 'CLI_MAX_COLUMNS_IN_TABLE',
+    102 => 'CLI_MAX_INDEX_SIZE',
+    104 => 'CLI_MAX_ROW_SIZE',
+    105 => 'CLI_MAX_STATEMENT_LEN',
+    106 => 'CLI_MAX_TABLES_IN_SELECT',
+    107 => 'CLI_MAX_USER_NAME_LEN',
+    115 => 'CLI_OJ_CAPABILITIES',
+    10000 => 'CLI_XOPEN_CLI_YEAR',
+    10001 => 'CLI_CURSOR_SENSITIVITY',
+    10002 => 'CLI_DESCRIBE_PARAMETER',
+    10003 => 'CLI_CATALOG_NAME',
+    10004 => 'CLI_COLLATION_SEQ',
+    10005 => 'CLI_MAX_IDENTIFIER_LEN',
+  );
+}
+
+final class TFetchOrientation {
+  const FETCH_NEXT = 0;
+  const FETCH_PRIOR = 1;
+  const FETCH_RELATIVE = 2;
+  const FETCH_ABSOLUTE = 3;
+  const FETCH_FIRST = 4;
+  const FETCH_LAST = 5;
+  static public $__names = array(
+    0 => 'FETCH_NEXT',
+    1 => 'FETCH_PRIOR',
+    2 => 'FETCH_RELATIVE',
+    3 => 'FETCH_ABSOLUTE',
+    4 => 'FETCH_FIRST',
+    5 => 'FETCH_LAST',
+  );
+}
+
+class TTypeQualifierValue {
+  static $_TSPEC;
+
+  /**
+   * @var int
+   */
+  public $i32Value = null;
+  /**
+   * @var string
+   */
+  public $stringValue = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'i32Value',
+          'type' => TType::I32,
+          ),
+        2 => array(
+          'var' => 'stringValue',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['i32Value'])) {
+        $this->i32Value = $vals['i32Value'];
+      }
+      if (isset($vals['stringValue'])) {
+        $this->stringValue = $vals['stringValue'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TTypeQualifierValue';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->i32Value);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->stringValue);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TTypeQualifierValue');
+    if ($this->i32Value !== null) {
+      $xfer += $output->writeFieldBegin('i32Value', TType::I32, 1);
+      $xfer += $output->writeI32($this->i32Value);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->stringValue !== null) {
+      $xfer += $output->writeFieldBegin('stringValue', TType::STRING, 2);
+      $xfer += $output->writeString($this->stringValue);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TTypeQualifiers {
+  static $_TSPEC;
+
+  /**
+   * @var array
+   */
+  public $qualifiers = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'qualifiers',
+          'type' => TType::MAP,
+          'ktype' => TType::STRING,
+          'vtype' => TType::STRUCT,
+          'key' => array(
+            'type' => TType::STRING,
+          ),
+          'val' => array(
+            'type' => TType::STRUCT,
+            'class' => '\TTypeQualifierValue',
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['qualifiers'])) {
+        $this->qualifiers = $vals['qualifiers'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TTypeQualifiers';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::MAP) {
+            $this->qualifiers = array();
+            $_size0 = 0;
+            $_ktype1 = 0;
+            $_vtype2 = 0;
+            $xfer += $input->readMapBegin($_ktype1, $_vtype2, $_size0);
+            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            {
+              $key5 = '';
+              $val6 = new \TTypeQualifierValue();
+              $xfer += $input->readString($key5);
+              $val6 = new \TTypeQualifierValue();
+              $xfer += $val6->read($input);
+              $this->qualifiers[$key5] = $val6;
+            }
+            $xfer += $input->readMapEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TTypeQualifiers');
+    if ($this->qualifiers !== null) {
+      if (!is_array($this->qualifiers)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('qualifiers', TType::MAP, 1);
+      {
+        $output->writeMapBegin(TType::STRING, TType::STRUCT, count($this->qualifiers));
+        {
+          foreach ($this->qualifiers as $kiter7 => $viter8)
+          {
+            $xfer += $output->writeString($kiter7);
+            $xfer += $viter8->write($output);
+          }
+        }
+        $output->writeMapEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TPrimitiveTypeEntry {
+  static $_TSPEC;
+
+  /**
+   * @var int
+   */
+  public $type = null;
+  /**
+   * @var \TTypeQualifiers
+   */
+  public $typeQualifiers = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'type',
+          'type' => TType::I32,
+          ),
+        2 => array(
+          'var' => 'typeQualifiers',
+          'type' => TType::STRUCT,
+          'class' => '\TTypeQualifiers',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['type'])) {
+        $this->type = $vals['type'];
+      }
+      if (isset($vals['typeQualifiers'])) {
+        $this->typeQualifiers = $vals['typeQualifiers'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TPrimitiveTypeEntry';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->type);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->typeQualifiers = new \TTypeQualifiers();
+            $xfer += $this->typeQualifiers->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TPrimitiveTypeEntry');
+    if ($this->type !== null) {
+      $xfer += $output->writeFieldBegin('type', TType::I32, 1);
+      $xfer += $output->writeI32($this->type);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->typeQualifiers !== null) {
+      if (!is_object($this->typeQualifiers)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('typeQualifiers', TType::STRUCT, 2);
+      $xfer += $this->typeQualifiers->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TArrayTypeEntry {
+  static $_TSPEC;
+
+  /**
+   * @var int
+   */
+  public $objectTypePtr = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'objectTypePtr',
+          'type' => TType::I32,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['objectTypePtr'])) {
+        $this->objectTypePtr = $vals['objectTypePtr'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TArrayTypeEntry';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->objectTypePtr);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TArrayTypeEntry');
+    if ($this->objectTypePtr !== null) {
+      $xfer += $output->writeFieldBegin('objectTypePtr', TType::I32, 1);
+      $xfer += $output->writeI32($this->objectTypePtr);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TMapTypeEntry {
+  static $_TSPEC;
+
+  /**
+   * @var int
+   */
+  public $keyTypePtr = null;
+  /**
+   * @var int
+   */
+  public $valueTypePtr = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'keyTypePtr',
+          'type' => TType::I32,
+          ),
+        2 => array(
+          'var' => 'valueTypePtr',
+          'type' => TType::I32,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['keyTypePtr'])) {
+        $this->keyTypePtr = $vals['keyTypePtr'];
+      }
+      if (isset($vals['valueTypePtr'])) {
+        $this->valueTypePtr = $vals['valueTypePtr'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TMapTypeEntry';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->keyTypePtr);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->valueTypePtr);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TMapTypeEntry');
+    if ($this->keyTypePtr !== null) {
+      $xfer += $output->writeFieldBegin('keyTypePtr', TType::I32, 1);
+      $xfer += $output->writeI32($this->keyTypePtr);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->valueTypePtr !== null) {
+      $xfer += $output->writeFieldBegin('valueTypePtr', TType::I32, 2);
+      $xfer += $output->writeI32($this->valueTypePtr);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TStructTypeEntry {
+  static $_TSPEC;
+
+  /**
+   * @var array
+   */
+  public $nameToTypePtr = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'nameToTypePtr',
+          'type' => TType::MAP,
+          'ktype' => TType::STRING,
+          'vtype' => TType::I32,
+          'key' => array(
+            'type' => TType::STRING,
+          ),
+          'val' => array(
+            'type' => TType::I32,
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['nameToTypePtr'])) {
+        $this->nameToTypePtr = $vals['nameToTypePtr'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TStructTypeEntry';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::MAP) {
+            $this->nameToTypePtr = array();
+            $_size9 = 0;
+            $_ktype10 = 0;
+            $_vtype11 = 0;
+            $xfer += $input->readMapBegin($_ktype10, $_vtype11, $_size9);
+            for ($_i13 = 0; $_i13 < $_size9; ++$_i13)
+            {
+              $key14 = '';
+              $val15 = 0;
+              $xfer += $input->readString($key14);
+              $xfer += $input->readI32($val15);
+              $this->nameToTypePtr[$key14] = $val15;
+            }
+            $xfer += $input->readMapEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TStructTypeEntry');
+    if ($this->nameToTypePtr !== null) {
+      if (!is_array($this->nameToTypePtr)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('nameToTypePtr', TType::MAP, 1);
+      {
+        $output->writeMapBegin(TType::STRING, TType::I32, count($this->nameToTypePtr));
+        {
+          foreach ($this->nameToTypePtr as $kiter16 => $viter17)
+          {
+            $xfer += $output->writeString($kiter16);
+            $xfer += $output->writeI32($viter17);
+          }
+        }
+        $output->writeMapEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TUnionTypeEntry {
+  static $_TSPEC;
+
+  /**
+   * @var array
+   */
+  public $nameToTypePtr = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'nameToTypePtr',
+          'type' => TType::MAP,
+          'ktype' => TType::STRING,
+          'vtype' => TType::I32,
+          'key' => array(
+            'type' => TType::STRING,
+          ),
+          'val' => array(
+            'type' => TType::I32,
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['nameToTypePtr'])) {
+        $this->nameToTypePtr = $vals['nameToTypePtr'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TUnionTypeEntry';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::MAP) {
+            $this->nameToTypePtr = array();
+            $_size18 = 0;
+            $_ktype19 = 0;
+            $_vtype20 = 0;
+            $xfer += $input->readMapBegin($_ktype19, $_vtype20, $_size18);
+            for ($_i22 = 0; $_i22 < $_size18; ++$_i22)
+            {
+              $key23 = '';
+              $val24 = 0;
+              $xfer += $input->readString($key23);
+              $xfer += $input->readI32($val24);
+              $this->nameToTypePtr[$key23] = $val24;
+            }
+            $xfer += $input->readMapEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TUnionTypeEntry');
+    if ($this->nameToTypePtr !== null) {
+      if (!is_array($this->nameToTypePtr)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('nameToTypePtr', TType::MAP, 1);
+      {
+        $output->writeMapBegin(TType::STRING, TType::I32, count($this->nameToTypePtr));
+        {
+          foreach ($this->nameToTypePtr as $kiter25 => $viter26)
+          {
+            $xfer += $output->writeString($kiter25);
+            $xfer += $output->writeI32($viter26);
+          }
+        }
+        $output->writeMapEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TUserDefinedTypeEntry {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $typeClassName = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'typeClassName',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['typeClassName'])) {
+        $this->typeClassName = $vals['typeClassName'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TUserDefinedTypeEntry';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->typeClassName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TUserDefinedTypeEntry');
+    if ($this->typeClassName !== null) {
+      $xfer += $output->writeFieldBegin('typeClassName', TType::STRING, 1);
+      $xfer += $output->writeString($this->typeClassName);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TTypeEntry {
+  static $_TSPEC;
+
+  /**
+   * @var \TPrimitiveTypeEntry
+   */
+  public $primitiveEntry = null;
+  /**
+   * @var \TArrayTypeEntry
+   */
+  public $arrayEntry = null;
+  /**
+   * @var \TMapTypeEntry
+   */
+  public $mapEntry = null;
+  /**
+   * @var \TStructTypeEntry
+   */
+  public $structEntry = null;
+  /**
+   * @var \TUnionTypeEntry
+   */
+  public $unionEntry = null;
+  /**
+   * @var \TUserDefinedTypeEntry
+   */
+  public $userDefinedTypeEntry = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'primitiveEntry',
+          'type' => TType::STRUCT,
+          'class' => '\TPrimitiveTypeEntry',
+          ),
+        2 => array(
+          'var' => 'arrayEntry',
+          'type' => TType::STRUCT,
+          'class' => '\TArrayTypeEntry',
+          ),
+        3 => array(
+          'var' => 'mapEntry',
+          'type' => TType::STRUCT,
+          'class' => '\TMapTypeEntry',
+          ),
+        4 => array(
+          'var' => 'structEntry',
+          'type' => TType::STRUCT,
+          'class' => '\TStructTypeEntry',
+          ),
+        5 => array(
+          'var' => 'unionEntry',
+          'type' => TType::STRUCT,
+          'class' => '\TUnionTypeEntry',
+          ),
+        6 => array(
+          'var' => 'userDefinedTypeEntry',
+          'type' => TType::STRUCT,
+          'class' => '\TUserDefinedTypeEntry',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['primitiveEntry'])) {
+        $this->primitiveEntry = $vals['primitiveEntry'];
+      }
+      if (isset($vals['arrayEntry'])) {
+        $this->arrayEntry = $vals['arrayEntry'];
+      }
+      if (isset($vals['mapEntry'])) {
+        $this->mapEntry = $vals['mapEntry'];
+      }
+      if (isset($vals['structEntry'])) {
+        $this->structEntry = $vals['structEntry'];
+      }
+      if (isset($vals['unionEntry'])) {
+        $this->unionEntry = $vals['unionEntry'];
+      }
+      if (isset($vals['userDefinedTypeEntry'])) {
+        $this->userDefinedTypeEntry = $vals['userDefinedTypeEntry'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TTypeEntry';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->primitiveEntry = new \TPrimitiveTypeEntry();
+            $xfer += $this->primitiveEntry->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->arrayEntry = new \TArrayTypeEntry();
+            $xfer += $this->arrayEntry->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->mapEntry = new \TMapTypeEntry();
+            $xfer += $this->mapEntry->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRUCT) {
+            $this->structEntry = new \TStructTypeEntry();
+            $xfer += $this->structEntry->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRUCT) {
+            $this->unionEntry = new \TUnionTypeEntry();
+            $xfer += $this->unionEntry->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRUCT) {
+            $this->userDefinedTypeEntry = new \TUserDefinedTypeEntry();
+            $xfer += $this->userDefinedTypeEntry->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TTypeEntry');
+    if ($this->primitiveEntry !== null) {
+      if (!is_object($this->primitiveEntry)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('primitiveEntry', TType::STRUCT, 1);
+      $xfer += $this->primitiveEntry->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->arrayEntry !== null) {
+      if (!is_object($this->arrayEntry)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('arrayEntry', TType::STRUCT, 2);
+      $xfer += $this->arrayEntry->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->mapEntry !== null) {
+      if (!is_object($this->mapEntry)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('mapEntry', TType::STRUCT, 3);
+      $xfer += $this->mapEntry->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->structEntry !== null) {
+      if (!is_object($this->structEntry)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('structEntry', TType::STRUCT, 4);
+      $xfer += $this->structEntry->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->unionEntry !== null) {
+      if (!is_object($this->unionEntry)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('unionEntry', TType::STRUCT, 5);
+      $xfer += $this->unionEntry->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userDefinedTypeEntry !== null) {
+      if (!is_object($this->userDefinedTypeEntry)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('userDefinedTypeEntry', TType::STRUCT, 6);
+      $xfer += $this->userDefinedTypeEntry->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TTypeDesc {
+  static $_TSPEC;
+
+  /**
+   * @var \TTypeEntry[]
+   */
+  public $types = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'types',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\TTypeEntry',
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['types'])) {
+        $this->types = $vals['types'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TTypeDesc';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::LST) {
+            $this->types = array();
+            $_size27 = 0;
+            $_etype30 = 0;
+            $xfer += $input->readListBegin($_etype30, $_size27);
+            for ($_i31 = 0; $_i31 < $_size27; ++$_i31)
+            {
+              $elem32 = null;
+              $elem32 = new \TTypeEntry();
+              $xfer += $elem32->read($input);
+              $this->types []= $elem32;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TTypeDesc');
+    if ($this->types !== null) {
+      if (!is_array($this->types)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('types', TType::LST, 1);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->types));
+        {
+          foreach ($this->types as $iter33)
+          {
+            $xfer += $iter33->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TColumnDesc {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $columnName = null;
+  /**
+   * @var \TTypeDesc
+   */
+  public $typeDesc = null;
+  /**
+   * @var int
+   */
+  public $position = null;
+  /**
+   * @var string
+   */
+  public $comment = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'columnName',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'typeDesc',
+          'type' => TType::STRUCT,
+          'class' => '\TTypeDesc',
+          ),
+        3 => array(
+          'var' => 'position',
+          'type' => TType::I32,
+          ),
+        4 => array(
+          'var' => 'comment',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['columnName'])) {
+        $this->columnName = $vals['columnName'];
+      }
+      if (isset($vals['typeDesc'])) {
+        $this->typeDesc = $vals['typeDesc'];
+      }
+      if (isset($vals['position'])) {
+        $this->position = $vals['position'];
+      }
+      if (isset($vals['comment'])) {
+        $this->comment = $vals['comment'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TColumnDesc';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->columnName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->typeDesc = new \TTypeDesc();
+            $xfer += $this->typeDesc->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->position);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->comment);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TColumnDesc');
+    if ($this->columnName !== null) {
+      $xfer += $output->writeFieldBegin('columnName', TType::STRING, 1);
+      $xfer += $output->writeString($this->columnName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->typeDesc !== null) {
+      if (!is_object($this->typeDesc)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('typeDesc', TType::STRUCT, 2);
+      $xfer += $this->typeDesc->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->position !== null) {
+      $xfer += $output->writeFieldBegin('position', TType::I32, 3);
+      $xfer += $output->writeI32($this->position);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->comment !== null) {
+      $xfer += $output->writeFieldBegin('comment', TType::STRING, 4);
+      $xfer += $output->writeString($this->comment);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TTableSchema {
+  static $_TSPEC;
+
+  /**
+   * @var \TColumnDesc[]
+   */
+  public $columns = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'columns',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\TColumnDesc',
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['columns'])) {
+        $this->columns = $vals['columns'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TTableSchema';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::LST) {
+            $this->columns = array();
+            $_size34 = 0;
+            $_etype37 = 0;
+            $xfer += $input->readListBegin($_etype37, $_size34);
+            for ($_i38 = 0; $_i38 < $_size34; ++$_i38)
+            {
+              $elem39 = null;
+              $elem39 = new \TColumnDesc();
+              $xfer += $elem39->read($input);
+              $this->columns []= $elem39;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TTableSchema');
+    if ($this->columns !== null) {
+      if (!is_array($this->columns)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('columns', TType::LST, 1);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->columns));
+        {
+          foreach ($this->columns as $iter40)
+          {
+            $xfer += $iter40->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TBoolValue {
+  static $_TSPEC;
+
+  /**
+   * @var bool
+   */
+  public $value = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'value',
+          'type' => TType::BOOL,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['value'])) {
+        $this->value = $vals['value'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TBoolValue';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->value);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TBoolValue');
+    if ($this->value !== null) {
+      $xfer += $output->writeFieldBegin('value', TType::BOOL, 1);
+      $xfer += $output->writeBool($this->value);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TByteValue {
+  static $_TSPEC;
+
+  /**
+   * @var int
+   */
+  public $value = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'value',
+          'type' => TType::BYTE,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['value'])) {
+        $this->value = $vals['value'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TByteValue';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::BYTE) {
+            $xfer += $input->readByte($this->value);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TByteValue');
+    if ($this->value !== null) {
+      $xfer += $output->writeFieldBegin('value', TType::BYTE, 1);
+      $xfer += $output->writeByte($this->value);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TI16Value {
+  static $_TSPEC;
+
+  /**
+   * @var int
+   */
+  public $value = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'value',
+          'type' => TType::I16,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['value'])) {
+        $this->value = $vals['value'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TI16Value';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::I16) {
+            $xfer += $input->readI16($this->value);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TI16Value');
+    if ($this->value !== null) {
+      $xfer += $output->writeFieldBegin('value', TType::I16, 1);
+      $xfer += $output->writeI16($this->value);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TI32Value {
+  static $_TSPEC;
+
+  /**
+   * @var int
+   */
+  public $value = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'value',
+          'type' => TType::I32,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['value'])) {
+        $this->value = $vals['value'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TI32Value';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->value);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TI32Value');
+    if ($this->value !== null) {
+      $xfer += $output->writeFieldBegin('value', TType::I32, 1);
+      $xfer += $output->writeI32($this->value);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TI64Value {
+  static $_TSPEC;
+
+  /**
+   * @var int
+   */
+  public $value = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'value',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['value'])) {
+        $this->value = $vals['value'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TI64Value';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->value);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TI64Value');
+    if ($this->value !== null) {
+      $xfer += $output->writeFieldBegin('value', TType::I64, 1);
+      $xfer += $output->writeI64($this->value);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TDoubleValue {
+  static $_TSPEC;
+
+  /**
+   * @var double
+   */
+  public $value = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'value',
+          'type' => TType::DOUBLE,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['value'])) {
+        $this->value = $vals['value'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TDoubleValue';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::DOUBLE) {
+            $xfer += $input->readDouble($this->value);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TDoubleValue');
+    if ($this->value !== null) {
+      $xfer += $output->writeFieldBegin('value', TType::DOUBLE, 1);
+      $xfer += $output->writeDouble($this->value);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TStringValue {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $value = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'value',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['value'])) {
+        $this->value = $vals['value'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TStringValue';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->value);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TStringValue');
+    if ($this->value !== null) {
+      $xfer += $output->writeFieldBegin('value', TType::STRING, 1);
+      $xfer += $output->writeString($this->value);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TColumnValue {
+  static $_TSPEC;
+
+  /**
+   * @var \TBoolValue
+   */
+  public $boolVal = null;
+  /**
+   * @var \TByteValue
+   */
+  public $byteVal = null;
+  /**
+   * @var \TI16Value
+   */
+  public $i16Val = null;
+  /**
+   * @var \TI32Value
+   */
+  public $i32Val = null;
+  /**
+   * @var \TI64Value
+   */
+  public $i64Val = null;
+  /**
+   * @var \TDoubleValue
+   */
+  public $doubleVal = null;
+  /**
+   * @var \TStringValue
+   */
+  public $stringVal = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'boolVal',
+          'type' => TType::STRUCT,
+          'class' => '\TBoolValue',
+          ),
+        2 => array(
+          'var' => 'byteVal',
+          'type' => TType::STRUCT,
+          'class' => '\TByteValue',
+          ),
+        3 => array(
+          'var' => 'i16Val',
+          'type' => TType::STRUCT,
+          'class' => '\TI16Value',
+          ),
+        4 => array(
+          'var' => 'i32Val',
+          'type' => TType::STRUCT,
+          'class' => '\TI32Value',
+          ),
+        5 => array(
+          'var' => 'i64Val',
+          'type' => TType::STRUCT,
+          'class' => '\TI64Value',
+          ),
+        6 => array(
+          'var' => 'doubleVal',
+          'type' => TType::STRUCT,
+          'class' => '\TDoubleValue',
+          ),
+        7 => array(
+          'var' => 'stringVal',
+          'type' => TType::STRUCT,
+          'class' => '\TStringValue',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['boolVal'])) {
+        $this->boolVal = $vals['boolVal'];
+      }
+      if (isset($vals['byteVal'])) {
+        $this->byteVal = $vals['byteVal'];
+      }
+      if (isset($vals['i16Val'])) {
+        $this->i16Val = $vals['i16Val'];
+      }
+      if (isset($vals['i32Val'])) {
+        $this->i32Val = $vals['i32Val'];
+      }
+      if (isset($vals['i64Val'])) {
+        $this->i64Val = $vals['i64Val'];
+      }
+      if (isset($vals['doubleVal'])) {
+        $this->doubleVal = $vals['doubleVal'];
+      }
+      if (isset($vals['stringVal'])) {
+        $this->stringVal = $vals['stringVal'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TColumnValue';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->boolVal = new \TBoolValue();
+            $xfer += $this->boolVal->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->byteVal = new \TByteValue();
+            $xfer += $this->byteVal->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->i16Val = new \TI16Value();
+            $xfer += $this->i16Val->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRUCT) {
+            $this->i32Val = new \TI32Value();
+            $xfer += $this->i32Val->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRUCT) {
+            $this->i64Val = new \TI64Value();
+            $xfer += $this->i64Val->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRUCT) {
+            $this->doubleVal = new \TDoubleValue();
+            $xfer += $this->doubleVal->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::STRUCT) {
+            $this->stringVal = new \TStringValue();
+            $xfer += $this->stringVal->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TColumnValue');
+    if ($this->boolVal !== null) {
+      if (!is_object($this->boolVal)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('boolVal', TType::STRUCT, 1);
+      $xfer += $this->boolVal->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->byteVal !== null) {
+      if (!is_object($this->byteVal)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('byteVal', TType::STRUCT, 2);
+      $xfer += $this->byteVal->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->i16Val !== null) {
+      if (!is_object($this->i16Val)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('i16Val', TType::STRUCT, 3);
+      $xfer += $this->i16Val->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->i32Val !== null) {
+      if (!is_object($this->i32Val)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('i32Val', TType::STRUCT, 4);
+      $xfer += $this->i32Val->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->i64Val !== null) {
+      if (!is_object($this->i64Val)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('i64Val', TType::STRUCT, 5);
+      $xfer += $this->i64Val->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->doubleVal !== null) {
+      if (!is_object($this->doubleVal)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('doubleVal', TType::STRUCT, 6);
+      $xfer += $this->doubleVal->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->stringVal !== null) {
+      if (!is_object($this->stringVal)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('stringVal', TType::STRUCT, 7);
+      $xfer += $this->stringVal->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TRow {
+  static $_TSPEC;
+
+  /**
+   * @var \TColumnValue[]
+   */
+  public $colVals = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'colVals',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\TColumnValue',
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['colVals'])) {
+        $this->colVals = $vals['colVals'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TRow';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::LST) {
+            $this->colVals = array();
+            $_size41 = 0;
+            $_etype44 = 0;
+            $xfer += $input->readListBegin($_etype44, $_size41);
+            for ($_i45 = 0; $_i45 < $_size41; ++$_i45)
+            {
+              $elem46 = null;
+              $elem46 = new \TColumnValue();
+              $xfer += $elem46->read($input);
+              $this->colVals []= $elem46;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TRow');
+    if ($this->colVals !== null) {
+      if (!is_array($this->colVals)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('colVals', TType::LST, 1);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->colVals));
+        {
+          foreach ($this->colVals as $iter47)
+          {
+            $xfer += $iter47->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TBoolColumn {
+  static $_TSPEC;
+
+  /**
+   * @var bool[]
+   */
+  public $values = null;
+  /**
+   * @var string
+   */
+  public $nulls = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'values',
+          'type' => TType::LST,
+          'etype' => TType::BOOL,
+          'elem' => array(
+            'type' => TType::BOOL,
+            ),
+          ),
+        2 => array(
+          'var' => 'nulls',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['values'])) {
+        $this->values = $vals['values'];
+      }
+      if (isset($vals['nulls'])) {
+        $this->nulls = $vals['nulls'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TBoolColumn';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::LST) {
+            $this->values = array();
+            $_size48 = 0;
+            $_etype51 = 0;
+            $xfer += $input->readListBegin($_etype51, $_size48);
+            for ($_i52 = 0; $_i52 < $_size48; ++$_i52)
+            {
+              $elem53 = null;
+              $xfer += $input->readBool($elem53);
+              $this->values []= $elem53;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->nulls);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TBoolColumn');
+    if ($this->values !== null) {
+      if (!is_array($this->values)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('values', TType::LST, 1);
+      {
+        $output->writeListBegin(TType::BOOL, count($this->values));
+        {
+          foreach ($this->values as $iter54)
+          {
+            $xfer += $output->writeBool($iter54);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->nulls !== null) {
+      $xfer += $output->writeFieldBegin('nulls', TType::STRING, 2);
+      $xfer += $output->writeString($this->nulls);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TByteColumn {
+  static $_TSPEC;
+
+  /**
+   * @var int[]
+   */
+  public $values = null;
+  /**
+   * @var string
+   */
+  public $nulls = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'values',
+          'type' => TType::LST,
+          'etype' => TType::BYTE,
+          'elem' => array(
+            'type' => TType::BYTE,
+            ),
+          ),
+        2 => array(
+          'var' => 'nulls',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['values'])) {
+        $this->values = $vals['values'];
+      }
+      if (isset($vals['nulls'])) {
+        $this->nulls = $vals['nulls'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TByteColumn';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::LST) {
+            $this->values = array();
+            $_size55 = 0;
+            $_etype58 = 0;
+            $xfer += $input->readListBegin($_etype58, $_size55);
+            for ($_i59 = 0; $_i59 < $_size55; ++$_i59)
+            {
+              $elem60 = null;
+              $xfer += $input->readByte($elem60);
+              $this->values []= $elem60;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->nulls);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TByteColumn');
+    if ($this->values !== null) {
+      if (!is_array($this->values)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('values', TType::LST, 1);
+      {
+        $output->writeListBegin(TType::BYTE, count($this->values));
+        {
+          foreach ($this->values as $iter61)
+          {
+            $xfer += $output->writeByte($iter61);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->nulls !== null) {
+      $xfer += $output->writeFieldBegin('nulls', TType::STRING, 2);
+      $xfer += $output->writeString($this->nulls);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TI16Column {
+  static $_TSPEC;
+
+  /**
+   * @var int[]
+   */
+  public $values = null;
+  /**
+   * @var string
+   */
+  public $nulls = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'values',
+          'type' => TType::LST,
+          'etype' => TType::I16,
+          'elem' => array(
+            'type' => TType::I16,
+            ),
+          ),
+        2 => array(
+          'var' => 'nulls',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['values'])) {
+        $this->values = $vals['values'];
+      }
+      if (isset($vals['nulls'])) {
+        $this->nulls = $vals['nulls'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TI16Column';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::LST) {
+            $this->values = array();
+            $_size62 = 0;
+            $_etype65 = 0;
+            $xfer += $input->readListBegin($_etype65, $_size62);
+            for ($_i66 = 0; $_i66 < $_size62; ++$_i66)
+            {
+              $elem67 = null;
+              $xfer += $input->readI16($elem67);
+              $this->values []= $elem67;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->nulls);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TI16Column');
+    if ($this->values !== null) {
+      if (!is_array($this->values)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('values', TType::LST, 1);
+      {
+        $output->writeListBegin(TType::I16, count($this->values));
+        {
+          foreach ($this->values as $iter68)
+          {
+            $xfer += $output->writeI16($iter68);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->nulls !== null) {
+      $xfer += $output->writeFieldBegin('nulls', TType::STRING, 2);
+      $xfer += $output->writeString($this->nulls);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TI32Column {
+  static $_TSPEC;
+
+  /**
+   * @var int[]
+   */
+  public $values = null;
+  /**
+   * @var string
+   */
+  public $nulls = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'values',
+          'type' => TType::LST,
+          'etype' => TType::I32,
+          'elem' => array(
+            'type' => TType::I32,
+            ),
+          ),
+        2 => array(
+          'var' => 'nulls',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['values'])) {
+        $this->values = $vals['values'];
+      }
+      if (isset($vals['nulls'])) {
+        $this->nulls = $vals['nulls'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TI32Column';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::LST) {
+            $this->values = array();
+            $_size69 = 0;
+            $_etype72 = 0;
+            $xfer += $input->readListBegin($_etype72, $_size69);
+            for ($_i73 = 0; $_i73 < $_size69; ++$_i73)
+            {
+              $elem74 = null;
+              $xfer += $input->readI32($elem74);
+              $this->values []= $elem74;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->nulls);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TI32Column');
+    if ($this->values !== null) {
+      if (!is_array($this->values)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('values', TType::LST, 1);
+      {
+        $output->writeListBegin(TType::I32, count($this->values));
+        {
+          foreach ($this->values as $iter75)
+          {
+            $xfer += $output->writeI32($iter75);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->nulls !== null) {
+      $xfer += $output->writeFieldBegin('nulls', TType::STRING, 2);
+      $xfer += $output->writeString($this->nulls);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TI64Column {
+  static $_TSPEC;
+
+  /**
+   * @var int[]
+   */
+  public $values = null;
+  /**
+   * @var string
+   */
+  public $nulls = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'values',
+          'type' => TType::LST,
+          'etype' => TType::I64,
+          'elem' => array(
+            'type' => TType::I64,
+            ),
+          ),
+        2 => array(
+          'var' => 'nulls',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['values'])) {
+        $this->values = $vals['values'];
+      }
+      if (isset($vals['nulls'])) {
+        $this->nulls = $vals['nulls'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TI64Column';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::LST) {
+            $this->values = array();
+            $_size76 = 0;
+            $_etype79 = 0;
+            $xfer += $input->readListBegin($_etype79, $_size76);
+            for ($_i80 = 0; $_i80 < $_size76; ++$_i80)
+            {
+              $elem81 = null;
+              $xfer += $input->readI64($elem81);
+              $this->values []= $elem81;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->nulls);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TI64Column');
+    if ($this->values !== null) {
+      if (!is_array($this->values)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('values', TType::LST, 1);
+      {
+        $output->writeListBegin(TType::I64, count($this->values));
+        {
+          foreach ($this->values as $iter82)
+          {
+            $xfer += $output->writeI64($iter82);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->nulls !== null) {
+      $xfer += $output->writeFieldBegin('nulls', TType::STRING, 2);
+      $xfer += $output->writeString($this->nulls);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TDoubleColumn {
+  static $_TSPEC;
+
+  /**
+   * @var double[]
+   */
+  public $values = null;
+  /**
+   * @var string
+   */
+  public $nulls = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'values',
+          'type' => TType::LST,
+          'etype' => TType::DOUBLE,
+          'elem' => array(
+            'type' => TType::DOUBLE,
+            ),
+          ),
+        2 => array(
+          'var' => 'nulls',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['values'])) {
+        $this->values = $vals['values'];
+      }
+      if (isset($vals['nulls'])) {
+        $this->nulls = $vals['nulls'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TDoubleColumn';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::LST) {
+            $this->values = array();
+            $_size83 = 0;
+            $_etype86 = 0;
+            $xfer += $input->readListBegin($_etype86, $_size83);
+            for ($_i87 = 0; $_i87 < $_size83; ++$_i87)
+            {
+              $elem88 = null;
+              $xfer += $input->readDouble($elem88);
+              $this->values []= $elem88;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->nulls);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TDoubleColumn');
+    if ($this->values !== null) {
+      if (!is_array($this->values)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('values', TType::LST, 1);
+      {
+        $output->writeListBegin(TType::DOUBLE, count($this->values));
+        {
+          foreach ($this->values as $iter89)
+          {
+            $xfer += $output->writeDouble($iter89);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->nulls !== null) {
+      $xfer += $output->writeFieldBegin('nulls', TType::STRING, 2);
+      $xfer += $output->writeString($this->nulls);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TStringColumn {
+  static $_TSPEC;
+
+  /**
+   * @var string[]
+   */
+  public $values = null;
+  /**
+   * @var string
+   */
+  public $nulls = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'values',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        2 => array(
+          'var' => 'nulls',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['values'])) {
+        $this->values = $vals['values'];
+      }
+      if (isset($vals['nulls'])) {
+        $this->nulls = $vals['nulls'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TStringColumn';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::LST) {
+            $this->values = array();
+            $_size90 = 0;
+            $_etype93 = 0;
+            $xfer += $input->readListBegin($_etype93, $_size90);
+            for ($_i94 = 0; $_i94 < $_size90; ++$_i94)
+            {
+              $elem95 = null;
+              $xfer += $input->readString($elem95);
+              $this->values []= $elem95;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->nulls);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('TStringColumn');
+    if ($this->values !== null) {
+      if (!is_array($this->values)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('values', TType::LST, 1);
+      {
+        $output->writeListBegin(TType::STRING, count($this->values));
+        {
+          foreach ($this->values as $iter96)
+          {
+            $xfer += $output->writeString($iter96);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->nulls !== null) {
+      $xfer += $output->writeFieldBegin('nulls', TType::STRING, 2);
+      $xfer += $output->writeString($this->nulls);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TBinaryColumn {
+  static $_TSPEC;
+
+  /**
+   * @var string[]
+   */
+  public $values = null;
+  /**
+   * @var string
+   */
+  public $nulls = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'values',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        2 => array(
+          'var' => 'nulls',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['values'])) {
+        $this->values = $vals['values'];
+      }
+      if (isset($vals['nulls'])) {
+        $this->nulls = $vals['nulls'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'TBinaryColumn';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::LST) {
+            $this->values = array(

<TRUNCATED>