From d1aa079b2bb75cb2a6ce0958a5adcbd57d1357c2 Mon Sep 17 00:00:00 2001 From: Vjacheslav Borisov Date: Thu, 19 Nov 2020 10:22:26 +0400 Subject: [PATCH] support of mariadb sequences fixes #883 Signed-off-by: Vjacheslav Borisov --- .../platform/database/MySQLPlatform.java | 48 ++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/MySQLPlatform.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/MySQLPlatform.java index 55c3a9a573b..746565167b0 100644 --- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/MySQLPlatform.java +++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/MySQLPlatform.java @@ -37,7 +37,6 @@ import java.util.Collection; import java.util.Hashtable; import java.util.Vector; - import org.eclipse.persistence.exceptions.ValidationException; import org.eclipse.persistence.expressions.ExpressionOperator; import org.eclipse.persistence.internal.databaseaccess.DatabaseCall; @@ -840,4 +839,51 @@ public boolean checkTableExists(final DatabaseSessionImpl session, } } + @Override + public boolean isAlterSequenceObjectSupported() { + return false; + } + + /** + * INTERNAL: + * Returns sql used to create sequence object in the database. + */ + @Override + public Writer buildSequenceObjectCreationWriter(Writer writer, String fullSeqName, int increment, int start) throws IOException { + writer.write("CREATE SEQUENCE "); + writer.write(fullSeqName); + if(start != 1) { + writer.write(" START WITH " + start); + } + if (increment != 1) { + writer.write(" INCREMENT BY " + increment); + } + return writer; + } + + /** + * INTERNAL: + * Returns sql used to delete sequence object from the database. + */ + @Override + public Writer buildSequenceObjectDeletionWriter(Writer writer, String fullSeqName) throws IOException { + writer.write("DROP SEQUENCE "); + writer.write(fullSeqName); + return writer; + } + + @Override + public ValueReadQuery buildSelectQueryForSequenceObject(String seqName, Integer size) { + StringBuilder builder = new StringBuilder(26 + seqName.length()); + builder.append("SELECT NEXTVAL("); + builder.append(seqName); + builder.append(")"); + return new ValueReadQuery(builder.toString()); + } + + @Override + public boolean supportsSequenceObjects() { + return true; + } + }