AccountPatchReview mariadb: fix key length Setting up the db on mariadb currently fails with com.google.gerrit.exceptions.StorageException: create failure on ACCOUNT_PATCH_REVIEWS at com.google.gerrit.server.schema.JdbcAccountPatchReviewStore.createTableIfNotExists(JdbcAccountPatchReviewStore.java:188) ... Caused by: java.sql.SQLSyntaxErrorException: (conn=13) Specified key was too long; max key length is 3072 bytes If35aff6c8d dealt with this for mysql, this just ports it to mariadb. Out of interest, I did a query on the file_name size on our production database. +---------------+---------------+---------------+----------------+ | pct_length_10 | pct_length_20 | pct_length_50 | pct_length_100 | +---------------+---------------+---------------+----------------+ | 2.14 | 15.96 | 77.80 | 99.48 | +---------------+---------------+---------------+----------------+ So 100 characters gets 99.48% of file names. Our longest filename is 249 characters apparently. We could probably optimize this with partial indexes if required. Change-Id: Ide9a8c647565d657d691a73be76129f237bf6ebb
diff --git a/java/com/google/gerrit/server/schema/MariaDBAccountPatchReviewStore.java b/java/com/google/gerrit/server/schema/MariaDBAccountPatchReviewStore.java index b0a3370..dd82be2 100644 --- a/java/com/google/gerrit/server/schema/MariaDBAccountPatchReviewStore.java +++ b/java/com/google/gerrit/server/schema/MariaDBAccountPatchReviewStore.java
@@ -22,6 +22,7 @@ import com.google.inject.Inject; import com.google.inject.Singleton; import java.sql.SQLException; +import java.sql.Statement; import org.eclipse.jgit.lib.Config; @Singleton @@ -50,4 +51,17 @@ return new StorageException(op + " failure on ACCOUNT_PATCH_REVIEWS", err); } } + + @Override + protected void doCreateTable(Statement stmt) throws SQLException { + stmt.executeUpdate( + "CREATE TABLE IF NOT EXISTS account_patch_reviews (" + + "account_id INTEGER DEFAULT 0 NOT NULL, " + + "change_id INTEGER DEFAULT 0 NOT NULL, " + + "patch_set_id INTEGER DEFAULT 0 NOT NULL, " + + "file_name VARCHAR(255) DEFAULT '' NOT NULL, " + + "CONSTRAINT primary_key_account_patch_reviews " + + "PRIMARY KEY (change_id, patch_set_id, account_id, file_name)" + + ")"); + } }