Изменить идентификаторы выбора в Sql Query с помощью кальцита - PullRequest
0 голосов
/ 31 октября 2018

Я хочу изменить SQL-запрос, используя Calcite. Например

SELECT values FROM data до

SELECT values as v FROM data

Я мог получить доступ к SqlNode для идентификатора выбора, используя реализацию SqlVisiter.

public Object visit(SqlCall sqlCall) {
    SqlNodeList selectList = ((SqlSelect) sqlCall).getSelectList();
    for (SqlNode sqlNode : selectList) {
        System.out.println(sqlNode.toString());
    }

Что мне делать, чтобы обновить SqlNode?

1 Ответ

0 голосов
/ 05 ноября 2018

Объекты SqlNode в списке выбора будут экземплярами SqlIdentifier в этом случае. Так что вам придется разыграть sqlNode до SqlIdentifier, а затем вы можете позвонить .setName(0, "NEW_NAME"). После этого вы вызываете unparse в исходном корневом узле, чтобы получить новый запрос.

...