Skip to content

Commit

Permalink
[#4796] Add Context.qualifyCatalog() to allow for locally qualifying …
Browse files Browse the repository at this point in the history
…names without catalog
  • Loading branch information
lukaseder committed Dec 10, 2015
1 parent 8596290 commit 7037298
Show file tree
Hide file tree
Showing 5 changed files with 99 additions and 10 deletions.
32 changes: 31 additions & 1 deletion jOOQ/src/main/java/org/jooq/Context.java
Expand Up @@ -332,10 +332,40 @@ public interface Context<C extends Context<C>> extends Scope {
boolean qualify();

/**
* Sett the new context value for {@link #qualify()}.
* Set the new context value for {@link #qualify()}.
* <p>
* This is the same as {@link #qualifySchema(boolean)}.
*/
C qualify(boolean qualify);

/**
* Whether query parts should render qualified names or not.
* <p>
* This is the same as {@link #qualifySchema()}.
*/
boolean qualifySchema();

/**
* Set the new context value for {@link #qualifySchema()}.
*/
C qualifySchema(boolean qualifySchema);

/**
* Whether query parts should render qualified names or not.
* <p>
* The catalog can only be qualified when {@link #qualifySchema()} is
* <code>true</code> as well.
*/
boolean qualifyCatalog();

/**
* Set the new context value for {@link #qualifyCatalog()}.
* <p>
* The catalog can only be qualified when {@link #qualifySchema()} is
* <code>true</code> as well.
*/
C qualifyCatalog(boolean qualifyCatalog);

/**
* Specify, how bind values should be rendered.
* <p>
Expand Down
32 changes: 27 additions & 5 deletions jOOQ/src/main/java/org/jooq/impl/AbstractContext.java
Expand Up @@ -91,9 +91,10 @@ abstract class AbstractContext<C extends Context<C>> extends AbstractScope imple
private final Deque<QueryPart> visitParts;

// [#2694] Unified RenderContext and BindContext traversal
ParamType paramType = ParamType.INDEXED;
boolean qualify = true;
CastMode castMode = CastMode.DEFAULT;
ParamType paramType = ParamType.INDEXED;
boolean qualifySchema = true;
boolean qualifyCatalog = true;
CastMode castMode = CastMode.DEFAULT;

AbstractContext(Configuration configuration, PreparedStatement stmt) {
super(configuration);
Expand Down Expand Up @@ -474,12 +475,33 @@ public final C paramType(ParamType p) {

@Override
public final boolean qualify() {
return qualify;
return qualifySchema();
}

@Override
public final C qualify(boolean q) {
this.qualify = q;
return qualifySchema(q);
}

@Override
public final boolean qualifySchema() {
return qualifySchema;
}

@Override
public final C qualifySchema(boolean q) {
this.qualifySchema = q;
return (C) this;
}

@Override
public final boolean qualifyCatalog() {
return qualifyCatalog;
}

@Override
public final C qualifyCatalog(boolean q) {
this.qualifyCatalog = q;
return (C) this;
}

Expand Down
24 changes: 22 additions & 2 deletions jOOQ/src/main/java/org/jooq/impl/AlterSequenceImpl.java
Expand Up @@ -104,8 +104,28 @@ public final void accept(Context<?> ctx) {
.keyword("alter")
.sql(' ')
.keyword(ctx.family() == CUBRID ? "serial" : "sequence")
.sql(' ').visit(sequence)
.end(ALTER_SEQUENCE_SEQUENCE)
.sql(' ');

switch (ctx.family()) {
/* [pro] xx
xxxx xxxxxxxxxx x
xxxxxxx xxxxxxxxxxxxxx x xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxx
x
xx [/pro] */

default: {
ctx.visit(sequence);
break;
}
}

ctx.end(ALTER_SEQUENCE_SEQUENCE)
.start(ALTER_SEQUENCE_RESTART);

T with = restartWith;
Expand Down
19 changes: 18 additions & 1 deletion jOOQ/src/main/java/org/jooq/impl/DropSequenceImpl.java
Expand Up @@ -118,7 +118,24 @@ private void accept0(Context<?> ctx) {
if (ifExists && supportsIfExists(ctx))
ctx.keyword("if exists").sql(' ');

ctx.visit(sequence);
switch (ctx.family()) {
/* [pro] xx
xxxx xxxxxxxxxx x
xxxxxxx xxxxxxxxxxxxxx x xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxx
x
xx [/pro] */

default: {
ctx.visit(sequence);
break;
}
}

if (ctx.family() == DERBY)
ctx.sql(' ').keyword("restrict");
Expand Down
2 changes: 1 addition & 1 deletion jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java
Expand Up @@ -106,7 +106,7 @@ public final void accept(Context<?> ctx) {
// [#4793] TODO: Support this
// Utils.getMappedCatalog(ctx.configuration(), getCatalog());

if (mappedCatalog != null && !StringUtils.isBlank(mappedCatalog.getName())) {
if (ctx.qualifyCatalog() && mappedCatalog != null && !StringUtils.isBlank(mappedCatalog.getName())) {
ctx.visit(mappedCatalog);
ctx.sql('.');
}
Expand Down

0 comments on commit 7037298

Please sign in to comment.