Discussed in #124
Originally posted by jim-gregorio February 7, 2023
Hello,
We are using tsql-parser as the foundation for SQL validation. When the following query is parsed it throws a null reference exception.
here is the call stack:
at TSQL.Expressions.Parsers.TSQLArgumentListParser.Parse(ITSQLTokenizer tokenizer)
at TSQL.Expressions.Parsers.TSQLValueExpressionParser.ParseNext(ITSQLTokenizer tokenizer)
at TSQL.Expressions.Parsers.TSQLSelectExpressionParser.Parse(ITSQLTokenizer tokenizer)
at TSQL.Elements.Parsers.TSQLSelectColumnParser.Parse(ITSQLTokenizer tokenizer)
at TSQL.Clauses.Parsers.TSQLSelectClauseParser.Parse(ITSQLTokenizer tokenizer)
at TSQL.Statements.Parsers.TSQLSelectStatementParser.Parse()
at TSQL.TSQLStatementReader.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
This can be reproduced using the following query:
select Stuff((Select ', ' + i.name from sysindexes i where i.id = sys.id order by i.name FOR XML PATH(''),TYPE).value('text()[1]','varchar(max)'),1,2,'') as 'indexes' from sysobjects sys where sys.name like 'DF%'
On SQL Server 2017 or later this can be rewritten to use the string_agg function instead of using for xml. However some servers are 2016 and cannot leverage this function.
Please let me know what you think this can and should be resolved.
Regards.
Discussed in #124
Originally posted by jim-gregorio February 7, 2023
Hello,
We are using tsql-parser as the foundation for SQL validation. When the following query is parsed it throws a null reference exception.
here is the call stack:
This can be reproduced using the following query:
select Stuff((Select ', ' + i.name from sysindexes i where i.id = sys.id order by i.name FOR XML PATH(''),TYPE).value('text()[1]','varchar(max)'),1,2,'') as 'indexes' from sysobjects sys where sys.name like 'DF%'On SQL Server 2017 or later this can be rewritten to use the string_agg function instead of using for xml. However some servers are 2016 and cannot leverage this function.
Please let me know what you think this can and should be resolved.
Regards.