Schema diff
Use jOOQ's schema diff tool to calculate the diff going from one schema version to another.
This is work in progress. Your help in improving our parser is greatly appreciated. See below how to report bugs.
-- Old schema version (in SQL)
-- New schema version (in SQL)
Output Dialect
No specific dialect
Aurora MySQL
Aurora PostgreSQL
BigQuery
ClickHouse
CockroachDB 20
CockroachDB 21
CockroachDB 22
CockroachDB 23
CockroachDB 24
CockroachDB (latest version)
Databricks
DB2 LUW 9
DB2 LUW 10
DB2 LUW 11
DB2 LUW (latest version)
Derby
DuckDB 1.2
DuckDB 1.4
DuckDB (latest version)
Exasol
Firebird 2.5
Firebird 3.0
Firebird 4.0
Firebird (latest version)
H2 1.4
H2 2.0
H2 (latest version)
HANA
HSQLDB
Informix
MariaDB 10.0
MariaDB 10.1
MariaDB 10.2
MariaDB 10.3
MariaDB 10.4
MariaDB 10.5
MariaDB 10.6
MariaDB 10.7
MariaDB 11.2
MariaDB 11.5
MariaDB (latest version)
MemSQL (SingleStore)
MySQL 5.6
MySQL 5.7
MySQL 8.0
MySQL 8.0.19
MySQL 8.0.20
MySQL 8.0.31
MySQL (latest version)
MS Access
Oracle 10g
Oracle 11g
Oracle 12c
Oracle 18c
Oracle 21c
Oracle 23ai
Oracle 26ai
Oracle (latest version)
PostgreSQL 9.3
PostgreSQL 9.4
PostgreSQL 9.5
PostgreSQL 10
PostgreSQL 11
PostgreSQL 12
PostgreSQL 13
PostgreSQL 14
PostgreSQL 15
PostgreSQL 16
PostgreSQL 17
PostgreSQL 18
PostgreSQL (latest version)
Redshift
Snowflake
Spanner
SQL Data Warehouse (Azure Synapse Analytics)
SQLite 3.25
SQLite 3.28
SQLite 3.30
SQLite 3.38
SQLite 3.39
SQLite 3.40
SQLite 3.45
SQLite (latest version)
SQL Server 2008
SQL Server 2012
SQL Server 2014
SQL Server 2016
SQL Server 2017
SQL Server 2022
SQL Server (latest version)
Sybase ASE 12.5
Sybase ASE 15.5
Sybase ASE 15.7
Sybase ASE 16.0
Sybase ASE (latest version)
Sybase SQL Anywhere
Teradata
Trino
Vertica
YugabyteDB (latest version)
YugabyteDB 2.9
YugabyteDB 2.25
jOOQ (Java)
JPQL (Java)
Keywords
lower case
UPPER CASE
Pascal Case
Identifier Case
Unmodified
lower case
lower case (if unquoted)
UPPER CASE
UPPER CASE (if unquoted)
Identifier Quoting
Always
Unmodified (default quoted)
Unmodified (default unquoted)
Never
Bind variables
Named
Indexed
Force Indexed
*How does it work?
The input dialect is a mixture of all of jOOQ's currently supported SQL dialects. The grammar can be found here . This works the same way as our translate tool .
We're interpreting both versions of your schema and then producing a set of SQL statements that would lead from one version to the other.
If you've found an error, or would like to suggest an improvement, please report it here, along with your input query: https://github.com/jOOQ/jOOQ/issues/new .