[#8537] Parsing CREATE SEQUENCE always leads to quoted sequence names

This commit is contained in:
lukaseder 2019-04-17 13:38:03 +02:00
parent 348909d9e2
commit c5903425ee
2 changed files with 12 additions and 9 deletions

View File

@ -9462,10 +9462,10 @@ public class DSL {
if (name.getName().length < 1 || name.getName().length > 2)
throw new IllegalArgumentException("Must provide a qualified name of length 1 or 2 : " + name);
String n = name.getName()[name.getName().length - 1];
Schema s = name.getName().length == 2 ? schema(name(name.getName()[0])) : null;
Name n = name.unqualifiedName();
Schema s = name.parts().length == 2 ? schema(name.qualifier()) : null;
return new SequenceImpl<T>(n, s, type);
return new SequenceImpl<T>(n, s, type, false);
}
/**

View File

@ -52,6 +52,7 @@ import org.jooq.Configuration;
import org.jooq.Context;
import org.jooq.DataType;
import org.jooq.Field;
import org.jooq.Name;
import org.jooq.RenderContext;
import org.jooq.SQLDialect;
import org.jooq.Schema;
@ -73,7 +74,6 @@ public class SequenceImpl<T extends Number> extends AbstractNamed implements Seq
private static final long serialVersionUID = 6224349401603636427L;
private static final Clause[] CLAUSES = { SEQUENCE, SEQUENCE_REFERENCE };
final String name;
final boolean nameIsPlainSQL;
final Schema schema;
final DataType<T> type;
@ -83,9 +83,12 @@ public class SequenceImpl<T extends Number> extends AbstractNamed implements Seq
}
SequenceImpl(String name, Schema schema, DataType<T> type, boolean nameIsPlainSQL) {
super(qualify(schema, DSL.name(name)), CommentImpl.NO_COMMENT);
this(DSL.name(name), schema, type, nameIsPlainSQL);
}
SequenceImpl(Name name, Schema schema, DataType<T> type, boolean nameIsPlainSQL) {
super(qualify(schema, name), CommentImpl.NO_COMMENT);
this.name = name;
this.schema = schema;
this.type = type;
this.nameIsPlainSQL = nameIsPlainSQL;
@ -241,11 +244,11 @@ public class SequenceImpl<T extends Number> extends AbstractNamed implements Seq
.sql('.');
if (asStringLiterals)
ctx.visit(inline(name));
ctx.visit(inline(getName()));
else if (nameIsPlainSQL)
ctx.sql(name);
ctx.sql(getName());
else
ctx.literal(name);
ctx.visit(getUnqualifiedName());
}
@Override