/** * * @param string $queryId * @param array $values * @return self */ public function appendQueryId($queryId, array $values = []) { $binary = pack('C', 1); $binary .= pack('n', strlen($queryId)) . $queryId; $binary .= Request::valuesBinary($values, !empty($this->_options['names_for_values'])); $this->_queryArray[] = $binary; return $this; }
/** * * @param string $queryId * @param array $values * @return self */ public function appendQueryId($queryId, array $values = []) { $binary = pack('C', 1); $binary .= pack('n', strlen($queryId)) . $queryId; $binary .= Request::valuesBinary($values); $this->_queryArray[] = $binary; return $this; }
/** * {@inheritdoc} */ public function executeQuery($query, array $params = array(), $types = array(), QueryCacheProfile $qcp = null) { if ($qcp !== null) { return $this->executeCacheQuery($query, $params, $types, $qcp); } $this->connect(); $logger = $this->_config->getSQLLogger(); if ($logger) { $logger->startQuery($query, $params, $types); } try { list($query, $params, $types) = SQLParserUtils::expandListParameters($query, $params, $types); $preparedData = $this->_conn->prepare($query); $strictValues = \Cassandra\Request\Request::strictTypeValues($params, $preparedData['metadata']['columns']); $stmt = $this->_conn->executeSync($preparedData['id'], $strictValues); $stmt->setMetadata($preparedData['result_metadata']); } catch (\Exception $ex) { throw DBALException::driverExceptionDuringQuery($this->_driver, $ex, $query, $this->resolveParams($params, $types)); } if ($logger) { $logger->stopQuery(); } return $stmt; }
/** * * @param Request\Request $request * @return Statement */ public function asyncRequest(Request\Request $request) { if ($this->_node === null) { $this->connect(); } $streamId = $this->_getNewStreamId(); $request->setStream($streamId); $this->_node->write($request->__toString()); return $this->_statements[$streamId] = new Statement($this, $streamId); }
public function getBody() { $body = pack('N', strlen($this->_cql)) . $this->_cql; $body .= Request::queryParameters($this->_consistency, $this->_values, $this->_options); return $body; }
/** * * @param int $consistency * @param array $values * @param array $options * @return string */ public static function queryParameters($consistency, array $values = [], array $options = []) { $flags = 0; $optional = ''; if (!empty($values)) { $flags |= Query::FLAG_VALUES; $optional .= Request::valuesBinary($values, !empty($options['names_for_values'])); } if (!empty($options['skip_metadata'])) { $flags |= Query::FLAG_SKIP_METADATA; } if (isset($options['page_size'])) { $flags |= Query::FLAG_PAGE_SIZE; $optional .= pack('N', $options['page_size']); } if (isset($options['paging_state'])) { $flags |= Query::FLAG_WITH_PAGING_STATE; $optional .= pack('N', strlen($options['paging_state'])) . $options['paging_state']; } if (isset($options['serial_consistency'])) { $flags |= Query::FLAG_WITH_SERIAL_CONSISTENCY; $optional .= pack('n', $options['serial_consistency']); } if (isset($options['default_timestamp'])) { $flags |= Query::FLAG_WITH_DEFAULT_TIMESTAMP; $bigint = new Type\Bigint($options['default_timestamp']); $optional .= $bigint->getBinary(); } if (!empty($options['names_for_values'])) { $flags |= Query::FLAG_WITH_NAMES_FOR_VALUES; } return pack('n', $consistency) . pack('C', $flags) . $optional; }
/** * {@inheritdoc} */ public function execute($params = null) { return $this->_conn->executeSync($this->_stmtPrepared['id'], Request::strictTypeValues(is_null($params) ? $this->_bindedValues : $params, $this->_stmtPrepared['metadata']['columns'])); }
/** * * @param Request\Request $request * @return Statement */ public function asyncRequest(Request\Request $request) { if ($this->connection === null) { $this->connect(); } $streamId = $this->_getNewStreamId(); $request->setStream($streamId); socket_write($this->connection, $request); return $this->_statements[$streamId] = new Statement($this, $streamId); }