Почему Microsoft.SqlServer.TransactSql.ScriptDom.TSqlParser не может проанализировать простое допустимое выражение? - PullRequest
0 голосов
/ 27 сентября 2019

Мы интенсивно используем 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)

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

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

...