Merge "Allow schema upgrades to display messages"
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersion.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersion.java
index 0ca6862..ee05575 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersion.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersion.java
@@ -92,7 +92,7 @@
     final JdbcExecutor e = new JdbcExecutor(s);
     try {
       s.updateSchema(e);
-      migrateData(db);
+      migrateData(db, ui);
 
       final List<String> pruneList = new ArrayList<String>();
       s.pruneSchema(new StatementExecutor() {
@@ -119,7 +119,7 @@
    * (removes deleted columns/tables).
    */
   @SuppressWarnings("unused")
-  protected void migrateData(ReviewDb db) throws OrmException, SQLException {
+  protected void migrateData(ReviewDb db, UpdateUI ui) throws OrmException, SQLException {
   }
 
   /** Mark the current schema version. */
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_21.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_21.java
index 7ecf66c..ed50f7f 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_21.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_21.java
@@ -36,7 +36,7 @@
   }
 
   @Override
-  protected void migrateData(ReviewDb db) throws OrmException, SQLException {
+  protected void migrateData(ReviewDb db, UpdateUI ui) throws OrmException, SQLException {
     JdbcSchema jdbc = (JdbcSchema) db;
     SystemConfig sc = db.systemConfig().get(new SystemConfig.Key());
 
@@ -55,7 +55,11 @@
       }
 
       if (jdbc.getDialect() instanceof DialectMySQL) {
-        s.execute("DROP FUNCTION nextval_project_id");
+        try {
+          s.execute("DROP FUNCTION nextval_project_id");
+        } catch (SQLException se) {
+          ui.message("warning: could not delete function nextval_project_id");
+        }
 
       } else if (jdbc.getDialect() instanceof DialectH2) {
         s.execute("ALTER TABLE projects DROP CONSTRAINT"
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_22.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_22.java
index 2de38d1..8e24aa2 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_22.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_22.java
@@ -39,7 +39,7 @@
   }
 
   @Override
-  protected void migrateData(ReviewDb db) throws OrmException, SQLException {
+  protected void migrateData(ReviewDb db, UpdateUI ui) throws OrmException, SQLException {
     Statement s = ((JdbcSchema) db).getConnection().createStatement();
     try {
       ResultSet results =
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_23.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_23.java
index 92b7d2e..413fa4e 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_23.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_23.java
@@ -35,7 +35,7 @@
   }
 
   @Override
-  protected void migrateData(ReviewDb db) throws OrmException, SQLException {
+  protected void migrateData(ReviewDb db, UpdateUI ui) throws OrmException, SQLException {
     Collection<AccountGroupName> names = new ArrayList<AccountGroupName>();
     Statement queryStmt = ((JdbcSchema) db).getConnection().createStatement();
     try {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_25.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_25.java
index 063f676..febe3d9 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_25.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_25.java
@@ -41,7 +41,7 @@
   }
 
   @Override
-  protected void migrateData(ReviewDb db) throws OrmException, SQLException {
+  protected void migrateData(ReviewDb db, UpdateUI ui) throws OrmException, SQLException {
     nonActions = new HashSet<ApprovalCategory.Id>();
     for (ApprovalCategory c : db.approvalCategories().all()) {
       if (!c.isAction()) {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_26.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_26.java
index 84ef3b0..9c76af2 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_26.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_26.java
@@ -30,7 +30,7 @@
   }
 
   @Override
-  protected void migrateData(ReviewDb db) throws SQLException {
+  protected void migrateData(ReviewDb db, UpdateUI ui) throws SQLException {
     if (((JdbcSchema) db).getDialect() instanceof DialectMySQL) {
       Statement stmt = ((JdbcSchema) db).getConnection().createStatement();
       try {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_27.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_27.java
index 7f725ba..f8febec 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_27.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_27.java
@@ -39,7 +39,7 @@
   }
 
   @Override
-  protected void migrateData(ReviewDb db) throws SQLException, OrmException {
+  protected void migrateData(ReviewDb db, UpdateUI ui) throws SQLException, OrmException {
     Statement stmt = ((JdbcSchema) db).getConnection().createStatement();
     try {
       final SqlDialect dialect = ((JdbcSchema) db).getDialect();
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_28.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_28.java
index 2f2567e..5e231d7 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_28.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_28.java
@@ -37,7 +37,7 @@
   }
 
   @Override
-  protected void migrateData(ReviewDb db) throws OrmException, SQLException {
+  protected void migrateData(ReviewDb db, UpdateUI ui) throws OrmException, SQLException {
     final SystemConfig cfg = db.systemConfig().get(new SystemConfig.Key());
     ApprovalCategory cat;
 
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_30.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_30.java
index f3028568..7285e32 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_30.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_30.java
@@ -30,7 +30,7 @@
   }
 
   @Override
-  protected void migrateData(ReviewDb db) throws OrmException {
+  protected void migrateData(ReviewDb db, UpdateUI ui) throws OrmException {
     db.approvalCategoryValues().insert(
         Collections.singleton(new ApprovalCategoryValue(
             new ApprovalCategoryValue.Id(ApprovalCategory.FORGE_IDENTITY,