Release History

Version Date Description
14.14.03 2017-02-23 Utility for MySQL enum suport
14.14.03 2017-02-08 Adding MySQL enum suport
14.14.01 2017-01-11 Removing the graph command
14.12.01 2016-12-24 Option to show weak associations
14.11.02 2016-12-20 Fix to support Teradata driver
14.11.01 2016-12-16 Fix to support Teradata driver
14.10.06 2016-10-29 Offline executable
14.10.05 2016-10-26 SQLite diagrams
14.10.04 2016-10-23 Loading JDBC drivers
14.10.03 2016-10-01 Formatting remarks in HTML
14.10.02 2016-09-17 Lint changes
14.10.01 2016-08-31 Configuration changes
14.09.03 2016-08-01 Do not show schema colors
14.09.02 2016-07-14 Optimization for Oracle primary keys
14.09.01 2016-06-29 Removing MariaDB custom implementation
14.08.02 2016-05-16 Better performance with Oracle
14.08.01 2016-05-04 Better performance with Oracle
14.07.08 2016-04-14 Removing a linter
14.07.07 2016-04-08 New output option
14.07.06 2016-03-26 Licenses
14.07.05 2016-03-19 Lint dispatch bug fixes
14.07.04 2016-03-16 Lint enhancements
14.07.03 2016-03-10 Lint enhancements
14.07.02 2016-02-27 Bug fix
14.06.05 2016-02-14 Bug fix
14.06.04 2016-02-14 Support for hidden columns
14.06.03 2016-02-10 Support for Oracle function-based indexes
14.06.02 2016-02-10 Performance improvements for Oracle
14.06.01 2016-02-08 Performance improvements
14.10.06 2016-02-03 Fixed logging
14.05.04 2015-12-03 Fixed weak references
14.05.03 2015-12-02 Quick dump
14.05.02 2015-11-26 Quoting Identifiers
14.05.01 2015-11-14 Logging
14.04.04 2015-10-31 Logging, tests and coverage
14.04.03 2015-10-19 More efficient IBM DB2 crawling
14.04.02 2015-10-11 Logging timing information
14.04.01 2015-10-11 Miscellaneous fixes.
14.03.03 2015-09-20 Faster retrieval of foreign keys.
14.03.02 2015-09-17 Enhancements to SchemaCrawler Lint.
14.03.01 2015-08-17 Enhancements to SchemaCrawler Lint.
14.02.02 2015-08-14 Enhancements to SchemaCrawler Lint.
14.02.01 2015-08-10 Enhancements to SchemaCrawler Lint.
14.01.02 2015-07-28 Bug fixes for connection URL.
14.01.01 2015-07-16 Java SE 8 support.
12.06.03 2015-03-27 Fixing links on website.
12.06.02 2015-03-26 Fixing links on website.
12.06.01 2015-03-24 Hiding empty tables, and links in HTML.
12.05.02 2015-03-17 Better identification of weak associations.
12.05.01 2015-03-14 Better identification of weak associations.
12.04.02 2015-02-10 Fix Oracle connection.
12.04.01 2015-01-18 Reverting SQLite JDBC driver.
12.03.02 2015-01-18 Better connection arguments.
12.03.01 2015-01-02 Supress remarks.
12.02.03 2014-12-25 Integration with Thymeleaf templating.
12.02.02 2014-12-24 More efficient execution and better logging.
12.02.01 2014-12-21 New output format with embedded graphs.
12.01.01 2014-11-27 Single distribution download, with support for all databases, as well as offline snapshot support.
11.02.01 2014-11-04
11.01.01 2014-09-21
10.10.05 2014-08-04
10.10.04 2014-07-27
10.10.03 2014-07-06
10.10.02 2014-07-02
10.10.01 2014-06-22
10.09.01 2014-05-14
10.08.05 2014-04-25
10.08.04 2014-04-03
10.08.03 2014-03-24
10.08.02 2013-12-28
10.08.01 2013-11-17
10.8 2013-11-10
10.7 2013-11-05
10.6 2013-10-30
10.5 2013-09-24
10.4 2013-07-24
10.3 2013-05-24
10.2 2013-05-21
10.1 2013-04-21
9.6 2013-03-08
9.5 2013-02-24
9.4 2013-02-02
9.3.2 2012-11-17
9.3.1 2012-11-3
9.3 2012-10-31
9.2 2012-10-21
9.1 2012-09-30
9.0 2012-09-08
8.17 2012-07-12
8.16 2012-06-20
8.15 2012-05-05
8.14 2012-04-08
8.12 2012-02-25
8.11 2012-02-18
8.10 2011-12-08
8.9 2011-12-08
8.8 2011-11-05
8.7 2011-09-05
8.6 2011-05-08
8.5.1 2011-01-28
8.5 2011-01-28
8.4 2010-12-23
8.3.3 2010-08-01
8.3.2 2010-08-01
8.3.1 2010-07-18
8.3 2010-07-15
8.2 2010-05-25
8.1 2010-02-28
8.0 2010-02-03
7.6 2009-12-03
7.5.1 2009-11-28
7.5 2009-11-25
7.4 2009-09-24
7.3.1 2009-09-24
7.3 2009-09-19
7.2 2009-08-21
7.1 2009-08-12
7.0 2009-07-10
6.4 2009-05-10
6.3 2009-05-08
6.2 2009-04-08
6.1 2009-03-29
6.0.2 2008-11-30
6.0.1 2008-10-30
6.0 2008-10-16
5.5 2008-02-28
5.4 2007-12-15
5.3 2007-11-15
5.2 2007-10-30
5.1 2007-08-05
5.0 2007-06-25
4.2 2007-01-07
4.1 2006-12-07
4.0 2006-12-03
3.8 2006-09-26
3.7 2006-06-12
3.6 2006-03-28
3.5 2006-03-06
3.4 2006-01-16
3.3 2005-11-03

Release 14.14.03 - 2017-02-23

Type Changes By
Java utility class to parse enum values from column.getAttribute("COLUMN_TYPE"), for MySQL. Sualeh Fatehi
Better error message for bad commands. Sualeh Fatehi

Release 14.14.03 - 2017-02-08

Type Changes By
To get the enum values from column.getAttribute("COLUMN_TYPE"), run SchemaCrawler for MySQL with -infolevel=maximum. Sualeh Fatehi
New SchemaCrawler for SQLite utility, Sualeh Fatehi

Release 14.14.01 - 2017-01-11

Type Changes By
The graph command is removed. Graphs are generated based on the output format. Sualeh Fatehi

Release 14.12.01 - 2016-12-24

Type Changes By
New command-line option to show weak associations, irrespective of the infolevel. Sualeh Fatehi
Changed the boolean property, schemacrawler.format.hide_weak_associations to schemacrawler.format.show_weak_associations, since weak associations are hidden by default in SchemaCrawler output. Also added a new command-line switch, -weakassociations to show weak associations. Weak associations now can be shown with any infolevel setting. Sualeh Fatehi

Release 14.11.02 - 2016-12-20

Type Changes By
Support for the Teradata JDBC driver. The Teradata JDBC driver does not follow JDBC specifications. It should throw a SQLFeatureNotSupportedException for getFunctions, or at the least a SQLException state HYC00 ("Optional feature not implemented"). Instead, it throws with a state of HY000 ("General error"). Sualeh Fatehi

Release 14.11.01 - 2016-12-16

Type Changes By
Show a better error message when a script file cannot be read. Sualeh Fatehi
Handle SQLException when retrieving JDBC driver information. Sualeh Fatehi
Extended copyright messages through 2017. Sualeh Fatehi

Release 14.10.06 - 2016-10-29

Type Changes By
Made OfflineSnapshotExecutable constructor public, so that offline snapshots can be loaded programatically. Sualeh Fatehi

Release 14.10.05 - 2016-10-26

Type Changes By
Fixed issue with generating SQLite diagrams. Sualeh Fatehi
Distribution now contains an example SQLite database. Sualeh Fatehi
Fail if the SQLite database does not exist. Sualeh Fatehi

Release 14.10.04 - 2016-10-23

Type Changes By
Fixed issue with loading of JDBC drivers. Sualeh Fatehi

Release 14.10.03 - 2016-10-01

Type Changes By
Fixed formatting of multi-line column remarks in HTML output. Sualeh Fatehi

Release 14.10.02 - 2016-09-17

Type Changes By
New lint to recommend that a surrogate key column be used as a primary key. Sualeh Fatehi
Fixed lint that checks foreign key and primry key data types. Sualeh Fatehi
Additional documentation on how to connect to Microsoft SQL Server with Windows authentication. Sualeh Fatehi

Release 14.10.01 - 2016-08-31

Type Changes By
Support for newlines in table and column comments. Sualeh Fatehi
Ability to read default configuration settings from the classpath, from a file called This file is distributed in the lib/ folder. Sualeh Fatehi
Removed command-line option -p to specify an additional configuration file. Sualeh Fatehi
Added documentation on how to do programmatic diff of schemas on the website. Added code examples to the website. Sualeh Fatehi

Release 14.09.03 - 2016-08-01

Type Changes By
A new configuration options <code>schemacrawler.format.no_schema_colors<code> if you do not want to show catalog and schema colors. Sualeh Fatehi

Release 14.09.02 - 2016-07-14

Type Changes By
Allow primary keys to be retrieved in bulk, to speed up Oracle execution. Sualeh Fatehi

Release 14.09.01 - 2016-06-29

Type Changes By
The MariaDB driver interferes with the use of the MySQL driver, so it is no longer distributed. Sualeh Fatehi
Fixing null pointer exception for table types, by introducing an unknown table type. Sualeh Fatehi

Release 14.08.02 - 2016-05-16

Type Changes By
Adding hidden columns in a separate list, accessed with a new method, Table.getHiddenColuns(). Sualeh Fatehi
Allow table constraint definitions to be obtained separately from table constraint information. Sualeh Fatehi

Release 14.08.01 - 2016-05-04

Type Changes By
Improved performance with Oracle, by substituting schemas. Sualeh Fatehi

Release 14.07.08 - 2016-04-14

Type Changes By
Removing linter for surrogate keys, since it is of dubious value. Sualeh Fatehi

Release 14.07.07 - 2016-04-08

Type Changes By
Added a new boolean property, schemacrawler.format.hide_weak_associations, to hide weak associations in SchemaCrawler output. Sualeh Fatehi

Release 14.07.06 - 2016-03-26

Type Changes By
Making SchemaCrawler available under the Eclipse Public License, in addition to the GPL and LGPL. Sualeh Fatehi
Fixing ability to run SQL from the command-line. Sualeh Fatehi

Release 14.07.05 - 2016-03-19

Type Changes By
More detailed examples of how to use the SchemaCrawler API from script. Sualeh Fatehi
Fixing a bug with the default linter threshold. Sualeh Fatehi

Release 14.07.04 - 2016-03-16

Type Changes By
Lint enhancements to dispatch. Sualeh Fatehi

Release 14.07.03 - 2016-03-10

Type Changes By
Add details of lints that were dispatched, before the dispatch takes place. Sualeh Fatehi

Release 14.07.02 - 2016-02-27

Type Changes By
Support for Compact Profile 2. Sualeh Fatehi
Adding dispatch strategies for lint. This allows the SchemaCrawler command-line to fail with an exit code from the command-line when there are too many lints. Sualeh Fatehi

Release 14.06.05 - 2016-02-14

Type Changes By
Bug fix for bug while retrieving metadata. Sualeh Fatehi

Release 14.06.04 - 2016-02-14

Type Changes By
Complete support for Oracle hidden columns. Hidden columns are indicated with Table.isHidden(). Similarly, generated columns (including Oracle function-based columns) are indicated with Table.isGenerated(). You can get a complete list of all table columns, including hidden columns, with Table.getColumns(), if you have used the "maximum" schema info-level. Sualeh Fatehi

Release 14.06.03 - 2016-02-10

Type Changes By
Support for Oracle function-based indexes. Sualeh Fatehi

Release 14.06.02 - 2016-02-10

Type Changes By
Distributing correct versions of JDBC driver jars. Sualeh Fatehi
Performance boost by using Oracle data dictionary query for table indexes. Idea courtesy of Patric Rufflar. Sualeh Fatehi

Release 14.06.01 - 2016-02-08

Type Changes By
Added table row counts in output and diagrams. Use schemacrawler.format.show_row_counts=true in the configuration file. Sualeh Fatehi
Significant performance improvements in Java code, especially related to logging. Idea courtesy of Patric Rufflar. Sualeh Fatehi
Performance boost by using Oracle data dictionary query for table columns. Idea courtesy of Patric Rufflar. Sualeh Fatehi

Release 14.10.06 - 2016-02-03

Type Changes By
Fixed logging for features that the JDBC driver does not support. Sualeh Fatehi
Added utility to filter tables based on "raw" name. Sualeh Fatehi
Updating JDBC drivers and dependencies. Sualeh Fatehi

Release 14.05.04 - 2015-12-03

Type Changes By
Fixed weak references, and logging for offline databases. Sualeh Fatehi

Release 14.05.03 - 2015-12-02

Type Changes By
Added new quickdump command, which works with -infolevel=minimum, though row order is not guaranteed. Sualeh Fatehi

Release 14.05.02 - 2015-11-26

Type Changes By
Externalized logic to quote and unquote database object identifiers. Sualeh Fatehi

Release 14.05.01 - 2015-11-14

Type Changes By
Fix default log level. Sualeh Fatehi
Fix who uses SchemaCrawler list. Sualeh Fatehi
Fix database plugin archetype. Sualeh Fatehi
Sealing internal packages. Sualeh Fatehi

Release 14.04.04 - 2015-10-31

Type Changes By
Fix for retrieving PostgreSQL triggers. Sualeh Fatehi
More efficient table column retrieval in IBM DB2. Sualeh Fatehi
Added tests for unique constraints, and user-defined data types. Sualeh Fatehi
Fixed output for base data-types. Sualeh Fatehi

Release 14.04.03 - 2015-10-19

Type Changes By
Overrides to foreign key retrieval, for more efficient IBM DB2 crawling. Sualeh Fatehi

Release 14.04.02 - 2015-10-11

Type Changes By
Detailed timing information in logs. Sualeh Fatehi

Release 14.04.01 - 2015-10-11

Type Changes By
Fixing broken -urlx switch. Sualeh Fatehi
Reworked command-line processing, and database plugins. Sualeh Fatehi
Removed Apache Derby database plugin. Apache Derby is now supported using a database URL only. Sualeh Fatehi
Added MariaDB database plugin. Sualeh Fatehi

Release 14.03.03 - 2015-09-20

Type Changes By
An attempt at faster retrieval of foreign keys in Oracle. Sualeh Fatehi

Release 14.03.02 - 2015-09-17

Type Changes By
Better excludes for system schemas in Oracle. Sualeh Fatehi
Added ability to report on tables causing a cycle in a lint, using Tarjan's algorithm. Sualeh Fatehi

Release 14.03.01 - 2015-08-17

Type Changes By
Added detailed lint help, which is available from the command-line, using -help -command=lint. Sualeh Fatehi
Added configuration for LinterTooManyLobs. Sualeh Fatehi
Added new lint for specifying a list of reserved words for column names. Sualeh Fatehi
Added new lints for empty tables, tables where all columns are nullable, and tables with no primary keys. Sualeh Fatehi
New SchemaCrawlerUtility methods to get database system specific functionality. Sualeh Fatehi
Renaming CrawlHeaderInfo to CrawlInfo, and making it available in linters. Sualeh Fatehi
Fixed issues with sorting tables and routines alphabetically. Sorting alphabetically also sorts by object type. Sualeh Fatehi

Release 14.02.02 - 2015-08-14

Type Changes By
Added new lints for empty tables, tables where all columns are nullable, and tables with no primary keys. Sualeh Fatehi

Release 14.02.01 - 2015-08-10

Type Changes By
Added a custom SQL Lint, to allow for data lints. Sualeh Fatehi
New lint command-line option, -linterconfigs=<path> to specify the location of the linter XML configuration file. Sualeh Fatehi
Ability to specify table inclusion rules for lints. Sualeh Fatehi

Release 14.01.02 - 2015-07-28

Type Changes By
Bug fix for connecting to a database using a URL. Sualeh Fatehi

Release 14.01.01 - 2015-07-16

Type Changes By
SchemaCrawler is now supported on Java SE 8 or better only. Sualeh Fatehi
The SchemaCrawler project has been moved to GitHub. Sualeh Fatehi
Database specific overrides are not not in SchemaCrawlerOptions, and can be passed in along with the database connection if needed. Sualeh Fatehi
SchemaCrawler has a new project to demonstrate how to programatically diff schemas. Sualeh Fatehi
New -title command-line argument to show a custom title on output and diagrams. Sualeh Fatehi
Methods to get database objects by name are renamed to lookup, and return Optional. This allows calling code to handle nulls. Sualeh Fatehi
Sequences are color-coded by schema like the rest of the database objects. Sualeh Fatehi
Rename indices to indexes consistently in method names. Sualeh Fatehi
All references to parent objects are soft references, to allow for more efficient memory management and serialization. Sualeh Fatehi
All references to parent objects are soft references, to allow for more efficient memory management and serialization. Sualeh Fatehi
Shell scripts and sc.cmd renamed to and schemacrawler.cmd, since they clash with system utilities. Sualeh Fatehi

Release 12.06.03 - 2015-03-27

Type Changes By
Showing cardinality for tables that are filtered out. Sualeh Fatehi

Release 12.06.02 - 2015-03-26

Type Changes By
Fixing links on website. Sualeh Fatehi
Fixing diagram to show hanging arrows for referenced tables. Sualeh Fatehi

Release 12.06.01 - 2015-03-24

Type Changes By
Hyperlinks in HTML output from foreign keys to tables. Sualeh Fatehi
Lighter colors for tables, consistent in both HTML and graph output. Colors are assigned per catalog and schema. Sualeh Fatehi
Foreign key cardinality in HTML and text output. Sualeh Fatehi
New command-line option to remove empty tables (with no rows of data) from output -hideemptytables Sualeh Fatehi
Not showing database password in command-line logs. Sualeh Fatehi
Showing database sevrer and JDBC driver in logs. Sualeh Fatehi

Release 12.05.02 - 2015-03-17

Type Changes By
Better identification of weak associations. Sualeh Fatehi
Showing routine parameter names in JSON. Sualeh Fatehi

Release 12.05.01 - 2015-03-14

Type Changes By
Better identification of weak associations. Sualeh Fatehi

Release 12.04.02 - 2015-02-10

Type Changes By
Fix bug with connecting to Oracle. Sualeh Fatehi

Release 12.04.01 - 2015-01-18

Type Changes By
Reverting back to SQLite JDBC driver version 3.7.8, since that is the most stable, even if not readily available. Sualeh Fatehi
Refactored API for reading input files, such as scripts. Sualeh Fatehi
Made compressed file format the default for offline snapshots. Sualeh Fatehi

Release 12.03.02 - 2015-01-18

Type Changes By
Removed the -driver command-line option, since most JDBC drivers will register themselves automatically. Sualeh Fatehi
Made sure that a JDBC driver for a database server is available, before the -server command-line option is valid for that server. Sualeh Fatehi

Release 12.03.01 - 2015-01-02

Type Changes By
Added -noremarks command-line option to hide table and column remarks (or comments). Sualeh Fatehi
Using a stable version of the Xerial SQLite JDBC driver that is readily available on Maven Central. This does not support retrieving primary key names. Sualeh Fatehi
Removed built-in support for ant tasks, since there is not way to omit an option if one is not specified. Sualeh Fatehi
Changed copyright to 2015. Sualeh Fatehi
New parser for command-line options. Sualeh Fatehi

Release 12.02.03 - 2014-12-25

Type Changes By
Integration with Thymeleaf templating. Sualeh Fatehi
Flushing of output. Sualeh Fatehi

Release 12.02.02 - 2014-12-24

Type Changes By
Better logging of execution. Sualeh Fatehi
Quicker execution when routines are not output. Sualeh Fatehi

Release 12.02.01 - 2014-12-21

Type Changes By
New output format, htmlx, which embeds database diagrams into an HTML file. The diagrams are in SVG format. Sualeh Fatehi
Converted all HTML output to HTML5. Sualeh Fatehi
Null-checks now throw NullPointerException, instead of IllegalArgumentException. Sualeh Fatehi
Tested support of international character sets in table names and column names. Sualeh Fatehi
Converting filter classes to Predicate, to prepare for Java 8 support. Sualeh Fatehi
Converted all file operations to use Java Path, for better error handling. Sualeh Fatehi

Release 12.01.01 - 2014-11-27

Type Changes By
Collapsed distribution into a single distribution download, with Apache Ant Ivy scripts for downloading additional dependencies. A new -server command-line option will connect to a database with built-in support. Sualeh Fatehi
Added Maven archetypes for database server plugins. Sualeh Fatehi
Building Debian package as part of the main distributable. Sualeh Fatehi
Added support for the H2 Database Engine. Sualeh Fatehi
Changes direction of arrow for foreign keys in text output, to always point to the primary key. Sualeh Fatehi
Made consistent CSS stylesheets for examples, website, and HTML text output. Sualeh Fatehi
Fixed issues with retrieving functions from H2 Database Engine. Sualeh Fatehi
Standardized CSS styles between the website, example readmes, and SchemaCrawler HTML output. Sualeh Fatehi

Release 11.02.01 - 2014-11-04

Type Changes By
Added options to hide cardinality in graphs. Sualeh Fatehi
Added Maven archetypes for plugins. Sualeh Fatehi

Release 11.01.01 - 2014-09-21

Type Changes By
Changed Maven groupId to us.fatehi. Sualeh Fatehi
Renamed Database class to Catalog. Sualeh Fatehi
Changed all output formats to include table and column remarks whenever available. Sualeh Fatehi
Added command-line option options to show significant columns, such as primary and foreign key columns, and columns that are part of unique indexes. Use the `-infolevel=standard -command=brief` command-line options. Sualeh Fatehi
Indicate auto-incremented columns in graph and other output. Sualeh Fatehi

Release 10.10.05 - 2014-08-04

Type Changes By
Fixed bug with weak associations in diagrams being drawn twice. Sualeh Fatehi
Added more variations of diagrams to website. Sualeh Fatehi

Release 10.10.04 - 2014-07-27

Type Changes By
Fixed bug with cardinality in diagrams, when a foreign key is only a part of the primary key of a table. Sualeh Fatehi
Fixed -sequences command-line argument, and got it to work correctly with the properties file. Sualeh Fatehi

Release 10.10.03 - 2014-07-06

Type Changes By
Added support for include and exclude expressions for synonyms and sequences in config properties files. Sualeh Fatehi

Release 10.10.02 - 2014-07-02

Type Changes By
Added support for auto-incremented columns, and generated columns. Sualeh Fatehi

Release 10.10.01 - 2014-06-22

Type Changes By
Added support for sequences. Sualeh Fatehi

Release 10.09.01 - 2014-05-14

Type Changes By
Fixed table type to be based on a string, not an enum. See for details. Sualeh Fatehi
Changed the object inheritance of a privilege, so that it is not a database object. Sualeh Fatehi

Release 10.08.05 - 2014-04-25

Type Changes By
Fixed lint "foreign key with no index" to look at primary keys as well. Sualeh Fatehi
Fixed bug #31,, for loading XML databases. Sualeh Fatehi
Fixed MySQL connection issue, by removing URL parameter "useInformationSchema=true" so that MySQL's buggy metadata provider is not used. This provider does not honor mixed-case tables names. Sualeh Fatehi

Release 10.08.04 - 2014-04-03

Type Changes By
Column sort options sort columns in dumps also. Sualeh Fatehi
Added generation date to database diagram. Sualeh Fatehi

Release 10.08.03 - 2014-03-24

Type Changes By
Made extra columns provided in all information schema views available as attributes of SchemaCrawler Java objects. Sualeh Fatehi
Added table definition metadata for Oracle. Sualeh Fatehi
Allow for code to be executed before and after the crawl. This is in the form of pre- and post- executables. Sualeh Fatehi
Added foreign key definition metadata for Oracle. Sualeh Fatehi
Fixed DDL metadata for Oracle, so that it is portable. Sualeh Fatehi
Converted code to Git. Sualeh Fatehi

Release 10.08.02 - 2013-12-28

Type Changes By
Updated copyright notices. Sualeh Fatehi
Fixed javadocs, using standard Java 7 stylesheet. Sualeh Fatehi

Release 10.08.01 - 2013-11-17

Type Changes By
Trim all table names, to allow Informix to match correctly. Sualeh Fatehi

Release 10.8 - 2013-11-10

Type Changes By
Providing richer information about table constraints, including details of constrained columns. Sualeh Fatehi

Release 10.7 - 2013-11-05

Type Changes By
Providing richer information about table constraints. Renaming check constraints to table constraints. Sualeh Fatehi
Worked abound ArrayIndexOutOfBoundsException in MySQL connector with connector 5.1.26 and server version 5.0.95. See Sualeh Fatehi

Release 10.6 - 2013-10-30

Type Changes By
Changed InclusionRule to an interface, to allow custom implementations. Sualeh Fatehi
Fixed lack of support for type maps by the Sybase IQ database driver. Sualeh Fatehi

Release 10.5 - 2013-09-24

Type Changes By
Fixed bug with table restrictions. Sualeh Fatehi
Support all command-line options in ant task. Sualeh Fatehi

Release 10.4 - 2013-07-24

Type Changes By
Fixed view definitions for PostgreSQL. Sualeh Fatehi
Fixed retrieving index metadata for tables, working around PostgreSQL bugs #3480 and #6253. Sualeh Fatehi
Added retrieving index definitions for PostgreSQL and Oracle. Sualeh Fatehi
Added retrieving view definitions for Apache Derby. Sualeh Fatehi

Release 10.3 - 2013-05-24

Type Changes By
Rework of the column data type classes, as well as a workaround for an Oracle JDBC driver bug with reporting data type information. Sualeh Fatehi

Release 10.2 - 2013-05-21

Type Changes By
New option to set output encoding format. The option is "schemacrawler.encoding.output" in the SchemaCrawler properties file. Default input and output encoding has been changed to UTF-8. Sualeh Fatehi
Support for showing trigger information in Sqlite. Sualeh Fatehi

Release 10.1 - 2013-04-21

Type Changes By
SchemaCrawler support for J2SE 7 only, since previous Java versions are deprecated. Converted the codebase over to use J2SE 7 constructs. Sualeh Fatehi
New command-line option, -only-matching, to show only matching tables, and does not show foreign keys that reference other non-matching tables. Modeled after the analogous grep option. Sualeh Fatehi
New option to set input encoding format for script files and templates. The option is "schemacrawler.encoding.input" in the SchemaCrawler properties file. Sualeh Fatehi
Renamed command-line option -table_types to -tabletypes. Sualeh Fatehi

Release 9.6 - 2013-03-08

Type Changes By
Fixed diagram generation on Linux when no GraphViz options are supplied. Sualeh Fatehi
Added trigger names to JSON output by default. Added new configuration variable, schemacrawler.format.hide_trigger_names to suppress trigger names in all output formats. Sualeh Fatehi
Added new -portablenames command-line option, to allow for easy comparison between databases, by hiding foreign key names, constraint names, trigger names, index and primary key names, and not showing the fully-qualified table name. Sualeh Fatehi

Release 9.5 - 2013-02-24

Type Changes By
Updated HTML generation to have captions consistently for all tables. Numeric data is right-aligned in HTML, and correctly reported in JSON as well. These changes affect other output formats as well. Sualeh Fatehi
Updated Oracle database connection URL to the new syntax. Sualeh Fatehi

Release 9.4 - 2013-02-02

Type Changes By
Fix for honoring text formatting options in GraphViz dot output. Sualeh Fatehi

Release 9.3.2 - 2012-11-17

Type Changes By
Fix for honoring sort options on JSON output. Sualeh Fatehi

Release 9.3.1 - 2012-11-3

Type Changes By
Fix for generating diagrams on Unix. Sualeh Fatehi

Release 9.3 - 2012-10-31

Type Changes By
Weak associations are returned sorted. Sualeh Fatehi
Added ability to specify additional command-line options for GraphViz, using either Java system properties, or environmental variables. Sualeh Fatehi

Release 9.2 - 2012-10-21

Type Changes By
Fixed Windows script, schemacrawler.cmd. Sualeh Fatehi
Better support for sqlite, including the latest database driver, reporting of foreign keys, and view definitions. Sualeh Fatehi
Updated the jTDS JDBC driver to 1.2.6, for Microsoft SQL Server. Sualeh Fatehi
Deprecated the getType() method on database objects. Sualeh Fatehi

Release 9.1 - 2012-09-30

Type Changes By
Added examples for Groovy, Ruby and Python scripting. Sualeh Fatehi
SchemaCrawler is now bundled as an OSGi jar. Sualeh Fatehi

Release 9.0 - 2012-09-08

Type Changes By
The API has changed from 8.x versions. All API calls return collections instead of arrays. Schemas are not containers, but tags for database objects. Tables and routines (stored procedures and functions) are available directly on the database, and there are new finders to search by schema. Sualeh Fatehi
Support for database functions has been added. All references to stored procedures in the code and documentation now refer to routines. Stored procedures and functions are treated in the same way, as routines. Sualeh Fatehi
SchemaCrawler now allows queries to be specified on the command-line. If a command is not recognized, or is not a named query, it is executed as if it is a query. Sualeh Fatehi
The output format includes trgger definitions as part of the schema, instead of as the detailed schema output. Sualeh Fatehi
Database connections have to be specified on the command-line, by providing the driver class name and URL. Database connections can no longer be defined in properties files. Sualeh Fatehi
There are new command-line options. -V, --version will print the SchemaCrawler version and exit. There are shorter and more standard (Unix-like) synonyms -u (for -user), -c (for -command), and -o (for -output). The -procedures switch has been renamed -routines. Sualeh Fatehi

Release 8.17 - 2012-07-12

Type Changes By
The HTML output format outputs valid HTML5 and CSS3, as valid XML. Sualeh Fatehi
JSON output supports all of the formatting options that the other text formats support. Sualeh Fatehi
A new method, getShortName(), get the unqualified name for columns and other dependent objects. Sualeh Fatehi
A new text format option, "schemacrawler.format.show_unqualified_names", shows the unqualified name in text output, for easier comparisons across different catalogs and schemas. Sualeh Fatehi

Release 8.16 - 2012-06-20

Type Changes By
Added support for synonyms. Synonyms are shown in SchemaCrawler output for IBM DB2, Oracle, and Microsoft SQL Server, as well as available for extension in other databases. Sualeh Fatehi

Release 8.15 - 2012-05-05

Type Changes By
Added distribution for Sybase IQ. Sualeh Fatehi

Release 8.14 - 2012-04-08

Type Changes By
Added new command-line switch to show parent and child tables, in addition to those selected by grep. Sualeh Fatehi

Release 8.12 - 2012-02-25

Type Changes By
Added ability to stream SchemaCrawler output. Sualeh Fatehi

Release 8.11 - 2012-02-18

Type Changes By
Added ability to configure SchemaCrawler linters. Sualeh Fatehi
Added a new lint for useless surrogate keys. Sualeh Fatehi
Added ability to tag tables and columns with additional metadata attributes from SQL queries. Sualeh Fatehi

Release 8.10 - 2011-12-08

Type Changes By
Added SchemaCrawler Lint as a separate report, with ability to add custom linters. Sualeh Fatehi
Added additional SchemaCrawler linters. Sualeh Fatehi
Added ability to extend SchemaCrawler with custom command. Sualeh Fatehi
Fixed issue with constraints with the same name in different schemas. Sualeh Fatehi

Release 8.9 - 2011-12-08

Type Changes By
Added SchemaCrawler Lint as a separate report, with ability to add custom linters. Sualeh Fatehi
Added additional SchemaCrawler linters. Sualeh Fatehi
Added ability to extend SchemaCrawler with custom command. Sualeh Fatehi
Fixed issue with constraints with the same name in different schemas. Sualeh Fatehi

Release 8.8 - 2011-11-05

Type Changes By
Added JSON and TSV output formats. Sualeh Fatehi
Moved SchemaCrawler Maven Plugin into a new SourceForge project. Sualeh Fatehi

Release 8.7 - 2011-09-05

Type Changes By
New INFORMATION_SCHEMA views to provide Oracle metadata details. Sualeh Fatehi
Update database driver versions. Sualeh Fatehi
Fixed bug #3392557 - NullPointer exception thrown when columns excluded in Oracle. Sualeh Fatehi
Fixed bug #3392976 - Exception retrieving tables: Could not retrieve indexes for Oracle schemas with $ in the name. Sualeh Fatehi
Fixed bug #3401752 - Attempt to locate database 'dbo' by name failed. Sualeh Fatehi

Release 8.6 - 2011-05-08

Type Changes By
New feature to chain, or run multiple SchemaCrawler commands using JavaScript. Sualeh Fatehi

Release 8.5.1 - 2011-01-28

Type Changes By
Re-organized command-line code, including grep command-line. Sualeh Fatehi

Release 8.5 - 2011-01-28

Type Changes By
Changed copyright to 2011. Sualeh Fatehi
Fixed grep. Sualeh Fatehi
Removed option to provide index info SQL. Sualeh Fatehi
Better unit test coverage. Restructuring of Eclipse projects. Sualeh Fatehi

Release 8.4 - 2010-12-23

Type Changes By
Simplified commands - list_objects is now simply list. Removed the -show_stored_procedures command-line option - simply use -proedures= Sualeh Fatehi
Fixed issue with obtaining PostgreSQL tables. Sualeh Fatehi
Fixed issue with obtaining Derby foreign keys. Sualeh Fatehi
Made -infolevel a required command-line argument. Sualeh Fatehi
Use Maven 3.0 in the build. Sualeh Fatehi

Release 8.3.3 - 2010-08-01

Type Changes By
Added color to headings in HTML output. Sualeh Fatehi
Fixed bug when remarks header was not shown if the table did not have remarks, but columns did. Sualeh Fatehi
Foreign keys show full column names in graphs, even when the table is excluded. Sualeh Fatehi

Release 8.3.2 - 2010-08-01

Type Changes By
Column remarks are printed along with table remarks. Sualeh Fatehi
Foreign keys show full column names in graphs, even when the table is excluded. Sualeh Fatehi

Release 8.3.1 - 2010-07-18

Type Changes By
Added new command-line option, -urlx, to pass JDBC URL properties to bundled distributions. Sualeh Fatehi
Added details on the "main" command-line in the how-to section of the website. Sualeh Fatehi

Release 8.3 - 2010-07-15

Type Changes By
Added new bundled distribution for IBM DB2. Sualeh Fatehi
Added new bundled distribution for HyperSQL 2.0.0. Sualeh Fatehi
Added support for spaces in schema and catalog names. Sualeh Fatehi
Changed the test database to HyperSQL 2.0.0. Changed the test data, and added more robust unit tests. Sualeh Fatehi

Release 8.2 - 2010-05-25

Type Changes By
Added support for spaces or reserved words in table, procedure, and column names. Sualeh Fatehi
Added new database lint to find column and table names with spaces or reserved words in them. Sualeh Fatehi
Added SchemaCrawler to the Sonatype Maven public repository. Added new Maven projects examples. Sualeh Fatehi
Table and procedure remarks are output with verbose output. Sualeh Fatehi
The Maven plug-in generates a database report that uses the same stylesheet as the rest of the Maven generated website. Sualeh Fatehi
Generated database diagrams are less "colorful". Sualeh Fatehi

Release 8.1 - 2010-02-28

Type Changes By
Added SchemaCrawler lint, to highlight potential normalization issues, such as incrementing column names, and other issues. A new -infolevel value, lint, was added. Sualeh Fatehi
Weak associations are now available only with SchemaCrawler lint. Sualeh Fatehi

Release 8.0 - 2010-02-03

Type Changes By
Added the -infolevel command-line switch to control the amount of database metadata retrieved by SchemaCrawler. Sualeh Fatehi
Create a command registry, which allows pluggable commands. Any command can be run from the main class. Sualeh Fatehi
Dropped the -catalogs command-line switch filtering catalogs. Dropped the concept of a catalog from the API. Databases now directly contain schemas. Sualeh Fatehi

Release 7.6 - 2009-12-03

Type Changes By
Fixed specification of Oracle SID using the -database command-line switch, as well as spcification of port number. Sualeh Fatehi
Fixed shell script classpath. Sualeh Fatehi

Release 7.5.1 - 2009-11-28

Type Changes By
Added methods to get imported and exported foreign keys and weak associations. Sualeh Fatehi

Release 7.5 - 2009-11-25

Type Changes By
Added a SchemaCrawlerInfo object to the database metadata, to provide the SchemaCrawler version number, and Java system properties. Sualeh Fatehi
Updates to all bundled database drivers. Sualeh Fatehi
Bug-fix for obtaining MySQL foreign keys. Sualeh Fatehi
Added ability to script the database, using JavaScript. A live connection is provided to the JavaScript context for this purpose. Sualeh Fatehi
Removed command-line switch, -schemapattern, and the schemapattern option. Use the -schemas command-line switch instead. Sualeh Fatehi
Added sections to SchemaCrawler output, to make it more readable. Sualeh Fatehi
Tables sort is done using graph algorithms, and includes cycle checks. Sualeh Fatehi

Release 7.4 - 2009-09-24

Type Changes By
Added new pre-packaged SchemaCrawler for Oracle. Sualeh Fatehi
Fixed issue with index sort order of primary key columns. Sualeh Fatehi
Updated website with new front page. Sualeh Fatehi

Release 7.3.1 - 2009-09-24

Type Changes By
Enhancement to the JavaSqlType class, to contain the SQL type group. New lookup by data-type name added to JavaSqlTypesUtility. Sualeh Fatehi
Removed method, getTypeClass(), from ColumnDataType. Sualeh Fatehi
Removed deprecated methods for grouping SQL data types (such as isReal()) from the ColumnDataType class. Sualeh Fatehi

Release 7.3 - 2009-09-19

Type Changes By
Added support for mapping of SQL data type to Java classes. This includes the new JavaSqlType class, and the JavaSqlTypesUtility. A new method, getTypeClass(), has been added to ColumnDataType. Sualeh Fatehi
Added SchemaCrawler for Apache Derby, that is packaged for Apache Derby. Sualeh Fatehi

Release 7.2 - 2009-08-21

Type Changes By
Better modeling of privileges and grants. Sualeh Fatehi
Bug fix for obtaining indexes and foreign keys with the Oracle driver. Sualeh Fatehi
Added natural sort order for tables, based on the foreign keys, and corresponding new configuration option, and command-line switch, -sorttables. Also added new API methods to get child and parent tables, based on the foreign keys. Sualeh Fatehi
Handle null schemas for databases that do not support schemas, such as MySQL. Sualeh Fatehi
Allow data dumps when tables contain binary objects, by fixing the SELECT sort order. Sualeh Fatehi

Release 7.1 - 2009-08-12

Type Changes By
Better log messages, including for database connections, and inclusion of table and columns in the output. Sualeh Fatehi
More efficient use of database connections, including a change to the Executable.execute method to take a database connection, rather than a data-source. Sualeh Fatehi
Ensure that the pooled connection is closed, rather than the original database connection. This allows SchemaCrawler to play well with pooled connections. Sualeh Fatehi

Release 7.0 - 2009-07-10

Type Changes By
Major restructuring of the API, with the introduction of a Database object that contains all of the database metadata, and containing catalog and schema objects. Sualeh Fatehi
To allow for more control on table selection, the -tables command-line parameter matches to the fully qualified table name, CATALOG.SCHEMA.TABLENAME. Similarly for the -routines command-line parameter. Sualeh Fatehi

Release 6.4 - 2009-05-10

Type Changes By
New pre-packaged distribution, SchemaCrawler for SQLite. Sualeh Fatehi
Enhanced algorithm for finding weak associations. Sualeh Fatehi

Release 6.3 - 2009-05-08

Type Changes By
If no commands are specified, defaults to standard_schema, which provides the most commonly needed details of the schema. Sualeh Fatehi
SchemaCrawler Grep functionality is built into the SchemaCrawler options, and the SchemaCrawler command-line. This means that all of the SchemaCrawler commands, including graphing, will use filtering and grep options. Sualeh Fatehi
SchemaCrawler command-line option help has been re-written. New command-line options are available. Sualeh Fatehi
SchemaCrawler can produce Graphviz DOT files to generate schema diagrams. Sualeh Fatehi

Release 6.2 - 2009-04-08

Type Changes By
A new feature to infer weak associations between tables, even if there is no foreign key. Ruby on Rails table schemes are supported, as well as other simple relationships. Table name prefixes are automatically detected. Sualeh Fatehi
Database diagram support using Graphviz. Primary keys are indicated in a darker color than other columns. Foreign keys are indicated with arrow connectors. Weak associations between tables are shown in dashed lines. Multiple output formats are supported. Support for Jung is dropped. Sualeh Fatehi

Release 6.1 - 2009-03-29

Type Changes By
Better reporting of ascending and descending index columns. This is an API change. Sualeh Fatehi
Better grep options, to allow searching through both tables and stored procedures. Sualeh Fatehi
Grep options default to excluding stored procedures. Sualeh Fatehi
Minor bug fixes for Sybase, including generating warnings when obtaining table column privileges, instead of failing. Sualeh Fatehi
New Windows script file for locating Java, and launching SchemaCrawler. Sualeh Fatehi
Reorganization of distribution, so that only a single SchemaCrawler jar file is distributed in all distributions. License distribution is also reorganized. Sualeh Fatehi

Release 6.0.2 - 2008-11-30

Type Changes By
Minor bug fixes for MySQL, where the schema name was being reported as null, causing an exception. Sualeh Fatehi

Release 6.0.1 - 2008-10-30

Type Changes By
Minor bug fixes for Oracle, where the data-type was a short instead of an integer. Sualeh Fatehi

Release 6.0 - 2008-10-16

Type Changes By
Changed the API so that there is a separation of concerns - the SchemaInfoLevel should be an option, not a CrawlHandler property. Sualeh Fatehi
Changed the API so the top level object is a catalog, which contains schemas. This means that there is full support for multiple schemas. Sualeh Fatehi
Added support for JavaScript scripting. Sualeh Fatehi

Release 5.5 - 2008-02-28

Type Changes By
Fixed bug that always reported an index as unique. Sualeh Fatehi
Fixed bug with primary key columns. Sualeh Fatehi
SchemaCrawler for Microsoft SQL Server to show procedures and triggers. Sualeh Fatehi
SchemaCrawler distribution for any database. Sualeh Fatehi

Release 5.4 - 2007-12-15

Type Changes By
Added new command-line switch, -schemapattern, for specifying schema patterns when a connection is specified from the command-line. Sualeh Fatehi
Added object attributes automatically, from unused columns in the metadata calls. Nothing goes to waste. Sualeh Fatehi
Added JDBC driver metadata, including driver properties, and separated those from the database system metadata. Sualeh Fatehi

Release 5.3 - 2007-11-15

Type Changes By
Made sure that all relevant license files are getting delivered. Sualeh Fatehi
Fixed bug in accessing foreign key update and delete rules on Oracle. Sualeh Fatehi
Fixed equals comparison on all schema objects, and added a unit test for equals. Sualeh Fatehi
Added an easier way to access foreign keys from the foreign key column itself Use isPartOfForeignKey(), and getReferencedColumn() on the Column class. Sualeh Fatehi
Externalized the wrapper for java.sql.Types into a new public class, schemacrawler.schema.SqlDataType. Sualeh Fatehi
Added the ability to get result-set metadata. Sualeh Fatehi
Changed schema info level from an enum into a class that can be used to specify details on what aspects of the schema need to be retrieved. Sualeh Fatehi

Release 5.2 - 2007-10-30

Type Changes By
A significant re-write of the internal command processing code. Sualeh Fatehi
Spring framework support for all of SchemaCrawler functionality, including integrations and grep. Sualeh Fatehi
New example for grep. Sualeh Fatehi
New example for using the Spring framework with SchemaCrawler. Sualeh Fatehi
Pre-packaged releases do not load config file, even if available. Sualeh Fatehi
Fixed Unix shell script for PostgreSQL. Sualeh Fatehi

Release 5.1 - 2007-08-05

Type Changes By
Simplified examples. Sualeh Fatehi
Executable for SchemaCrawler for Microsoft SQL Server and MySQL. Sualeh Fatehi
Commonly available SchemaCrawler command-line argument for setting the log level. Sualeh Fatehi

Release 5.0 - 2007-06-25

Type Changes By
API changed to use Java 5 constructs. Tested with Java 6. API is no longer Java 1.4 compatible. Sualeh Fatehi
Started SchemaCrawler Grep for MS SQL Server. Sualeh Fatehi
Fixed java.lang.AbstractMethodError with Java 6. Sualeh Fatehi

Release 4.2 - 2007-01-07

Type Changes By
Fixed null pointer exception with DB2. Sualeh Fatehi
Fixed error message on a bad command-line. Added a general -help option. Sualeh Fatehi
Added new schema grep functionality, that can search for tables and columns usng regular expressions. Sualeh Fatehi
Added new example for setting options programatically. Sualeh Fatehi
Added documentation for provding database connection options directly on the command-line. Sualeh Fatehi
Updated ant task to optionally take database connection options as arguments, instead of from the configuration file. Sualeh Fatehi

Release 4.1 - 2006-12-07

Type Changes By
Fixed bug [ 1610140 ] Sorting doesn't work. Sualeh Fatehi
Fixed output of standard data types. Also changed the configuration option name. Sualeh Fatehi
Fixed column output for tables and procedures that contain an underscore in their name. JDBC matches the underscore to a wildcard character. Sualeh Fatehi

Release 4.0 - 2006-12-03

Type Changes By
Added support for SQL standard INFORMATION_SCHEMA views. If equivalent SQL for the standard INFORMATION_SCHEMA view is specified, it is used to provide additional schema information such as check constraints, triggers, and view and procedure definitions. Sualeh Fatehi
Added support for get index information views. This SQL will be used in preference to the getIndexInfo JDBC method to allow for databases and drivers that do not support getIndexInfo due to permissioning issues. Sualeh Fatehi
Better output format for HTML and text. Sualeh Fatehi
Better handling of output file resources. Sualeh Fatehi
Better handling of database connection resources. Sualeh Fatehi
More information on the website, and better website usability. Sualeh Fatehi

Release 3.8 - 2006-09-26

Type Changes By
Added Maven 2.0 plugin for generation of schema reports Sualeh Fatehi
Added command-line option to provide database connection information Sualeh Fatehi
Worked around a bug in the Oracle driver as described in Sualeh Fatehi

Release 3.7 - 2006-06-12

Type Changes By
Added retrieval of database properties Sualeh Fatehi
Added retrieval of column data types, both system datatypes and UDTs Sualeh Fatehi
Added unit tests to ensure that the XHTML output is valid XML Sualeh Fatehi
Fixed bug with merge rows option Sualeh Fatehi
Fixed bug with appending output when multiple runs of SchemaCrawler append to the same output file Sualeh Fatehi
Fixed SQLException with Oracle Database 10g Express Edition driver on outputting views Sualeh Fatehi
Added XStream integration for XML serialization and deserialization Sualeh Fatehi
Added new command, verbose_schema, that can give all possible details of the schema Sualeh Fatehi
Obtain database system properties when the maximum schema command is used Sualeh Fatehi
Added integrations with FreeMarker for templated output Sualeh Fatehi
Removed Betwixt integration, since the required functionality is provided by XStream Sualeh Fatehi

Release 3.6 - 2006-03-28

Type Changes By
Added integrations with Velocity for templated output, and with JUNG for JPEG graph generation Sualeh Fatehi
Added new examples to demonstrate Velocity templating, and JUNG graphs Sualeh Fatehi
New command-line option to specify the output file name Sualeh Fatehi

Release 3.5 - 2006-03-06

Type Changes By
Added ability to retrieve column and table privileges Sualeh Fatehi
Added Betwixt mappings for XML serialization and de-serialization Sualeh Fatehi
Added Unix shell scripts for examples Sualeh Fatehi
Fixed bug with the ordering of primary key and index columns Sualeh Fatehi
Changed API - ColumnInfoLevel is called SchemaInfoLevel Sualeh Fatehi
Moved source repository to Subversion Sualeh Fatehi

Release 3.4 - 2006-01-16

Type Changes By
Correction of spelling of the "sort_alphabetically" option names Sualeh Fatehi
Refactoring of inhertance hierarchy of database objects, resulting in fewer equals, hashCode and compareTo implementations Sualeh Fatehi
Better HTML formatting for counts Sualeh Fatehi
Dirty reads are performed for counts and other operations Sualeh Fatehi
Sets the default value for table columns Sualeh Fatehi
Javadoc clean-up Sualeh Fatehi
Findbugs, checkstyle, and PMD code smells clean-up Sualeh Fatehi

Release 3.3 - 2005-11-03

Type Changes By
The ability to include as well as exclude tables using regular expressions. Sualeh Fatehi
The ability to include as well as exclude columns using regular expressions. Sualeh Fatehi
A new substitution variable, ${columns}, for use in database queries that iterate over tables. Sualeh Fatehi
New examples for executing database-specific and user-defined queries have been added. Sualeh Fatehi
Better output formatting for HTML dumps, and counts in text format. Sualeh Fatehi
New website. Sualeh Fatehi
Worked around an issue with the Sybase driver, that provides primary keys in a different order than most other drivers. Sualeh Fatehi
Improved logging, and made the log level in the configuration really work. Sualeh Fatehi

Back to top

Reflow Maven skin by Andrius Velykis.