LeptonTech.SqlParser 0.63.1-preview.4

This is a prerelease version of LeptonTech.SqlParser.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package LeptonTech.SqlParser --version 0.63.1-preview.4
                    
NuGet\Install-Package LeptonTech.SqlParser -Version 0.63.1-preview.4
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="LeptonTech.SqlParser" Version="0.63.1-preview.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="LeptonTech.SqlParser" Version="0.63.1-preview.4" />
                    
Directory.Packages.props
<PackageReference Include="LeptonTech.SqlParser" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add LeptonTech.SqlParser --version 0.63.1-preview.4
                    
#r "nuget: LeptonTech.SqlParser, 0.63.1-preview.4"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package LeptonTech.SqlParser@0.63.1-preview.4
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=LeptonTech.SqlParser&version=0.63.1-preview.4&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=LeptonTech.SqlParser&version=0.63.1-preview.4&prerelease
                    
Install as a Cake Tool

LeptonTech.SqlParser

Parser SQL para .NET: port em C# do sqlparser-rs (Rust), com o mesmo comportamento do original. Lê SQL de 16 dialetos, gera a AST, devolve o SQL como texto (inclusive formatado) e oferece visitors, reescrita e análise sintática.

  • netstandard2.0: roda no .NET Framework 4.8 e no .NET 8/10, sem dependências nativas nem pacotes de runtime.
  • Duas DLLs no mesmo pacote: LeptonTech.SqlParser.Core.dll (port fiel do Rust: tokenizer, dialetos, parser, AST) e LeptonTech.SqlParser.dll (API pública: SqlQueryParser, ToSql, visitors, análise).
  • A versão acompanha o sqlparser-rs: 0.63.x corresponde ao Rust v0.63. A 0.63.1-preview.4 inclui o main do Rust até o commit dacdbc9.
  • Namespaces LeptonTech.SqlParser (API pública) e LeptonTech.SqlParser.Core* (port fiel). Versões anteriores, nunca publicadas no nuget.org: até a 0.63.1-preview.2, LeptonTI.SqlParser, com os namespaces SqlParser e SqlParser.Core; na 0.63.1-preview.3, Lepton.SqlParser.
  • Código-fonte, changelog e documentação: github.com/lepton-tech/lepton-sqlparser-csharp.

Exemplo

using LeptonTech.SqlParser;                 // SqlQueryParser, SqlParseException, ToSql, visitors, análise
using LeptonTech.SqlParser.Core.Ast;        // Statement, SetExpr, Expr, ObjectName...
using LeptonTech.SqlParser.Core.Dialects;   // GenericDialect, PostgreSqlDialect, MsSqlDialect...

var parser = new SqlQueryParser();

// Dialeto padrão (GenericDialect), por instância ou por nome
var statements = parser.Parse("select a, b from t where x = 1");
var pg = parser.Parse("SELECT a::INT FROM t WHERE b ILIKE '%x%'", new PostgreSqlDialect());
var ms = parser.Parse("SELECT TOP 5 [nome] FROM [dbo].[clientes]", "mssql");

Console.WriteLine(statements.ToSql());              // SELECT a, b FROM t WHERE x = 1
Console.WriteLine(statements[0].ToSql(pretty: true)); // uma cláusula por linha, indentação de 2 espaços

// Erros com linha e coluna
if (!parser.TryParse("SELECT * FROM t WHERE x = = 1", out _, out var error))
{
    Console.WriteLine($"{error.Line}:{error.Column} {error.Message}");
    // 1:27 sql parser error: Expected: an expression, found: = at Line: 1, Column: 27
}

// Análise sintática
var tabelas = parser.Parse("SELECT * FROM a JOIN b ON a.id = b.id").GetReferencedTables(); // a, b

Também há SqlVisitor (ganchos PreVisit*/PostVisit* e ControlFlow), SqlRewriter (devolve uma árvore nova; a AST é imutável), atalhos com lambdas (VisitRelations, VisitExpressions, RewriteRelations...), GetReferencedColumns, GetReferencedFunctions, GetStatementKind e ParseWithComments.

Dialetos

generic, ansi, postgresql (postgres), mysql, mssql, sqlite, snowflake, bigquery, clickhouse, duckdb, databricks, hive, redshift, spark (sparksql), oracle e teradata, com as classes GenericDialect, AnsiDialect, PostgreSqlDialect, MySqlDialect, MsSqlDialect, SQLiteDialect, SnowflakeDialect, BigQueryDialect, ClickHouseDialect, DuckDbDialect, DatabricksDialect, HiveDialect, RedshiftSqlDialect, SparkSqlDialect, OracleDialect e TeradataDialect.

Compatibilidade

  • Consumidores com C# 7.3 (padrão em projetos antigos do .NET Framework) usam a biblioteca normalmente; with e init nos records exigem LangVersion 9 ou superior.
  • As diferenças conhecidas em relação ao Rust são poucas e de baixo impacto (classificação Unicode de identificadores sem aspas fora do ASCII comum, proteção de pilha em outra thread, ausência da feature bigdecimal). A lista completa (DIV-NNN) está em docs/port/divergencias.md, no repositório.
  • Árvores muito profundas (milhares de OR ou de UNION ALL): o parse, o ToSql() e os visitors funcionam, mas os ganchos dos visitors podem rodar em outra thread (não use controles de UI dentro deles), e ==/Equals/GetHashCode dos nós não têm proteção de pilha e podem derrubar o processo. Para comparar ASTs de origem desconhecida, compare ToSql().
  • Os símbolos de depuração (PDB portátil) vão embutidos nas DLLs.

Licença e atribuição

Apache License 2.0. Este pacote contém código traduzido do sqlparser-rs (Apache-2.0, The Apache Software Foundation) e não é afiliado nem endossado pela Apache Software Foundation. Os arquivos NOTICE, THIRD-PARTY-NOTICES.md e licenses/ (sqlparser-rs, SqlParser-cs, Unicode) vão dentro do pacote.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.63.1-preview.5 67 10/23/2026
0.63.1-preview.4 70 10/19/2026

Port of sqlparser-rs through commit dacdbc9 (after v0.63.0); public API phases 1 and 2. See CHANGELOG.md in the source repository.