diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java b/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java index 058c33726b37939fe8b90008763d3a40de5471cc..377ba90a318d980fa816d3f0482af47ef0ca3c54 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java @@ -98,7 +98,7 @@ import static org.briarproject.bramble.util.LogUtils.now; abstract class JdbcDatabase implements Database<Connection> { // Package access for testing - static final int CODE_SCHEMA_VERSION = 46; + static final int CODE_SCHEMA_VERSION = 47; // Time period offsets for incoming transport keys private static final int OFFSET_PREV = -1; @@ -135,6 +135,7 @@ abstract class JdbcDatabase implements Database<Connection> { + " handshakePublicKey _BINARY," // Null if key is unknown + " localAuthorId _HASH NOT NULL," + " verified BOOLEAN NOT NULL," + + " syncVersions _BINARY DEFAULT '00' NOT NULL," + " PRIMARY KEY (contactId)," + " FOREIGN KEY (localAuthorId)" + " REFERENCES localAuthors (authorId)" @@ -461,7 +462,8 @@ abstract class JdbcDatabase implements Database<Connection> { new Migration42_43(dbTypes), new Migration43_44(dbTypes), new Migration44_45(), - new Migration45_46() + new Migration45_46(), + new Migration46_47(dbTypes) ); } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/Migration46_47.java b/bramble-core/src/main/java/org/briarproject/bramble/db/Migration46_47.java new file mode 100644 index 0000000000000000000000000000000000000000..da14f5d361b033294a3201218f3c4cd43d018b05 --- /dev/null +++ b/bramble-core/src/main/java/org/briarproject/bramble/db/Migration46_47.java @@ -0,0 +1,47 @@ +package org.briarproject.bramble.db; + +import org.briarproject.bramble.api.db.DbException; + +import java.sql.Connection; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.logging.Logger; + +import static java.util.logging.Level.WARNING; +import static java.util.logging.Logger.getLogger; +import static org.briarproject.bramble.db.JdbcUtils.tryToClose; + +class Migration46_47 implements Migration<Connection> { + + private static final Logger LOG = getLogger(Migration46_47.class.getName()); + + private final DatabaseTypes dbTypes; + + Migration46_47(DatabaseTypes dbTypes) { + this.dbTypes = dbTypes; + } + + @Override + public int getStartVersion() { + return 46; + } + + @Override + public int getEndVersion() { + return 47; + } + + @Override + public void migrate(Connection txn) throws DbException { + Statement s = null; + try { + s = txn.createStatement(); + s.execute(dbTypes.replaceTypes("ALTER TABLE contacts" + + " ADD COLUMN syncVersions" + + " _BINARY DEFAULT '00' NOT NULL")); + } catch (SQLException e) { + tryToClose(s, LOG, WARNING); + throw new DbException(e); + } + } +}