Skip to content

Commit

Permalink
bugfix
Browse files Browse the repository at this point in the history
  • Loading branch information
llsand committed Aug 23, 2023
1 parent e47ab21 commit b960a0a
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -284,9 +284,7 @@ public void alterSequenceIfNeeded( StatementBuilderAlter p1, SequenceDiff pSeque
.forceDifferent( SEQUENCE__MAX_VALUE_SELECT )//
.handle( p ->
{
p.addStmt( "alter sequence " + pSequenceDiff.sequence_nameNew + " increment by " + (lMaxValueSelectValue.longValue() - lIstValue.longValue()) );
p.addStmt( "declare\n v_dummy number;\n begin\n select " + pSequenceDiff.sequence_nameNew + ".nextval into v_dummy from dual;\n end;" );
p.addStmt( "alter sequence " + pSequenceDiff.sequence_nameNew + " increment by " + nvl( pSequenceDiff.increment_byNew, 1 ) );
updateSeqquenceCurrentValue(pSequenceDiff, lMaxValueSelectValue, lIstValue, p);
} );
}
else
Expand Down Expand Up @@ -323,6 +321,12 @@ public void alterSequenceIfNeeded( StatementBuilderAlter p1, SequenceDiff pSeque
.handle( p -> p.addStmt( "alter sequence " + pSequenceDiff.sequence_nameNew + " " + pSequenceDiff.orderNew.getLiteral() ) );
}

protected void updateSeqquenceCurrentValue(SequenceDiff pSequenceDiff, BigDecimal lMaxValueSelectValue, BigDecimal lIstValue, StatementBuilder p) {
p.addStmt("alter sequence " + pSequenceDiff.sequence_nameNew + " increment by " + (lMaxValueSelectValue.longValue() - lIstValue.longValue()));
p.addStmt("declare\n v_dummy number;\n begin\n select " + pSequenceDiff.sequence_nameNew + ".nextval into v_dummy from dual;\n end;");
p.addStmt("alter sequence " + pSequenceDiff.sequence_nameNew + " increment by " + nvl(pSequenceDiff.increment_byNew, 1));
}

public void createSequnece( StatementBuilder p, SequenceDiff pSequenceDiff, DataHandler pDataHandler )
{
BigDecimal lMaxValueSelectValue = pDataHandler.getSequenceMaxValueSelectValue( pSequenceDiff );
Expand Down Expand Up @@ -1714,7 +1718,7 @@ public void createMview( StatementBuilder p, MviewDiff pMviewDiff )
p.stmtDone();
}

private <T> T nvl( T pObject, T pDefault )
protected <T> T nvl( T pObject, T pDefault )
{
return pObject == null ? pDefault : pObject;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import de.opitzconsulting.orcas.orig.diff.*;
import de.opitzconsulting.origOrcasDsl.DataType;

import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;

Expand All @@ -14,6 +15,15 @@ public DdlBuilderAzureSql(Parameters pParameters, DatabaseHandler pDatabaseHandl
super(pParameters, pDatabaseHandler);
}

@Override
protected void updateSeqquenceCurrentValue(SequenceDiff pSequenceDiff, BigDecimal lMaxValueSelectValue, BigDecimal lIstValue, StatementBuilder p) {
// if the sequence is new, it needs to be queried for initialization
p.addStmt("declare\n @v_dummy numeric;\n begin\n select @v_dummy = NEXT VALUE FOR " + pSequenceDiff.sequence_nameNew + ";\n end;");
p.addStmt("alter sequence " + pSequenceDiff.sequence_nameNew + " increment by " + (lMaxValueSelectValue.longValue() - lIstValue.longValue()));
p.addStmt("declare\n @v_dummy numeric;\n begin\n select @v_dummy = NEXT VALUE FOR " + pSequenceDiff.sequence_nameNew + ";\n end;");
p.addStmt("alter sequence " + pSequenceDiff.sequence_nameNew + " increment by " + nvl(pSequenceDiff.increment_byNew, 1));
}

@Override
protected String getDatatypeName(DataType pData_typeNew) {
if (pData_typeNew == DataType.VARCHAR2 || pData_typeNew == DataType.NVARCHAR2) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1262,13 +1262,20 @@ public BigDecimal getSequenceMaxValueSelectValue( SequenceDiff pSequenceDiff )
{
if( pSequenceDiff.max_value_selectNew != null )
{
lSollStartValue = (BigDecimal) new WrapperReturnFirstValue( pSequenceDiff.max_value_selectNew, _callableStatementProvider ).executeForValue();
Object result = new WrapperReturnFirstValue(pSequenceDiff.max_value_selectNew, _callableStatementProvider).executeForValue();

if(result instanceof Integer) {
lSollStartValue = new BigDecimal((Integer) result);
} else {
lSollStartValue = (BigDecimal) result;
}

lSollStartValue = lSollStartValue.add( BigDecimal.valueOf( 1 ) );
}
}
catch( Exception e )
{
Orcas.logError("cant execute " + pSequenceDiff.max_value_selectNew + " : " + e, _parameters);
// kann vorkommen, wenn fuer das select benoetigte Tabellen nicht
// exisitieren. kann erst richtig korrigiert werden, wenn auch der
// Tabellenabgleich auf dieses Package umgestellt wurde
Expand Down

0 comments on commit b960a0a

Please sign in to comment.