Почему Microsoft.SqlServer.TransactSql.ScriptDom.TSqlParser не может проанализировать простое допустимое выражение?

Мы активно используем Microsoft.SqlServer.TransactSql.ScriptDom для обработки некоторых сценариев SQL.

Насколько мы понимаем, парсер должен быть полностью верным.

Однако недавно мы обнаружили эту ошибку:

using Microsoft.SqlServer.TransactSql.ScriptDom;

var parser = new TSql150Parser(true);

string expr = @"IIF( (IIF(1 = 1, 1, NULL)) IS NULL, 1, 0)";

var res = parser.ParseExpression(new StringReader(expr), out var errors);

bool isSuccess = errors.Count == 0;

Ожидаемый результат: isSuccess верно

Фактический результат: isSuccess - false

Выполнение следующего запроса на сервере SQL работает: SELECT IIF( (IIF(1 = 1, 1, NULL)) IS NULL, 1, 0)

Таким образом, мы ожидаем, что парсер также сможет его проанализировать.

Это известная ошибка?

0 ответов

Другие вопросы по тегам