JSqlParser выдаст исключение, когда функция udf не определена
Я использую JSqlParser
сделать простую модификацию имени таблицы, но она выдаст исключение, когда я использую некоторые udf-функции в выражениях. Как заставить его игнорировать проверку функции?
def replaceTableName(sql: String) = {
val select = CCJSqlParserUtil.parse(sql).asInstanceOf[Select]
val buffer = new java.lang.StringBuilder()
val expressionDeParser = new ExpressionDeParser() {
override def visit(tableColumn: Column) = {
if (tableColumn.getTable.getName != null && tmpTables.contains(resolveName(tableColumn.getTable.getName))) {
tableColumn.getTable().setName(resolveName(tableColumn.getTable().getName()))
}
super.visit(tableColumn)
}
}
val deparser = new SelectDeParser(expressionDeParser, buffer) {
override def visit(tableName: Table) {
if(tmpTables.contains(resolveName(tableName.getName)))
tableName.setName(resolveName(tableName.getName()))
super.visit(tableName)
}
}
expressionDeParser.setSelectVisitor(deparser)
expressionDeParser.setBuffer(buffer)
select.getSelectBody().accept(deparser)
buffer.toString
}
Этот код скину
Вызывается: net.sf.jsqlparser.parser.ParseException: обнаружен неожиданный токен: "current_date"
<K_TIME_KEY_EXPR>
в строке 1, столбец хх
Если мой вклад select * from table where date = sub_date(current_date('yyyyMMdd'),'1','yyyyMMdd');
sub_date
а также current_date
мои UDFS, чтобы получить вчерашнюю дату.