From 42d658bcb88b0b2bd9bce41348c278dce767b280 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Tue, 19 Jan 2016 14:47:08 +0900 Subject: [PATCH 1/2] SchemaVersion: Fix renameColumn method The renameColumn method calls JdbcSchema.renameField, and results in the exception: Relation table_name does not have field_name Change it to call JdbcSchema.renameColumn. Change-Id: Icffbbcced6416f7c3f86fdabf72d493babf4d88d --- .../java/com/google/gerrit/server/schema/SchemaVersion.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 78646a0c95..740205f97d 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 @@ -176,7 +176,7 @@ public abstract class SchemaVersion { throws OrmException { JdbcSchema s = (JdbcSchema) db; try (JdbcExecutor e = new JdbcExecutor(s)) { - s.renameField(e, table, from, to); + s.renameColumn(e, table, from, to); } } From 547886f39671ff54150f7198d22559a0d0894896 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Wed, 20 Jan 2016 13:44:29 +0900 Subject: [PATCH 2/2] PatchSet: Correct misspelling and type of pushCertificate field MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I519240547 extended the patch_sets table with a pushCertificate column to store push the certificate that was used when pushing a signed commit. However, the column type VARCHAR(255) is too small for PGP certificate descriptions. The column name was also misspelled as "pushCertficate" (missing a 'i'). Extend the column from VARCHAR(255) to CLOB, as used in the account table ssh key column. At the same time, correct the misspelling. Reported-By: Henrik Laban Sköllermark Change-Id: I3dff91041c00f619f06c0e64c5cb09e3987eac9a --- .../gerrit/reviewdb/client/PatchSet.java | 10 +++-- .../gerrit/server/schema/SchemaVersion.java | 2 +- .../gerrit/server/schema/Schema_117.java | 41 +++++++++++++++++++ 3 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_117.java diff --git a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/PatchSet.java b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/PatchSet.java index 7f4fd12025..e4ae0acad5 100644 --- a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/PatchSet.java +++ b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/PatchSet.java @@ -187,9 +187,11 @@ public final class PatchSet { @Column(id = 6, notNull = false) protected String groups; + //DELETED id = 7 (pushCertficate) + /** Certificate sent with a push that created this patch set. */ - @Column(id = 7, notNull = false) - protected String pushCertficate; + @Column(id = 8, notNull = false, length = Integer.MAX_VALUE) + protected String pushCertificate; protected PatchSet() { } @@ -251,11 +253,11 @@ public final class PatchSet { } public String getPushCertificate() { - return pushCertficate; + return pushCertificate; } public void setPushCertificate(String cert) { - pushCertficate = cert; + pushCertificate = cert; } @Override 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 740205f97d..374a176ac0 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 @@ -32,7 +32,7 @@ import java.util.List; /** A version of the database schema. */ public abstract class SchemaVersion { /** The current schema version. */ - public static final Class C = Schema_116.class; + public static final Class C = Schema_117.class; public static int getBinaryVersion() { return guessVersion(C); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_117.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_117.java new file mode 100644 index 0000000000..9ee86f32d9 --- /dev/null +++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_117.java @@ -0,0 +1,41 @@ +// Copyright (C) 2016 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.gerrit.server.schema; + +import com.google.gerrit.reviewdb.server.ReviewDb; +import com.google.gwtorm.jdbc.JdbcSchema; +import com.google.gwtorm.server.OrmException; +import com.google.inject.Inject; +import com.google.inject.Provider; + +import java.sql.SQLException; +import java.sql.Statement; + +public class Schema_117 extends SchemaVersion { + @Inject + Schema_117(Provider prior) { + super(prior); + } + + @Override + protected void preUpdateSchema(ReviewDb db) throws OrmException { + renameColumn(db, "patch_sets", "push_certficate", "push_certificate"); + try (Statement stmt = ((JdbcSchema) db).getConnection().createStatement()) { + stmt.execute("ALTER TABLE patch_sets MODIFY push_certificate clob"); + } catch (SQLException e) { + // Ignore. Type may have already been modified manually. + } + } +}