public function select($query, array $bindings=[], $fetchMode=null)
    {
        $fetchMode = $fetchMode === null
                     ? $this->getOption(static::FETCH_MODE)
                     : $fetchMode;

        $this->callBeforeListeners('select',[$query, $bindings]);

        $statement = $bindings
                     ? $this->prepared($query, $bindings, $fetchMode)
                     : $this->selectRaw($query, $fetchMode);

        $this->callAfterListeners('select',[$query, $bindings, $statement]);

        return new PDOResult($statement, $this);

    }