]> source.dussan.org Git - sonarqube.git/commitdiff
Experimental optimization for truncate on Oracle
authorJulien HENRY <julien.henry@sonarsource.com>
Thu, 15 Jan 2015 16:34:15 +0000 (17:34 +0100)
committerJulien HENRY <julien.henry@sonarsource.com>
Thu, 15 Jan 2015 16:35:25 +0000 (17:35 +0100)
sonar-core/src/test/java/org/sonar/core/persistence/DatabaseCommands.java

index 03b0237a59d9bb53865814b5be146dd090b79058..52db5b3a811e7a9792805b51e080ed44b9bf66ab 100644 (file)
@@ -63,6 +63,10 @@ public abstract class DatabaseCommands {
 
   abstract List<String> resetPrimaryKey(String table, int minSequenceValue);
 
+  String getTruncateCommand(String table) {
+    return "TRUNCATE TABLE " + table;
+  }
+
   public static DatabaseCommands forDialect(Dialect dialect) {
     DatabaseCommands command = ImmutableMap.of(
       org.sonar.core.persistence.dialect.H2.ID, H2,
@@ -96,6 +100,11 @@ public abstract class DatabaseCommands {
         "DROP SEQUENCE " + sequence,
         "CREATE SEQUENCE " + sequence + " INCREMENT BY 1 MINVALUE 1 START WITH " + minSequenceValue);
     }
+
+    @Override
+    String getTruncateCommand(String table) {
+      return "TRUNCATE TABLE " + table + " REUSE STORAGE";
+    }
   };
 
   private static final DatabaseCommands MSSQL = new DatabaseCommands(new MsSqlDataTypeFactory()) {
@@ -128,7 +137,7 @@ public abstract class DatabaseCommands {
       statement = connection.createStatement();
       for (String table : DatabaseVersion.TABLES) {
         try {
-          statement.executeUpdate("TRUNCATE TABLE " + table);
+          statement.executeUpdate(getTruncateCommand(table));
           connection.commit();
         } catch (Exception e) {
           // ignore