[#4914] Add support for CREATE UNIQUE INDEX

This commit is contained in:
lukaseder 2016-01-08 18:32:30 +01:00
parent 1cbbc23923
commit 064e5475d8
4 changed files with 60 additions and 1 deletions

View File

@ -7113,6 +7113,22 @@ public interface DSLContext extends Scope , AutoCloseable {
@Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
CreateIndexStep createIndex(Name index);
/**
* Create a new DSL <code>CREATE UNIQUE INDEX</code> statement.
*
* @see DSL#createIndex(String)
*/
@Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
CreateIndexStep createUniqueIndex(String index);
/**
* Create a new DSL <code>CREATE UNIQUE INDEX</code> statement.
*
* @see DSL#createIndex(Name)
*/
@Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
CreateIndexStep createUniqueIndex(Name index);
/**
* Create a new DSL <code>CREATE SEQUENCE</code> statement.
*

View File

@ -71,13 +71,19 @@ class CreateIndexImpl extends AbstractQuery implements
private static final Clause[] CLAUSES = { CREATE_INDEX };
private final Name index;
private final boolean unique;
private Table<?> table;
private Field<?>[] fields;
CreateIndexImpl(Configuration configuration, Name index) {
this(configuration, index, false);
}
CreateIndexImpl(Configuration configuration, Name index, boolean unique) {
super(configuration);
this.index = index;
this.unique = unique;
}
// ------------------------------------------------------------------------
@ -108,7 +114,14 @@ class CreateIndexImpl extends AbstractQuery implements
@Override
public final void accept(Context<?> ctx) {
ctx.keyword("create index")
ctx.keyword("create");
if (unique)
ctx.sql(' ')
.keyword("unique");
ctx.sql(' ')
.keyword("index")
.sql(' ')
.visit(index)
.sql(' ')

View File

@ -5605,6 +5605,26 @@ public class DSL {
return using(new DefaultConfiguration()).createIndex(index);
}
/**
* Create a new DSL <code>CREATE UNIQUE INDEX</code> statement.
*
* @see DSLContext#createUniqueIndex(String)
*/
@Support
public static CreateIndexStep createUniqueIndex(String index) {
return using(new DefaultConfiguration()).createUniqueIndex(index);
}
/**
* Create a new DSL <code>CREATE UNIQUE INDEX</code> statement.
*
* @see DSLContext#createUniqueIndex(Name)
*/
@Support
public static CreateIndexStep createUniqueIndex(Name index) {
return using(new DefaultConfiguration()).createUniqueIndex(index);
}
/**
* Create a new DSL <code>CREATE SEQUENCE</code> statement.
*

View File

@ -2245,6 +2245,16 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri
return new CreateIndexImpl(configuration(), index);
}
@Override
public CreateIndexStep createUniqueIndex(String index) {
return createUniqueIndex(name(index));
}
@Override
public CreateIndexStep createUniqueIndex(Name index) {
return new CreateIndexImpl(configuration(), index, true);
}
@Override
public CreateSequenceFinalStep createSequence(String sequence) {
return createSequence(name(sequence));