[jOOQ/jOOQ#9410] Added support for ALTER TABLE .. ALTER .. ADD FIRST
This commit is contained in:
parent
0391818ad0
commit
f57f3f160d
@ -38,6 +38,7 @@
|
||||
package org.jooq;
|
||||
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.FIREBIRD;
|
||||
import static org.jooq.SQLDialect.H2;
|
||||
import static org.jooq.SQLDialect.HSQLDB;
|
||||
// ...
|
||||
@ -72,7 +73,7 @@ public interface AlterTableAddStep extends AlterTableFinalStep {
|
||||
/**
|
||||
* Add a <code>FIRST</code> clause to <code>ALTER TABLE .. ADD ..</code>.
|
||||
*/
|
||||
@Support({ H2, MYSQL })
|
||||
@Support({ FIREBIRD, H2, MYSQL })
|
||||
AlterTableFinalStep first();
|
||||
|
||||
/**
|
||||
|
||||
@ -120,6 +120,7 @@ import static org.jooq.impl.Keywords.K_LIKE;
|
||||
import static org.jooq.impl.Keywords.K_MODIFY;
|
||||
import static org.jooq.impl.Keywords.K_NOT_NULL;
|
||||
import static org.jooq.impl.Keywords.K_NULL;
|
||||
import static org.jooq.impl.Keywords.K_POSITION;
|
||||
import static org.jooq.impl.Keywords.K_PRIMARY_KEY;
|
||||
import static org.jooq.impl.Keywords.K_RAISE;
|
||||
import static org.jooq.impl.Keywords.K_RENAME;
|
||||
@ -896,6 +897,23 @@ final class AlterTableImpl extends AbstractRowCountQuery implements
|
||||
}
|
||||
}
|
||||
|
||||
if (family == FIREBIRD) {
|
||||
if (addFirst) {
|
||||
begin(ctx);
|
||||
beginExecuteImmediate(ctx);
|
||||
accept1(ctx);
|
||||
endExecuteImmediate(ctx);
|
||||
|
||||
ctx.formatSeparator();
|
||||
|
||||
beginExecuteImmediate(ctx);
|
||||
ctx.visit(K_ALTER_TABLE).sql(' ').visit(table).sql(' ').visit(K_ALTER).sql(' ').visit(addColumn).sql(' ').visit(K_POSITION).sql(" 1");
|
||||
endExecuteImmediate(ctx);
|
||||
end(ctx);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1528,7 +1546,7 @@ final class AlterTableImpl extends AbstractRowCountQuery implements
|
||||
private final void acceptFirstBeforeAfter(Context<?> ctx) {
|
||||
boolean previous = ctx.qualify();
|
||||
|
||||
if (addFirst)
|
||||
if (addFirst && ctx.family() != FIREBIRD)
|
||||
ctx.sql(' ').visit(K_FIRST);
|
||||
else if (addBefore != null)
|
||||
ctx.sql(' ').visit(K_BEFORE).sql(' ').qualify(false).visit(addBefore).qualify(previous);
|
||||
|
||||
@ -266,6 +266,7 @@ final class Keywords {
|
||||
static final Keyword K_PASSING = keyword("passing");
|
||||
static final Keyword K_PERCENT = keyword("percent");
|
||||
static final Keyword K_PIVOT = keyword("pivot");
|
||||
static final Keyword K_POSITION = keyword("position");
|
||||
static final Keyword K_PRECEDING = keyword("preceding");
|
||||
static final Keyword K_PREVIOUS_VALUE_FOR = keyword("previous value for");
|
||||
static final Keyword K_PRIMARY_KEY = keyword("primary key");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user