Add SqlDialect method to drop an index Only MySQL has a custom implementation of this. At this point it is easiest to only add a drop method, not an add method. There are multiple ways add could be implemented, e.g. automatically creating indexes when scanning over @Query fields. However, this change is primarily to help Gerrit Code Review migrate away from gwtorm, for which dropping indexes is more germane. Change-Id: I2eacad107d8f6e78c77f43f30ca22a62d3a65f02
diff --git a/src/main/java/com/google/gwtorm/schema/sql/DialectMySQL.java b/src/main/java/com/google/gwtorm/schema/sql/DialectMySQL.java index c4cb7e1..521a88f 100644 --- a/src/main/java/com/google/gwtorm/schema/sql/DialectMySQL.java +++ b/src/main/java/com/google/gwtorm/schema/sql/DialectMySQL.java
@@ -96,6 +96,11 @@ } @Override + protected String getDropIndexSql(String tableName, String name) { + return "DROP INDEX " + name + " ON " + tableName; + } + + @Override protected String getNextSequenceValueSql(final String seqname) { return seqname; }
diff --git a/src/main/java/com/google/gwtorm/schema/sql/SqlDialect.java b/src/main/java/com/google/gwtorm/schema/sql/SqlDialect.java index 164edda..de48b7c 100644 --- a/src/main/java/com/google/gwtorm/schema/sql/SqlDialect.java +++ b/src/main/java/com/google/gwtorm/schema/sql/SqlDialect.java
@@ -382,6 +382,23 @@ public abstract void renameColumn(StatementExecutor e, String tableName, String fromColumn, ColumnModel col) throws OrmException; + /** + * Drop one index from a table. + * + * @param e statement to use to execute the SQL command(s). + * @param tableName table to rename the index in. + * @param name index name. + * @throws OrmException the index could not be renamed. + */ + public void dropIndex(StatementExecutor e, String tableName, String name) + throws OrmException { + e.execute(getDropIndexSql(tableName, name)); + } + + protected String getDropIndexSql(String tableName, String name) { + return "DROP INDEX " + name; + } + protected abstract String getNextSequenceValueSql(String seqname); /**
diff --git a/src/test/java/com/google/gwtorm/schema/sql/DialectH2Test.java b/src/test/java/com/google/gwtorm/schema/sql/DialectH2Test.java index 8e86e1f..a94f641 100644 --- a/src/test/java/com/google/gwtorm/schema/sql/DialectH2Test.java +++ b/src/test/java/com/google/gwtorm/schema/sql/DialectH2Test.java
@@ -132,6 +132,10 @@ assertEquals(2, s.size()); assertTrue(s.contains("foo_primary_ind")); assertTrue(s.contains("foo_second_ind")); + + dialect.dropIndex(executor, "foo", "foo_primary_ind"); + dialect.dropIndex(executor, "foo", "foo_second_ind"); + assertEquals(Collections.emptySet(), dialect.listIndexes(db, "foo")); } @Test
diff --git a/src/test/java/com/google/gwtorm/schema/sql/DialectMaxDBTest.java b/src/test/java/com/google/gwtorm/schema/sql/DialectMaxDBTest.java index 7b21d10..97937b2 100644 --- a/src/test/java/com/google/gwtorm/schema/sql/DialectMaxDBTest.java +++ b/src/test/java/com/google/gwtorm/schema/sql/DialectMaxDBTest.java
@@ -39,6 +39,7 @@ import java.sql.DriverManager; import java.sql.SQLException; +import java.util.Collections; import java.util.Properties; import java.util.Set; @@ -156,6 +157,10 @@ assertEquals(2, s.size()); assertTrue(s.contains("foo_primary_ind")); assertTrue(s.contains("foo_second_ind")); + + dialect.dropIndex(executor, "foo", "foo_primary_ind"); + dialect.dropIndex(executor, "foo", "foo_second_ind"); + assertEquals(Collections.emptySet(), dialect.listIndexes(db, "foo")); } @Test
diff --git a/src/test/java/com/google/gwtorm/schema/sql/DialectMySQLTest.java b/src/test/java/com/google/gwtorm/schema/sql/DialectMySQLTest.java index 46f1ec4..032bb33 100644 --- a/src/test/java/com/google/gwtorm/schema/sql/DialectMySQLTest.java +++ b/src/test/java/com/google/gwtorm/schema/sql/DialectMySQLTest.java
@@ -149,6 +149,10 @@ assertEquals(2, s.size()); assertTrue(s.contains("foo_primary_ind")); assertTrue(s.contains("foo_second_ind")); + + dialect.dropIndex(executor, "foo", "foo_primary_ind"); + dialect.dropIndex(executor, "foo", "foo_second_ind"); + assertEquals(Collections.emptySet(), dialect.listIndexes(db, "foo")); } @Test
diff --git a/src/test/java/com/google/gwtorm/schema/sql/DialectOracleSQLTest.java b/src/test/java/com/google/gwtorm/schema/sql/DialectOracleSQLTest.java index 431503d..8bb00ce 100644 --- a/src/test/java/com/google/gwtorm/schema/sql/DialectOracleSQLTest.java +++ b/src/test/java/com/google/gwtorm/schema/sql/DialectOracleSQLTest.java
@@ -151,6 +151,10 @@ assertEquals(2, s.size()); assertTrue(s.contains("foo_primary_ind")); assertTrue(s.contains("foo_second_ind")); + + dialect.dropIndex(executor, "foo", "foo_primary_ind"); + dialect.dropIndex(executor, "foo", "foo_second_ind"); + assertEquals(Collections.emptySet(), dialect.listIndexes(db, "foo")); } @Test
diff --git a/src/test/java/com/google/gwtorm/schema/sql/DialectPostgreSQLTest.java b/src/test/java/com/google/gwtorm/schema/sql/DialectPostgreSQLTest.java index fc6b0a9..cbdc050 100644 --- a/src/test/java/com/google/gwtorm/schema/sql/DialectPostgreSQLTest.java +++ b/src/test/java/com/google/gwtorm/schema/sql/DialectPostgreSQLTest.java
@@ -148,6 +148,10 @@ assertEquals(2, s.size()); assertTrue(s.contains("foo_primary_ind")); assertTrue(s.contains("foo_second_ind")); + + dialect.dropIndex(executor, "foo", "foo_primary_ind"); + dialect.dropIndex(executor, "foo", "foo_second_ind"); + assertEquals(Collections.emptySet(), dialect.listIndexes(db, "foo")); } @Test