/**
  * {@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;
 }
 /**
  * {@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']));
 }