public function run($query = null)
{
$start = microtime(true);
$query = $query ?: $this->query;
$connection = $this->connection->getConnection();
$result = $query->run($connection);
$query = strval($this->query);
$time = $this->connection->getElapsedTime($start);
$this->connection->logQuery($query, [], $time);
return $this->nativeArray($result);
}