Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/MappingStrategy.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/MappingStrategy.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/MappingStrategy.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/MappingStrategy.java
index 922809559f..83c21e526c 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/MappingStrategy.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/MappingStrategy.java
@@ -31,6 +31,7 @@ import org.eclipse.net4j.db.IDBTable;
import org.eclipse.net4j.internal.util.om.trace.ContextTracer;
import org.eclipse.net4j.util.io.CloseableIterator;
+import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
@@ -400,6 +401,26 @@ public abstract class MappingStrategy implements IMappingStrategy
}
}
+ public long repairAfterCrash(Connection connection)
+ {
+ long max = 0L;
+ for (CDOClass idClass : getClassesWithObjectInfo())
+ {
+ IClassMapping classMapping = getClassMapping(idClass);
+ IDBTable table = classMapping.getTable();
+ IDBField idField = table.getField(CDODBSchema.ATTRIBUTES_ID);
+ long classMax = DBUtil.selectMaximumLong(connection, idField);
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Max CDOID of table {0}: {1}", table, classMax);
+ }
+
+ max = Math.max(max, classMax);
+ }
+
+ return max + 2L;
+ }
+
@Override
public String toString()
{

Back to the top