Изменить идентификаторы выбора в Sql Query с помощью кальцита
Я хочу изменить запрос 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 ответ
SqlNode
объекты в списке выбора будут экземплярами SqlIdentifier
в этом случае. Так что вам придется бросить sqlNode
к SqlIdentifier
и тогда вы можете позвонить .setName(0, "NEW_NAME")
, После этого вы звоните unparse
на исходном корневом узле, чтобы получить новый запрос обратно.