Skip to content

Technical FAQ

Common technical questions about General SQL Parser .NET. If you can't find your answer, check our support channels.


Installation & dependencies

Does General SQL Parser depend on any third-party libraries?

Dependencies

General SQL Parser .NET (GSP) is completely self-contained and has zero third-party NuGet dependencies. The grammar tables for all 15 supported dialects ship as embedded resources inside the assembly.

System requirements:

  • Recommended: .NET 10 (LTS, supported through 2028-11)
  • Minimum: anything that consumes netstandard2.0 — including .NET Framework 4.6.1+, .NET 6+/8+/10, Mono, Unity, Xamarin
  • Not supported: .NET Core 3.x, .NET 5, EOL .NET Framework < 4.6.1

Is the .NET version compatible with .NET Standard?

Yes — multi-targets net10.0 and netstandard2.0

The library is published as a multi-target NuGet that picks the right TFM at install time:

  • .NET 10 consumers get the net10.0 build (full modern API surface)
  • .NET Framework 4.6.1+ and other classic consumers get the netstandard2.0 build (compatibility facade)

Database connectivity

Do I need to connect to a database to validate SQL syntax?

No database connection required

GSP can validate SQL syntax completely offline. There is no driver, connection string, or network call involved.

Key benefits:

  • No internet connection required
  • No database server needed
  • All 15 grammar tables included in the NuGet
  • Works in air-gapped environments
  • Fast local validation
1
2
3
4
5
using gudusoft.gsqlparser;

var parser = new TGSqlParser(EDbVendor.dbvoracle);
parser.sqltext = "SELECT * FROM employees WHERE salary > 50000";
int result = parser.parse(); // No DB connection involved

Which databases can GSP parse without connecting to them?

GSP supports 15 dialects for offline parsing:

  • DB2, Greenplum, Hive, Impala, Informix, MDX, MSSQL (T-SQL), MySQL, Netezza, Oracle (incl. PL/SQL), PostgreSQL, Redshift, Snowflake, Sybase, Teradata.

See the SQL Syntax Support tables for per-vendor coverage.


SQL syntax support

How comprehensive is GSP's SQL syntax support?

Our philosophy

The goal is not to support 100% of every vendor's SQL — that's a moving target. The goal is to support the SQL constructs that occur in real-world code, ideally 95%+ of what real users actually write.

Coverage by statement type:

SQL type Coverage Notes
SELECT ~98% CTEs, window functions, LATERAL, QUALIFY
INSERT/UPDATE/DELETE/MERGE ~95% Standard + vendor extensions
DDL (CREATE/ALTER/DROP) ~90% Most schema operations
Procedural (PL/SQL, T-SQL blocks) ~85% Procedures, functions, triggers, anonymous blocks
Vendor-specific extensions ~80% Newer features tracked release-by-release

When will new SQL syntax be supported?

We add new syntax based on user demand and practical usage. Typical timelines:

  • Critical fixes — 2–3 weeks for widely-used syntax or critical parse errors
  • Feature requests — 4–8 weeks for new syntax or vendor extensions
  • Complex features — 2–6 months for deep language features or major vendor updates

To request support:

  1. Submit a request
  2. Provide failing SQL examples
  3. Specify the vendor and version
  4. Describe your use case

For urgent requirements, custom development services are available. Contact info@sqlparser.com.


Performance & scalability

How fast is General SQL Parser .NET?

Performance characteristics

  • Simple queries: < 1 ms
  • Complex queries: 1–10 ms
  • Large stored procedures: 10–100 ms
  • Batch processing: 1000+ statements/sec for typical SELECTs (after parser warm-up)

See the Performance Considerations page for detailed numbers and tuning advice.

Optimisation tips:

1
2
3
4
5
6
7
8
// Reuse parser instances — construction is the slowest single operation
var parser = new TGSqlParser(EDbVendor.dbvoracle);
foreach (string sql in batch)
{
    parser.sqltext = sql;
    parser.parse();
    // Process results...
}

Can GSP handle large SQL files?

Yes — with the right pattern

For multi-MB files, parse statement-by-statement instead of loading the whole file into one parser.sqltext. See Performance Optimization.

1
2
3
4
5
6
foreach (string statement in SplitStatements(largeFile))
{
    parser.sqltext = statement;
    if (parser.parse() == 0)
        Process(parser.sqlstatements.get(0));
}

Is TGSqlParser thread-safe?

No — a single TGSqlParser instance is not thread-safe. For parallel workloads, give each thread its own parser, or pool them with ConcurrentBag<TGSqlParser>.


Support & troubleshooting

How do I get help with parse errors?

Before asking for help

  1. Check this FAQ and the main documentation
  2. Verify you're using the correct database vendor
  3. Try reducing the SQL to a minimal failing example
  4. Read the error handling guide

When reporting issues, include:

  • Full failing SQL statement
  • Database vendor and version
  • The error message from parser.Errormessage
  • Expected vs actual behaviour
  • GSP .NET version (check gudusoft.gsqlparser.dll -> Version or your csproj)

Contact methods:

What's included in technical support?

Support tiers

Free support: email-based, response time 2–3 weeks (not guaranteed).

Priority support: guaranteed response times, direct engineer access, custom development. Contact info@sqlparser.com for details.


Advanced usage

Can I extend GSP with custom SQL syntax?

Limited extensibility

GSP has limited built-in extensibility for custom SQL syntax. Options:

  1. Custom development — Gudu can extend GSP for your specific dialect
  2. Source modification — for enterprise customers with source access
  3. Preprocessing — transform your custom syntax before parsing
  4. Feature requests — submit broadly-applicable requests

Does GSP support SQL transformation and rewriting?

Yes — full AST access

GSP exposes the full AST for modification, plus a script writer (TScriptGenerator) to re-emit SQL.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
using gudusoft.gsqlparser;
using gudusoft.gsqlparser.stmt;

var parser = new TGSqlParser(EDbVendor.dbvoracle);
parser.sqltext = "SELECT * FROM old_table";
parser.parse();

var select = (TSelectSqlStatement)parser.sqlstatements.get(0);
// Modify the AST...
// Regenerate SQL via TScriptGenerator (see Advanced Features tutorial)

Common transformations:

  • Table/column renames (see the tableColumnRename demo)
  • Column removals (see removeColumn)
  • Condition removals (see removeCondition)
  • Join syntax conversion (see convert/joinConverter.cs)

Still need help?

Visit Support Centre Browse Tutorials Check How-to Guides