private function _define_column_types(\PDOStatement $result)
    {
        $columns = array();
        $intTypes = array('int', 'integer', 'long', 'tiny', 'smallint', 'int4');

        try {
            for ($i = 0; $i < $result->columnCount(); ++$i) {
                $meta = $result->getColumnMeta($i);
                if ($meta && $meta['name'] != '[]') {
                    $metaType = strtolower($meta['native_type']);
                    $pdoType = $meta['pdo_type'];
                    if (in_array($pdoType, array(\PDO::PARAM_STR, \PDO::PARAM_LOB))) {
                        $metaType = 'string';
                    } elseif (in_array($metaType, $intTypes)) {
                        $metaType = 'integer';
                    } elseif ($pdoType === \PDO::PARAM_NULL) {
                        $metaType = 'null';
                    }
                    $columns[$meta['name']] = $metaType;
                }
            }
        } catch (\PDOException $e) {
        }

        return $columns;
    }