From 0e12b3fa6ee3eedbbc14bf48e611e9c7aba70a76 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Thu, 25 Jan 2018 16:31:12 +0100 Subject: [PATCH] [#7087] Support USE for SET SCHEMA in Derby and HSQLDB --- .../src/main/resources/org/jooq/web/grammar-3.11.txt | 5 ++++- jOOQ/src/main/java/org/jooq/DSLContext.java | 6 +++--- jOOQ/src/main/java/org/jooq/impl/DSL.java | 6 +++--- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 5 +++++ jOOQ/src/main/java/org/jooq/impl/SetSchema.java | 2 ++ 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.11.txt b/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.11.txt index 76e07e875e..d6af529761 100644 --- a/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.11.txt +++ b/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.11.txt @@ -171,7 +171,10 @@ renameStatement = 'RENAME' setCatalogStatement = 'SET CATALOG' catalogName ; -setSchemaStatement = 'SET SCHEMA' schemaName +setSchemaStatement = 'SET' ( + [ 'CURRENT' ] 'SCHEMA' +| 'CURRENT SQLID' +) [ '=' ] ( schemaName | stringLiteral ) ; useStatement = 'USE' ( catalogName | schemaName ) diff --git a/jOOQ/src/main/java/org/jooq/DSLContext.java b/jOOQ/src/main/java/org/jooq/DSLContext.java index badf593ec6..cccb2841cf 100644 --- a/jOOQ/src/main/java/org/jooq/DSLContext.java +++ b/jOOQ/src/main/java/org/jooq/DSLContext.java @@ -8488,7 +8488,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#schema(Name) */ - @Support({ H2, MARIADB, MYSQL, POSTGRES} ) + @Support({ DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) Query setSchema(String schema); /** @@ -8496,13 +8496,13 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#schema(Name) */ - @Support({ H2, MARIADB, MYSQL, POSTGRES} ) + @Support({ DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) Query setSchema(Name schema); /** * Set the current schema to a new value. */ - @Support({ H2, MARIADB, MYSQL, POSTGRES} ) + @Support({ DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) Query setSchema(Schema schema); // ------------------------------------------------------------------------- diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index 5b8aa3444c..2d6a7c1c63 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -6648,7 +6648,7 @@ public class DSL { * * @see DSL#schema(Name) */ - @Support({ H2, MARIADB, MYSQL, POSTGRES} ) + @Support({ DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) public static Query setSchema(String schema) { return dsl().setSchema(schema); } @@ -6658,7 +6658,7 @@ public class DSL { * * @see DSL#schema(Name) */ - @Support({ H2, MARIADB, MYSQL, POSTGRES} ) + @Support({ DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) public static Query setSchema(Name schema) { return dsl().setSchema(schema); } @@ -6666,7 +6666,7 @@ public class DSL { /** * Set the current schema to a new value. */ - @Support({ H2, MARIADB, MYSQL, POSTGRES} ) + @Support({ DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) public static Query setSchema(Schema schema) { return dsl().setSchema(schema); } diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index b1ec7beada..03b872fb4c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -1249,6 +1249,10 @@ final class ParserImpl implements Parser { if (parseKeywordIf(ctx, "CATALOG")) return parseSetCatalog(ctx); + else if (parseKeywordIf(ctx, "CURRENT SCHEMA")) + return parseSetSchema(ctx); + else if (parseKeywordIf(ctx, "CURRENT SQLID")) + return parseSetSchema(ctx); else if (parseKeywordIf(ctx, "GENERATOR")) return parseSetGenerator(ctx); else if (parseKeywordIf(ctx, "SCHEMA")) @@ -1271,6 +1275,7 @@ final class ParserImpl implements Parser { } private static final Query parseSetSchema(ParserContext ctx) { + parseIf(ctx, '='); return ctx.dsl.setSchema(parseSchemaName(ctx)); } diff --git a/jOOQ/src/main/java/org/jooq/impl/SetSchema.java b/jOOQ/src/main/java/org/jooq/impl/SetSchema.java index 695e00c3fb..5cf29f3d31 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SetSchema.java +++ b/jOOQ/src/main/java/org/jooq/impl/SetSchema.java @@ -77,7 +77,9 @@ final class SetSchema extends AbstractQuery { ctx.visit(K_USE).sql(' ').visit(schema); break; + case DERBY: case H2: + case HSQLDB: case POSTGRES: default: ctx.visit(K_SET).sql(' ').visit(K_SCHEMA).sql(' ').visit(schema);