/JSqlParser

JSqlParser parses an SQL statement and translate it into a hierarchy of Java classes. The generated hierarchy can be navigated using the Visitor Pattern

Primary LanguageJavaApache License 2.0Apache-2.0

JSqlParser

Build Status Coverage Status Codacy Badge

PayPal donate button

Gitter

Look here for more information and examples: https://github.com/JSQLParser/JSqlParser/wiki.

License

JSqlParser is dual licensed under LGPL V2.1 and Apache Software License, Version 2.0.

News

  • breaking API change: merge of within group and over (window expressions)
  • Released version 1.1 of JSqlParser.
  • JSqlParser has now a build in checkstyle configuration to introduce source code conventions.
  • Released first major version 1.0 of JSqlParser.
  • Please test the actual 0.9.8-SNAPSHOT. It includes includes grammar refactorings or changes which eventually results in parse tree changes.
  • Version 0.9.7 released.
  • Version 0.9.6 released.
  • Version 0.9.5 released.
  • Please test the actual 0.9.5-SNAPSHOT. It includes some grammar refactorings which eventually results in parse tree changes.
  • Version 0.9.4 released.
  • Please test the actual SNAPSHOT, if there are problems using the extended identifier token.
  • Version 0.9.3 released.

More news can be found here: https://github.com/JSQLParser/JSqlParser/wiki/News.

JSqlParser

JSqlParser is a SQL statement parser. It translates SQLs in a traversable hierarchy of Java classes. JSqlParser is not limited to one database but provides support for a lot of specials of Oracle, SqlServer, MySQL, PostgreSQL ... To name some, it has support for Oracles join syntax using (+), PostgreSQLs cast syntax using ::, relational operators like != and so on.

Support

If you need help using JSqlParser feel free to file an issue or contact me.

Contributions

To help JSqlParsers development you are encouraged to provide

  • feedback
  • bugreports
  • pull requests for new features
  • improvement requests
  • fund new features

Also I would like to know about needed examples or documentation stuff.

Extensions in the latest SNAPSHOT version 1.2

  • support for more complex expressions within case expr when expr then expr end.
  • support for << and >> left and right shift operations
  • breaking API change: merge of within group and over (window expressions)
  • first support for use statements
  • first support for call statements
  • create table allows now quoted identifiers within primary key definition
  • introduced alias for subquery in combination with a pivot definition (this changes alias handling within the library for pivot sqls)
  • force the parser to fully parse a String using parseCondExpression or parseExpression

Extensions of JSqlParser releases

Building from the sources

As the project is a Maven project, building is rather simple by running:

mvn package

The project requires the following to build:

  • Maven
  • JDK 1.7 or later. The jar will target JDK 1.6, but the version of the maven-compiler-plugin that JsqlParser uses requires JDK 1.7+

This will produce the jsqlparser-VERSION.jar file in the target/ directory.

To build this project without using Maven, one has to build the parser by JavaCC using the CLI options it provids.

Source Code conventions

Recently a checkstyle process was integrated into the build process. JSqlParser follows the sun java format convention. There are no TABs allowed. Use spaces.

public void setUsingSelect(SubSelect usingSelect) {
    this.usingSelect = usingSelect;
    if (this.usingSelect != null) {
        this.usingSelect.setUseBrackets(false);
    }
}

This is a valid piece of source code:

  • blocks without braces are not allowed
  • after control statements (if, while, for) a whitespace is expected
  • the opening brace should be in the same line as the control statement

Maven Repository

JSQLParser is deployed at sonatypes open source maven repository. Starting from now I will deploy there. The first snapshot version there will be 0.8.5-SNAPSHOT. To use it this is the repository configuration:

<repositories>
     <repository>
         <id>jsqlparser-snapshots</id>
         <snapshots>
             <enabled>true</enabled>
         </snapshots>
         <url>https://oss.sonatype.org/content/groups/public/</url>
     </repository>
</repositories>

This repositories releases will be synched to maven central. Snapshots remain at sonatype.

And this is the dependency declaration in your pom:

<dependency>
	<groupId>com.github.jsqlparser</groupId>
	<artifactId>jsqlparser</artifactId>
	<version>1.1</version>
</dependency>