/** * Accepts a query string * * @param string $queryString * @param bool $throw * @throws ApiException * @return Cassandra\Rows */ public function query($queryString, $throw = false) { if (empty($this->cluster) || empty($this->session)) { throw new ApiException('Query failure - missing connection stream'); } $query = new Cassandra\SimpleStatement($queryString); try { $result = $this->session->execute($query); return $result; } catch (\Cassandra\Exception\RuntimeException $e) { LogException::e($e); if ($throw) { throw new ApiException('Query Failure', r_server); } } }
public function __destruct() { // Drop keyspace for integration test (may or may have not been created) if (!is_null($this->session)) { try { $statement = new SimpleStatement('DROP KEYSPACE "' . $this->keyspaceName . '"'); $this->session->execute($statement); } catch (Exception $e) { // no-op } } }
/** * Gets column key data, reads data from system.schema_columns * Need to have read access to this system table * @param string $columnName * @param string $tableName * @param string $keyspaceName * @return array */ protected function _getColumnKeyData($columnName, $tableName, $keyspaceName) { $statement = new SimpleStatement('SELECT type FROM system.schema_columns WHERE keyspace_name = ? AND columnfamily_name = ? AND column_name = ?'); $params = ['consistency' => \Cassandra::CONSISTENCY_LOCAL_ONE, 'arguments' => [$keyspaceName, $tableName, $columnName]]; $result = $this->_session->execute($statement, new ExecutionOptions($params)); if ($result[0]['type'] == 'partition_key') { return [true, true, false]; } if ($result[0]['type'] == 'clustering_key') { return [true, true, true]; } return [false, false, false]; }
/** * {@inheritDoc} */ public function find($storageName, $key) { $where = []; foreach ($key as $name => $value) { $where[] = $name . ' = ?'; } $stmt = $this->session->prepare('SELECT * FROM ' . $storageName . ' WHERE ' . implode(' AND ', $where)); $options = new ExecutionOptions(['arguments' => array_values($key)]); $result = $this->session->execute($stmt, $options); $rows = iterator_to_array($result); if (!isset($rows[0])) { throw new NotFoundException(); } $data = []; foreach ($rows[0] as $column => $value) { if (isset($key[$column])) { continue; } $data[$column] = $value; } return $data; }