Почему 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)
Таким образом, мы ожидаем, что парсер также сможет его проанализировать.
Это известная ошибка?