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 b29c2940ad..76e07e875e 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 @@ -30,6 +30,7 @@ ddlStatement = | setCatalogStatement | setSchemaStatement | truncateStatement +| useStatement ; dmlStatement = @@ -173,6 +174,9 @@ setCatalogStatement = 'SET CATALOG' catalogName setSchemaStatement = 'SET SCHEMA' schemaName ; +useStatement = 'USE' ( catalogName | schemaName ) +; + truncateStatement = 'TRUNCATE TABLE' tableName [ 'CONTINUE IDENTITY' | 'RESTART IDENTITY' ] [ 'CASCADE' | 'RESTRICT' ] ; diff --git a/jOOQ/src/main/java/org/jooq/DSLContext.java b/jOOQ/src/main/java/org/jooq/DSLContext.java index c8a7fedc07..bdcd61e365 100644 --- a/jOOQ/src/main/java/org/jooq/DSLContext.java +++ b/jOOQ/src/main/java/org/jooq/DSLContext.java @@ -8461,31 +8461,27 @@ public interface DSLContext extends Scope , AutoCloseable { // XXX Session Statements // ------------------------------------------------------------------------- + /** + * Set the current catalog to a new value. + * + * @see DSL#catalog(Name) + */ + @Support({}) + Query setCatalog(String catalog); + /** + * Set the current catalog to a new value. + * + * @see DSL#catalog(Name) + */ + @Support({}) + Query setCatalog(Name catalog); - - - - - - - - - - - - - - - - - - - - - - - + /** + * Set the current catalog to a new value. + */ + @Support({}) + Query setCatalog(Catalog catalog); /** * Set the current schema to a new value. diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java index cfddc81916..e1fa419da5 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java @@ -2871,24 +2871,20 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri // XXX DDL Statements // ------------------------------------------------------------------------- + @Override + public Query setCatalog(String catalog) { + return setCatalog(name(catalog)); + } + @Override + public Query setCatalog(Name catalog) { + return setCatalog(catalog(catalog)); + } - - - - - - - - - - - - - - - - + @Override + public Query setCatalog(Catalog catalog) { + return new SetCatalog(configuration(), catalog); + } @Override public Query setSchema(String schema) { diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 4120ccdc7b..b1ec7beada 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -599,6 +599,8 @@ final class ParserImpl implements Parser { case 'U': if (!resultQuery && peekKeyword(ctx, "UPDATE")) return parseUpdate(ctx); + else if (!resultQuery && peekKeyword(ctx, "USE")) + return parseUse(ctx); break; @@ -1245,12 +1247,9 @@ final class ParserImpl implements Parser { private static final Query parseSet(ParserContext ctx) { parseKeyword(ctx, "SET"); - - - - - - if (parseKeywordIf(ctx, "GENERATOR")) + if (parseKeywordIf(ctx, "CATALOG")) + return parseSetCatalog(ctx); + else if (parseKeywordIf(ctx, "GENERATOR")) return parseSetGenerator(ctx); else if (parseKeywordIf(ctx, "SCHEMA")) return parseSetSchema(ctx); @@ -1262,11 +1261,14 @@ final class ParserImpl implements Parser { return IGNORE_NO_DELIMITER; } + private static final Query parseSetCatalog(ParserContext ctx) { + return ctx.dsl.setCatalog(parseCatalogName(ctx)); + } - - - - + private static final Query parseUse(ParserContext ctx) { + parseKeyword(ctx, "USE"); + return ctx.dsl.setCatalog(parseCatalogName(ctx)); + } private static final Query parseSetSchema(ParserContext ctx) { return ctx.dsl.setSchema(parseSchemaName(ctx));