Query Structure Interface of JSqlParser


Keywords
qsi, sql, jsql, javacc, owner-greg
License
MIT
Install
Install-Package Qsi.JSql -Version 0.8.15

Documentation

QSI Unit Tests

Logo

The QSI is the pure C# Query Structure Interface.

Languages

Language Parser Repos
MySql MySQL Workbench source code(Antlr4) mysql-workbench
PostgreSql10 PostgreSQL server source code(yacc) libpg_query, ChakraCore
JSql JavaCC JSqlParser, IKVM
Oracle Qsi.JSql
SqlServer Microsoft.SqlServer.TransactSql.ScriptDom MSDN, NuGet
PhoenixSql Phoenix server source code(Antlr3) PhoenixSql
PrimarSql PrimarSql PrimarSql

Structure Compiler

It compiles the result structure and relation

based on semantic tree transformed by parser's for each language.

Status

Features MySql PostgreSql JSql Oracle SqlServer PhoenixSql PrimarSql
No table
Table access
Derived table
Derived table (Non-Alias)
Specify columns to table alias
Inline derived table
Table function
Table variable
Common table expression
Common table expression (Aliases)
Common table expression (Recursive)
Join tables
Join tables (Pivot columns)
Join tables (Natural)
Union many tables
Table pivot
Table unpivot
Trace view definition
Trace variable definition
Execute prepared table query
Call table procedure

Table Features

Done? Feature Example
No table
SELECT 1 AS a, '2' AS b
Column References
a 1 (literal)
b '2' (literal)
Table access
-- table : id, name
SELECT * FROM table
Column References
id table.id
name table.name
Derived table
-- table : id, name
SELECT * FROM
    (SELECT * FROM table) AS alias
Column References
id alias.id
table.id
name alias.name
table.name
Derived table (Non-Alias)
-- table : id, name
SELECT * FROM
    (SELECT * FROM table)
Column References
id derived.id
table.id
name derived.name
table.name
Specify columns to table alias
-- table : id, name
SELECT * FROM table AS alias(a, b)
Column References
a alias.a
table.id
b alias.b
table.name
Inline derived table
SELECT * FROM
    (
        VALUES (1, 2), (3, 4)
    ) AS inline_table(a, b)
Column References
a inline_table.a
1 (literal)
3 (literal)
b inline_table.b
2 (literal)
4 (literal)
Table function
-- TODO
Table variable
-- TODO
Common table expression
WITH cte AS (SELECT 1 AS n)
SELECT * FROM cte
Column References
n 1 (literal)
Common table expression (Aliases)
WITH cte (n) AS (SELECT 1)
SELECT * FROM cte
Column References
n 1 (literal)
Common table expression (Recursive)
WITH RECURSIVE cte AS (
    SELECT 1 AS n
    UNION ALL
    SELECT n + 1 FROM cte WHERE n < 10
)
SELECT * FROM cte
Column References
n 1 (literal)
cte.n (recursive)
Join tables
-- left_table : name, uid
-- right_table : age, uid
SELECT * FROM
    left_table l
    JOIN right_table r ON l.uid = r.uid
Column References
name left_table.name
uid left_table.uid
age right_table.age
uid right_table.uid
Join tables (Pivot columns)
-- left_table : name, uid
-- right_table : age, uid
SELECT * FROM
    left_table
    JOIN right_table USING (uid)
Column References
uid left_table.uid
right_table.uid
name left_table.name
age right_table.age
Union many tables
SELECT a FROM first_table
UNION ALL
SELECT b FROM second_table
Column References
a first_table.a
second_table.b
Table pivot
-- TODO
Table unpivot
-- TODO
Trace view definition
-- table_view : a, b
-- table : id, name
SELECT * FROM table_view
Column References
a table_view.a
table.id
b table_view.b
table.name
Trace variable definition
-- TODO
Execute prepared table query
-- TODO
Call table procedure
-- TODO

Development

Requirements

  • PowerShell
  • .NET Core 3.1
  • Java >= 1.8

Command

Setup

PS> cd ./qsi
PS> ./Setup.ps1

Publish

PS> cd ./qsi
PS> ./Publish.ps1 <VERSION> [-Mode <PUBLISH_MODE>]
  • <VERSION>

    Specifies the package version.

    Version must be greater than the latest version tag on git.

  • -Mode <PUBLISH_MODE>

    Specifies the publish mode.

    PUBLISH_MODE Action
    Publish(Default) Publish packages to NuGet, GitHub repositories
    Local Publish packages to local repository
    Archive Build packages to ./qsi/Publish

Debugger

It supports abstract syntax trees and semantic trees, and a debugger that can debug compilation results.

Preview

Run

$ cd qsi/Qsi.Debugger
$ dotnet run