Мы интенсивно используем 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 - true
Фактический результат : isSuccess - false
Выполнение следующего запроса на сервере SQL работает: SELECT IIF ((IIF (1 = 1, 1, NULL)) IS NULL, 1, 0)
Таким образом, мы ожидаем, что парсер сможетчтобы разобрать и его.
Это известная ошибка?