[hibernate-dev] HHH-2403 - import.sql improvement

Steve Ebersole steve at hibernate.org
Mon Nov 7 10:43:07 EST 2011

No!  That is not a good idea.  It introduces unnecessary loss of 
backwards compatibility.

Another option that is backwards compatible is to instead handle 
multi-line commands specially by introducing a "continuation" 
symbol/operator.  Think `\` on *nix.  The idea being that a line ending 
with '\' is considered to continue on the next line.

A more generic solution would be to introduce a contract for splitting 
up import.sql files into commands.  Something like:

interface ImportSqlCommandExtracter {
    public String[] extractCommands(InputStreamReader streamReader);

We could even supply 2 impls, one for "required semicolon as separator" 
and another for "continuation symbol".  And allow users to develop and 
supply their own for other situations.

On Sun 06 Nov 2011 06:57:12 AM CST, Łukasz Antoniak wrote:
> Welcome!
> Last time I have been trying to improve the way that Hibernate extracts
> statements from "import.sql" script. My intention was to support
> multiline SQL instructions (HHH-2403), quoted strings, multiline
> comments etc. After developing quite simple ANTLR-based parser, I have
> realized that right now semicolons are not mandatory (at the end of each
> SQL statement). If there is no separator character (e.g. ';') between
> statements, the only possibility to resolve HHH-2403 is to apply a full
> SQL parser. But supporting all different dialects would be quite
> difficult... Is it acceptable to change the code, so that each statement
> must be ended with a semicolon (branch 4.0)?
> You can see my work here:
> https://github.com/lukasz-antoniak/hibernate-core/commit/c11b881a8975502fa7b754391d10e789eaa101e6
> Regards,
> Lukasz Antoniak
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev

steve at hibernate.org

More information about the hibernate-dev mailing list