Получить список полей произвольного SELECT-запроса

Имеется произвольный запрос SQL на выборку (строка). Как быстрее всего получить список полей, возвращаемых этим запросом? Запрос может возвращать пустой результат. В этом случае список полей тоже должен быть корректно получен. Можно это реализовать через mysqli + fetch_fields, но этот вариант неуниверсален (только для mysql) и без участия modx. Идеальный вариант = методами modx + универсально (для любой поддерживаемой modx СУБД) + без выполнения запроса (только парсинг запроса) Кто какие варианты может предложить?

Раз уж ни у кого нет вариантов, предложу своё универсальное решение: function func_getSQLFields($sql, $fullInfo = false, $withTablePrefix = true, $xpdo = null) {

    if($xpdo === null) { global $modx; $xpdo = &$modx; }
    $output = null;
    
    if(in_array($xpdo->getOption('dbtype'), array('mysql', 'sqlite'))) {
        if(strpos($sql, ' LIMIT ', 0) === false) { $sql = $sql.' LIMIT 0'; }
    }
    if(($pdoStatement = $xpdo->query($sql)) === false) {
        $modx->log(modX::LOG_LEVEL_ERROR, '['.__METHOD__.'] Ошибка при выполнении запроса: '.$sql);
    } else {
        $fieldsInfo = array();
        foreach(range(0, $pdoStatement->columnCount() - 1) as $columnIndex) {
            $fieldsInfo[] = (array)$pdoStatement->getColumnMeta($columnIndex);
        }
        if($fullInfo) {
            $output = $fieldsInfo;
        } else {
            $output = array();
            foreach($fieldsInfo as $fieldInfo) {
                $output[] = ($withTablePrefix? ((isset($fieldInfo['table']) && $fieldInfo['table'] !== '')? $fieldInfo['table'].'.': '').$fieldInfo['name']:
                                               $fieldInfo['name']);
            }
        }
    }
    return $output;
}