Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Internal Parser Error when trying to parse (legit) syntax

Aberta
#55 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
35/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
csharp, sql
Domínio
compilers, databases

Direção de pesquisa

Comece pelo ponto de entrada Parser.Parser.Parse e pela instrução SQL e por ParseOptions fornecidos. Rastreie a falha por VersionedParserBase.Parse e SqlCodeDom.SqlCodeObject.SetParentPointers, usando a pilha de chamadas para identificar o objeto nulo. A tarefa estará concluída quando a consulta de grafo mostrada for analisada sem SqlParserInternalParserError e um teste de regressão a cobrir.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Using the below SMO version:

    <PackageReference Include="Microsoft.SqlServer.SqlManagementObjects" Version="161.46367.54" />

The below code throws SqlParserInternalParserError:

            var sql = @"SELECT * FROM n as n1, e, n as n2 WHERE MATCH (n1-(e)->n2)";

            Microsoft.SqlServer.Management.SqlParser.Parser.ParseOptions resultOptions;
            var res = Microsoft.SqlServer.Management.SqlParser.Parser.Parser.Parse(sql,
                new ParseOptions("GO",
                true,
                Microsoft.SqlServer.Management.SqlParser.Common.DatabaseCompatibilityLevel.Azure,
                Microsoft.SqlServer.Management.SqlParser.Common.TransactSqlVersion.Azure),
                out resultOptions);

Here is the associated call stack:

Unhandled exception. Microsoft.SqlServer.Management.SqlParser.SqlParserInternalParserError: Internal Parser Error
 ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.SetParentPointers()
   at Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.SetParentPointers()
   at Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.SetParentPointers()
   at Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.SetParentPointers()
   at Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlStatement.SetParentPointers()
   at Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.SetParentPointers()
   at Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.SetParentPointers()
   at Microsoft.SqlServer.Management.SqlParser.Parser.Internals.VersionedParserBase.Parse(Boolean isIncremental, String sql, SqlScript prevScript, ParseOptions options, ParseOptions& resultOptions)
   --- End of inner exception stack trace ---
   at Microsoft.SqlServer.Management.SqlParser.Parser.Internals.VersionedParserBase.Parse(Boolean isIncremental, String sql, SqlScript prevScript, ParseOptions options, ParseOptions& resultOptions)
   at Microsoft.SqlServer.Management.SqlParser.Parser.Parser.Parse(Boolean isIncremental, String sql, ParseResult prevResult, ParseOptions options, ParseOptions& resultOptions)
   at Microsoft.SqlServer.Management.SqlParser.Parser.Parser.Parse(String sql, ParseOptions options, ParseOptions& resultOptions)
Linguagem predominante
C#
Estrelas
143
Forks
28
Métricas de merge de PRs
Nenhum PR com merge em 30d

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de microsoft/sqlmanagementobjects

Todas as issues de microsoft/sqlmanagementobjects

Issues semelhantes

Mais issues de C#

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.