Example #1
0
 /**
  * Return metadata
  * @return array
  */
 protected function _readMetadata()
 {
     $metadata = unpack('Nflags/Ncolumns_count', $this->read(8));
     $flags = $metadata['flags'];
     if ($flags & self::ROWS_FLAG_HAS_MORE_PAGES) {
         $metadata['page_state'] = parent::readBytes();
     }
     if (!($flags & self::ROWS_FLAG_NO_METADATA)) {
         $metadata['columns'] = [];
         if ($flags & self::ROWS_FLAG_GLOBAL_TABLES_SPEC) {
             $keyspace = $this->read(unpack('n', $this->read(2))[1]);
             $tableName = $this->read(unpack('n', $this->read(2))[1]);
             for ($i = 0; $i < $metadata['columns_count']; ++$i) {
                 $metadata['columns'][] = ['keyspace' => $keyspace, 'tableName' => $tableName, 'name' => $this->read(unpack('n', $this->read(2))[1]), 'type' => self::readType()];
             }
         } else {
             for ($i = 0; $i < $metadata['columns_count']; ++$i) {
                 $metadata['columns'][] = ['keyspace' => $this->read(unpack('n', $this->read(2))[1]), 'tableName' => $this->read(unpack('n', $this->read(2))[1]), 'name' => $this->read(unpack('n', $this->read(2))[1]), 'type' => self::readType()];
             }
         }
     }
     return $metadata;
 }