diff --git a/keyserver/src/creators/message-creator.js b/keyserver/src/creators/message-creator.js
--- a/keyserver/src/creators/message-creator.js
+++ b/keyserver/src/creators/message-creator.js
@@ -26,7 +26,6 @@
   appendSQLArray,
   mergeOrConditions,
 } from '../database/database';
-import { getDBType } from '../database/db-config';
 import { fetchMessageInfoForLocalID } from '../fetchers/message-fetchers';
 import { fetchOtherSessionsForViewer } from '../fetchers/session-fetchers';
 import { fetchServerThreadInfos } from '../fetchers/thread-fetchers';
@@ -301,15 +300,14 @@
   `);
 
   const perUserInfo = new Map<string, UserThreadInfo>();
-  const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+  const [result] = await dbQuery(query);
   for (const row of result) {
     const userID = row.user.toString();
     const threadID = row.thread.toString();
     const deviceToken = row.device_token;
     const focusedUser = !!row.focused_user;
     const { platform } = row;
-    const versions =
-      dbType === 'mysql5.7' ? row.versions : JSON.parse(row.versions);
+    const versions = JSON.parse(row.versions);
     let thisUserInfo = perUserInfo.get(userID);
     if (!thisUserInfo) {
       thisUserInfo = {
@@ -326,10 +324,7 @@
         const isSubthreadMember = row[`subthread${subthread}_role`] > 0;
         const rawSubthreadPermissions =
           row[`subthread${subthread}_permissions`];
-        const subthreadPermissions =
-          dbType === 'mysql5.7'
-            ? rawSubthreadPermissions
-            : JSON.parse(rawSubthreadPermissions);
+        const subthreadPermissions = JSON.parse(rawSubthreadPermissions);
         const canSeeSubthread = permissionLookup(
           subthreadPermissions,
           threadPermissions.KNOW_OF,
diff --git a/keyserver/src/creators/session-creator.js b/keyserver/src/creators/session-creator.js
--- a/keyserver/src/creators/session-creator.js
+++ b/keyserver/src/creators/session-creator.js
@@ -3,7 +3,6 @@
 import type { CalendarQuery } from 'lib/types/entry-types';
 
 import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
 import type { Viewer } from '../session/viewer';
 
 async function createSession(
@@ -25,23 +24,11 @@
     INSERT INTO sessions (id, user, cookie, query,
       creation_time, last_update, last_validated)
     VALUES ${[row]}
-  `;
-  const dbType = await getDBType();
-  if (dbType === 'mysql5.7') {
-    query.append(SQL`
-    ON DUPLICATE KEY UPDATE
-      query = VALUES(query),
-      last_update = VALUES(last_update),
-      last_validated = VALUES(last_validated)
-    `);
-  } else {
-    query.append(SQL`
     ON DUPLICATE KEY UPDATE
       query = VALUE(query),
       last_update = VALUE(last_update),
       last_validated = VALUE(last_validated)
-    `);
-  }
+  `;
   await dbQuery(query);
   viewer.setSessionInfo({
     lastValidated: time,
diff --git a/keyserver/src/fetchers/entry-fetchers.js b/keyserver/src/fetchers/entry-fetchers.js
--- a/keyserver/src/fetchers/entry-fetchers.js
+++ b/keyserver/src/fetchers/entry-fetchers.js
@@ -29,7 +29,6 @@
   mergeAndConditions,
   mergeOrConditions,
 } from '../database/database';
-import { getDBType } from '../database/db-config';
 import type { SQLStatementType } from '../database/types';
 import type { Viewer } from '../session/viewer';
 import { creationString } from '../utils/idempotent';
@@ -155,7 +154,7 @@
     LEFT JOIN memberships m ON m.thread = t.id AND m.user = ${viewerID}
     WHERE e.id = ${entryID}
   `;
-  const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+  const [result] = await dbQuery(query);
 
   if (result.length === 0) {
     return false;
@@ -173,8 +172,7 @@
     return false;
   }
 
-  const permissions =
-    dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions);
+  const permissions = JSON.parse(row.permissions);
   return permissionLookup(permissions, permission);
 }
 
diff --git a/keyserver/src/fetchers/report-fetchers.js b/keyserver/src/fetchers/report-fetchers.js
--- a/keyserver/src/fetchers/report-fetchers.js
+++ b/keyserver/src/fetchers/report-fetchers.js
@@ -11,7 +11,6 @@
 import { values } from 'lib/utils/objects';
 
 import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
 import type { Viewer } from '../session/viewer';
 
 async function fetchErrorReportInfos(
@@ -31,13 +30,13 @@
     query.append(SQL`WHERE r.id < ${request.cursor} `);
   }
   query.append(SQL`ORDER BY r.id DESC`);
-  const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+  const [result] = await dbQuery(query);
 
   const reports = [];
   const userInfos = {};
   for (const row of result) {
     const viewerID = row.user.toString();
-    const report = dbType === 'mysql5.7' ? row.report : JSON.parse(row.report);
+    const report = JSON.parse(row.report);
     let { platformDetails } = report;
     if (!platformDetails) {
       platformDetails = {
@@ -76,13 +75,13 @@
     FROM reports
     WHERE id = ${id} AND type = ${reportTypes.ERROR}
   `;
-  const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+  const [result] = await dbQuery(query);
   if (result.length === 0) {
     throw new ServerError('invalid_parameters');
   }
   const row = result[0];
 
-  const report = dbType === 'mysql5.7' ? row.report : JSON.parse(row.report);
+  const report = JSON.parse(row.report);
   const _persist = report.preloadedState._persist
     ? report.preloadedState._persist
     : {};
diff --git a/keyserver/src/fetchers/role-fetchers.js b/keyserver/src/fetchers/role-fetchers.js
--- a/keyserver/src/fetchers/role-fetchers.js
+++ b/keyserver/src/fetchers/role-fetchers.js
@@ -3,7 +3,6 @@
 import type { RoleInfo } from 'lib/types/thread-types';
 
 import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
 
 async function fetchRoles(threadID: string): Promise<RoleInfo[]> {
   const query = SQL`
@@ -12,15 +11,14 @@
     LEFT JOIN threads t ON t.id = r.thread
     WHERE r.thread = ${threadID}
   `;
-  const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+  const [result] = await dbQuery(query);
 
   const roles = [];
   for (const row of result) {
     roles.push({
       id: row.id.toString(),
       name: row.name,
-      permissions:
-        dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions),
+      permissions: JSON.parse(row.permissions),
       isDefault: Boolean(row.is_default),
     });
   }
diff --git a/keyserver/src/fetchers/session-fetchers.js b/keyserver/src/fetchers/session-fetchers.js
--- a/keyserver/src/fetchers/session-fetchers.js
+++ b/keyserver/src/fetchers/session-fetchers.js
@@ -3,7 +3,6 @@
 import type { CalendarQuery } from 'lib/types/entry-types';
 
 import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
 import type { Viewer } from '../session/viewer';
 
 type CalendarSessionResult = {
@@ -21,13 +20,13 @@
     WHERE m.thread = ${threadID} AND m.role > 0
       AND s.query IS NOT NULL
   `;
-  const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+  const [result] = await dbQuery(query);
   const filters = [];
   for (const row of result) {
     filters.push({
       userID: row.user.toString(),
       session: row.id.toString(),
-      calendarQuery: dbType === 'mysql5.7' ? row.query : JSON.parse(row.query),
+      calendarQuery: JSON.parse(row.query),
     });
   }
   return filters;
diff --git a/keyserver/src/fetchers/thread-fetchers.js b/keyserver/src/fetchers/thread-fetchers.js
--- a/keyserver/src/fetchers/thread-fetchers.js
+++ b/keyserver/src/fetchers/thread-fetchers.js
@@ -16,7 +16,6 @@
 import { ServerError } from 'lib/utils/errors';
 
 import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
 import type { SQLStatementType } from '../database/types';
 import type { Viewer } from '../session/viewer';
 
@@ -48,7 +47,7 @@
   `
     .append(whereClause)
     .append(SQL` ORDER BY m.user ASC`);
-  const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+  const [result] = await dbQuery(query);
 
   const threadInfos = {};
   for (const row of result) {
@@ -83,27 +82,21 @@
       threadInfos[threadID].roles[role] = {
         id: role,
         name: row.role_name,
-        permissions:
-          dbType === 'mysql5.7'
-            ? row.role_permissions
-            : JSON.parse(row.role_permissions),
+        permissions: JSON.parse(row.role_permissions),
         isDefault: role === row.default_role.toString(),
       };
     }
     if (row.user) {
       const userID = row.user.toString();
       const allPermissions = getAllThreadPermissions(
-        dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions),
+        JSON.parse(row.permissions),
         threadID,
       );
       threadInfos[threadID].members.push({
         id: userID,
         permissions: allPermissions,
         role: row.role ? role : null,
-        subscription:
-          dbType === 'mysql5.7'
-            ? row.subscription
-            : JSON.parse(row.subscription),
+        subscription: JSON.parse(row.subscription),
         unread: row.role ? !!row.unread : null,
         isSender: !!row.sender,
       });
diff --git a/keyserver/src/fetchers/thread-permission-fetchers.js b/keyserver/src/fetchers/thread-permission-fetchers.js
--- a/keyserver/src/fetchers/thread-permission-fetchers.js
+++ b/keyserver/src/fetchers/thread-permission-fetchers.js
@@ -19,7 +19,6 @@
 } from 'lib/types/thread-types';
 
 import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
 import type { Viewer } from '../session/viewer';
 import { fetchThreadInfos } from './thread-fetchers';
 import { fetchKnownUserInfos } from './user-fetchers';
@@ -39,13 +38,13 @@
     FROM memberships
     WHERE thread = ${threadID} AND user = ${viewerID}
   `;
-  const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+  const [result] = await dbQuery(query);
 
   if (result.length === 0) {
     return null;
   }
   const row = result[0];
-  return dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions);
+  return JSON.parse(row.permissions);
 }
 
 function checkThreadPermission(
@@ -120,9 +119,8 @@
     }
   }
 
-  const [[result], dbType, disabledThreadIDs] = await Promise.all([
+  const [[result], disabledThreadIDs] = await Promise.all([
     dbQuery(query),
-    getDBType(),
     checkThreadsFrozen(viewer, permissionsToCheck, threadIDs),
   ]);
 
@@ -130,8 +128,7 @@
     .map(row => ({
       ...row,
       threadID: row.threadID.toString(),
-      permissions:
-        dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions),
+      permissions: JSON.parse(row.permissions),
     }))
     .filter(
       row =>
@@ -243,13 +240,9 @@
       FROM memberships
       WHERE thread = ${params.parentThreadID} AND user IN (${allCandidates})
     `;
-    const [[result], dbType] = await Promise.all([
-      dbQuery(parentPermissionsQuery),
-      getDBType(),
-    ]);
+    const [result] = await dbQuery(parentPermissionsQuery);
     for (const row of result) {
-      parentPermissions[row.user.toString()] =
-        dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions);
+      parentPermissions[row.user.toString()] = JSON.parse(row.permissions);
     }
     return parentPermissions;
   })();
diff --git a/keyserver/src/push/rescind.js b/keyserver/src/push/rescind.js
--- a/keyserver/src/push/rescind.js
+++ b/keyserver/src/push/rescind.js
@@ -9,7 +9,6 @@
 
 import createIDs from '../creators/id-creator';
 import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
 import type { SQLStatementType } from '../database/types';
 import { getAPNsNotificationTopic } from './providers';
 import { apnPush, fcmPush } from './utils';
@@ -37,18 +36,14 @@
   `);
   fetchQuery.append(notifCondition);
   fetchQuery.append(SQL` GROUP BY n.id, m.user`);
-  const [[fetchResult], dbType] = await Promise.all([
-    dbQuery(fetchQuery),
-    getDBType(),
-  ]);
+  const [fetchResult] = await dbQuery(fetchQuery);
 
   const deliveryPromises = {};
   const notifInfo = {};
   const rescindedIDs = [];
   const receivingDeviceTokens = [];
   for (const row of fetchResult) {
-    const rawDelivery =
-      dbType === 'mysql5.7' ? row.delivery : JSON.parse(row.delivery);
+    const rawDelivery = JSON.parse(row.delivery);
     const deliveries = Array.isArray(rawDelivery) ? rawDelivery : [rawDelivery];
     const id = row.id.toString();
     const threadID = row.thread.toString();
diff --git a/keyserver/src/push/send.js b/keyserver/src/push/send.js
--- a/keyserver/src/push/send.js
+++ b/keyserver/src/push/send.js
@@ -34,7 +34,6 @@
 import createIDs from '../creators/id-creator';
 import { createUpdates } from '../creators/update-creator';
 import { dbQuery, SQL, mergeOrConditions } from '../database/database';
-import { getDBType } from '../database/db-config';
 import type { CollapsableNotifInfo } from '../fetchers/message-fetchers';
 import { fetchCollapsableNotifs } from '../fetchers/message-fetchers';
 import { fetchServerThreadInfos } from '../fetchers/thread-fetchers';
@@ -770,26 +769,17 @@
       SQL`AND device_token NOT IN (${excludeDeviceTokens}) `,
     );
   }
-  const [
-    unreadCounts,
-    [deviceTokenResult],
-    [dbID],
-    dbType,
-  ] = await Promise.all([
+  const [unreadCounts, [deviceTokenResult], [dbID]] = await Promise.all([
     getUnreadCounts([userID]),
     dbQuery(deviceTokenQuery),
     createIDs('notifications', 1),
-    getDBType(),
   ]);
   const unreadCount = unreadCounts[userID];
 
   const devices = deviceTokenResult.map(row => ({
     deviceType: row.platform,
     deviceToken: row.device_token,
-    codeVersion:
-      dbType === 'mysql5.7'
-        ? row.versions?.codeVersion
-        : JSON.parse(row.versions)?.codeVersion,
+    codeVersion: JSON.parse(row.versions)?.codeVersion,
   }));
   const byDeviceType = getDevicesByDeviceType(devices);
 
diff --git a/keyserver/src/session/cookies.js b/keyserver/src/session/cookies.js
--- a/keyserver/src/session/cookies.js
+++ b/keyserver/src/session/cookies.js
@@ -27,7 +27,6 @@
 import createIDs from '../creators/id-creator';
 import { createSession } from '../creators/session-creator';
 import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
 import { deleteCookie } from '../deleters/cookie-deleters';
 import { handleAsyncPromise } from '../responders/handlers';
 import { clearDeviceToken } from '../updaters/device-token-updaters';
@@ -90,9 +89,8 @@
     FROM cookies
     WHERE id = ${cookieID} AND user IS NOT NULL
   `;
-  const [[result], dbType, allSessionInfo] = await Promise.all([
+  const [[result], allSessionInfo] = await Promise.all([
     dbQuery(query),
-    getDBType(),
     fetchSessionInfo(sessionParameterInfo, cookieID),
   ]);
   if (result.length === 0) {
@@ -113,10 +111,7 @@
   const cookieRow = result[0];
   let platformDetails = null;
   if (cookieRow.versions) {
-    const versions =
-      dbType === 'mysql5.7'
-        ? cookieRow.versions
-        : JSON.parse(cookieRow.versions);
+    const versions = JSON.parse(cookieRow.versions);
     platformDetails = {
       platform: cookieRow.platform,
       codeVersion: versions.codeVersion,
@@ -182,9 +177,8 @@
     FROM cookies
     WHERE id = ${cookieID} AND user IS NULL
   `;
-  const [[result], dbType, allSessionInfo] = await Promise.all([
+  const [[result], allSessionInfo] = await Promise.all([
     dbQuery(query),
-    getDBType(),
     fetchSessionInfo(sessionParameterInfo, cookieID),
   ]);
   if (result.length === 0) {
@@ -205,10 +199,7 @@
   const cookieRow = result[0];
   let platformDetails = null;
   if (cookieRow.platform && cookieRow.versions) {
-    const versions =
-      dbType === 'mysql5.7'
-        ? cookieRow.versions
-        : JSON.parse(cookieRow.versions);
+    const versions = JSON.parse(cookieRow.versions);
     platformDetails = {
       platform: cookieRow.platform,
       codeVersion: versions.codeVersion,
@@ -272,7 +263,7 @@
     FROM sessions
     WHERE id = ${session} AND cookie = ${cookieID}
   `;
-  const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+  const [result] = await dbQuery(query);
   if (result.length === 0) {
     return null;
   }
@@ -280,8 +271,7 @@
     sessionID,
     lastValidated: result[0].last_validated,
     lastUpdate: result[0].last_update,
-    calendarQuery:
-      dbType === 'mysql5.7' ? result[0].query : JSON.parse(result[0].query),
+    calendarQuery: JSON.parse(result[0].query),
   };
 }
 
diff --git a/keyserver/src/updaters/account-updaters.js b/keyserver/src/updaters/account-updaters.js
--- a/keyserver/src/updaters/account-updaters.js
+++ b/keyserver/src/updaters/account-updaters.js
@@ -14,7 +14,6 @@
 
 import { createUpdates } from '../creators/update-creator';
 import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
 import type { Viewer } from '../session/viewer';
 
 async function accountUpdater(
@@ -98,18 +97,8 @@
   const createOrUpdateSettingsQuery = SQL`
     INSERT INTO settings (user, name, data)
     VALUES ${[[viewer.id, request.name, request.data]]}
-  `;
-  const dbType = await getDBType();
-  if (dbType === 'mysql5.7') {
-    createOrUpdateSettingsQuery.append(SQL`
-    ON DUPLICATE KEY UPDATE data = VALUES(data)
-    `);
-  } else {
-    createOrUpdateSettingsQuery.append(SQL`
     ON DUPLICATE KEY UPDATE data = VALUE(data)
-    `);
-  }
-
+  `;
   await dbQuery(createOrUpdateSettingsQuery);
 }
 
diff --git a/keyserver/src/updaters/activity-updaters.js b/keyserver/src/updaters/activity-updaters.js
--- a/keyserver/src/updaters/activity-updaters.js
+++ b/keyserver/src/updaters/activity-updaters.js
@@ -18,7 +18,6 @@
 
 import { createUpdates } from '../creators/update-creator';
 import { dbQuery, SQL, mergeOrConditions } from '../database/database';
-import { getDBType } from '../database/db-config';
 import type { SQLStatementType } from '../database/types';
 import { deleteActivityForViewerSession } from '../deleters/activity-deleters';
 import {
@@ -272,17 +271,8 @@
     const query = SQL`
       INSERT INTO focused (user, session, thread, time)
       VALUES ${focusedInsertRows}
-    `;
-    const dbType = await getDBType();
-    if (dbType === 'mysql5.7') {
-      query.append(SQL`
-      ON DUPLICATE KEY UPDATE time = VALUES(time)
-      `);
-    } else {
-      query.append(SQL`
       ON DUPLICATE KEY UPDATE time = VALUE(time)
-      `);
-    }
+    `;
     await dbQuery(query);
   }
 
diff --git a/keyserver/src/updaters/relationship-updaters.js b/keyserver/src/updaters/relationship-updaters.js
--- a/keyserver/src/updaters/relationship-updaters.js
+++ b/keyserver/src/updaters/relationship-updaters.js
@@ -22,7 +22,6 @@
 import { createThread } from '../creators/thread-creator';
 import { createUpdates } from '../creators/update-creator';
 import { dbQuery, SQL, mergeOrConditions } from '../database/database';
-import { getDBType } from '../database/db-config';
 import { fetchFriendRequestRelationshipOperations } from '../fetchers/relationship-fetchers';
 import { fetchUserInfos } from '../fetchers/user-fetchers';
 import type { Viewer } from '../session/viewer';
@@ -38,10 +37,7 @@
   }
 
   const uniqueUserIDs = [...new Set(request.userIDs)];
-  const [users, dbType] = await Promise.all([
-    fetchUserInfos(uniqueUserIDs),
-    getDBType(),
-  ]);
+  const users = await fetchUserInfos(uniqueUserIDs);
 
   let errors = {};
   const userIDs: string[] = [];
@@ -125,16 +121,8 @@
       const directedInsertQuery = SQL`
         INSERT INTO relationships_directed (user1, user2, status)
         VALUES ${directedInsertRows}
-      `;
-      if (dbType === 'mysql5.7') {
-        directedInsertQuery.append(SQL`
-        ON DUPLICATE KEY UPDATE status = VALUES(status)
-        `);
-      } else {
-        directedInsertQuery.append(SQL`
         ON DUPLICATE KEY UPDATE status = VALUE(status)
-        `);
-      }
+      `;
       promises.push(dbQuery(directedInsertQuery));
     }
     if (directedDeleteIDs.length) {
@@ -186,16 +174,8 @@
     const directedInsertQuery = SQL`
       INSERT INTO relationships_directed (user1, user2, status)
       VALUES ${directedRows}
-    `;
-    if (dbType === 'mysql5.7') {
-      directedInsertQuery.append(SQL`
-      ON DUPLICATE KEY UPDATE status = VALUES(status)
-      `);
-    } else {
-      directedInsertQuery.append(SQL`
       ON DUPLICATE KEY UPDATE status = VALUE(status)
-      `);
-    }
+    `;
     const directedDeleteQuery = SQL`
       DELETE FROM relationships_directed
       WHERE status = ${directedStatus.PENDING_FRIEND} AND 
@@ -262,24 +242,12 @@
     INSERT INTO relationships_undirected (user1, user2, status)
     VALUES ${rows}
   `;
-
-  const dbType = await getDBType();
   if (greatest) {
-    if (dbType === 'mysql5.7') {
-      query.append(
-        SQL`ON DUPLICATE KEY UPDATE status = GREATEST(status, VALUES(status))`,
-      );
-    } else {
-      query.append(
-        SQL`ON DUPLICATE KEY UPDATE status = GREATEST(status, VALUE(status))`,
-      );
-    }
+    query.append(
+      SQL`ON DUPLICATE KEY UPDATE status = GREATEST(status, VALUE(status))`,
+    );
   } else {
-    if (dbType === 'mysql5.7') {
-      query.append(SQL`ON DUPLICATE KEY UPDATE status = VALUES(status)`);
-    } else {
-      query.append(SQL`ON DUPLICATE KEY UPDATE status = VALUE(status)`);
-    }
+    query.append(SQL`ON DUPLICATE KEY UPDATE status = VALUE(status)`);
   }
   await dbQuery(query);
 }
@@ -310,10 +278,7 @@
   }
   selectQuery.append(mergeOrConditions(conditions));
 
-  const [[result], dbType] = await Promise.all([
-    dbQuery(selectQuery),
-    getDBType(),
-  ]);
+  const [result] = await dbQuery(selectQuery);
   const existingStatuses = new Map();
   for (const row of result) {
     existingStatuses.set(`${row.user1}|${row.user2}`, row.status);
@@ -332,16 +297,8 @@
   const insertQuery = SQL`
     INSERT INTO relationships_undirected (user1, user2, status)
     VALUES ${insertRows}
-  `;
-  if (dbType === 'mysql5.7') {
-    insertQuery.append(SQL`
-    ON DUPLICATE KEY UPDATE status = GREATEST(status, VALUES(status))
-    `);
-  } else {
-    insertQuery.append(SQL`
     ON DUPLICATE KEY UPDATE status = GREATEST(status, VALUE(status))
-    `);
-  }
+  `;
   await dbQuery(insertQuery);
 
   return updateDatasForUserPairs(
diff --git a/keyserver/src/updaters/thread-permission-updaters.js b/keyserver/src/updaters/thread-permission-updaters.js
--- a/keyserver/src/updaters/thread-permission-updaters.js
+++ b/keyserver/src/updaters/thread-permission-updaters.js
@@ -30,7 +30,6 @@
   type UpdatesForCurrentSession,
 } from '../creators/update-creator';
 import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
 import {
   fetchServerThreadInfos,
   rawThreadInfosFromServerThreadInfos,
@@ -117,13 +116,11 @@
     WHERE t.id = ${threadID} AND cm.user IN (${userIDs})
   `;
   const [
-    dbType,
     [membershipResults],
     [parentMembershipResults],
     containingMembershipResults,
     roleThreadResult,
   ] = await Promise.all([
-    getDBType(),
     dbQuery(membershipQuery),
     dbQuery(parentMembershipQuery),
     (async () => {
@@ -151,12 +148,8 @@
     const userID = row.user.toString();
     existingMembershipInfo.set(userID, {
       oldRole: row.role.toString(),
-      oldPermissions:
-        dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions),
-      oldPermissionsForChildren:
-        dbType === 'mysql5.7'
-          ? row.permissions_for_children
-          : JSON.parse(row.permissions_for_children),
+      oldPermissions: JSON.parse(row.permissions),
+      oldPermissionsForChildren: JSON.parse(row.permissions_for_children),
     });
   }
 
@@ -167,10 +160,7 @@
       continue;
     }
     ancestorMembershipInfo.set(userID, {
-      permissionsFromParent:
-        dbType === 'mysql5.7'
-          ? row.permissions_from_parent
-          : JSON.parse(row.permissions_from_parent),
+      permissionsFromParent: JSON.parse(row.permissions_from_parent),
     });
   }
   for (const row of containingMembershipResults) {
@@ -362,7 +352,7 @@
       INNER JOIN roles r ON r.thread = t.id AND r.id = ${role}
       WHERE t.id = ${threadID}
     `;
-    const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+    const [result] = await dbQuery(query);
     if (result.length === 0) {
       throw new ServerError('internal_error');
     }
@@ -375,8 +365,7 @@
         ? row.parent_thread_id.toString()
         : null,
       hasContainingThreadID: row.containing_thread_id !== null,
-      rolePermissions:
-        dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions),
+      rolePermissions: JSON.parse(row.permissions),
     };
   } else {
     const query = SQL`
@@ -386,7 +375,7 @@
       INNER JOIN roles r ON r.thread = t.id AND r.id = t.default_role
       WHERE t.id = ${threadID}
     `;
-    const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+    const [result] = await dbQuery(query);
     if (result.length === 0) {
       throw new ServerError('internal_error');
     }
@@ -399,8 +388,7 @@
         ? row.parent_thread_id.toString()
         : null,
       hasContainingThreadID: row.containing_thread_id !== null,
-      rolePermissions:
-        dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions),
+      rolePermissions: JSON.parse(row.permissions),
     };
   }
 }
@@ -585,30 +573,27 @@
   const threadIDs = ancestors.map(ancestor => ancestor.threadID);
 
   const rows = [];
-  const queriesPromise = (async () => {
-    while (threadIDs.length > 0) {
-      const batch = threadIDs.splice(0, fetchDescendantsBatchSize);
-      const query = SQL`
-        SELECT t.id, m.user, t.type, t.depth, t.parent_thread_id,
-          t.containing_thread_id, r.permissions AS role_permissions, m.permissions,
-          m.permissions_for_children, m.role,
-          pm.permissions_for_children AS permissions_from_parent,
-          cm.role AS containing_role
-        FROM threads t
-        INNER JOIN memberships m ON m.thread = t.id
-        LEFT JOIN memberships pm
-          ON pm.thread = t.parent_thread_id AND pm.user = m.user
-        LEFT JOIN memberships cm
-          ON cm.thread = t.containing_thread_id AND cm.user = m.user
-        LEFT JOIN roles r ON r.id = m.role
-        WHERE t.parent_thread_id IN (${batch})
-          OR t.containing_thread_id IN (${batch})
-      `;
-      const [results] = await dbQuery(query);
-      pushAll(rows, results);
-    }
-  })();
-  const [dbType] = await Promise.all([getDBType(), queriesPromise]);
+  while (threadIDs.length > 0) {
+    const batch = threadIDs.splice(0, fetchDescendantsBatchSize);
+    const query = SQL`
+      SELECT t.id, m.user, t.type, t.depth, t.parent_thread_id,
+        t.containing_thread_id, r.permissions AS role_permissions, m.permissions,
+        m.permissions_for_children, m.role,
+        pm.permissions_for_children AS permissions_from_parent,
+        cm.role AS containing_role
+      FROM threads t
+      INNER JOIN memberships m ON m.thread = t.id
+      LEFT JOIN memberships pm
+        ON pm.thread = t.parent_thread_id AND pm.user = m.user
+      LEFT JOIN memberships cm
+        ON cm.thread = t.containing_thread_id AND cm.user = m.user
+      LEFT JOIN roles r ON r.id = m.role
+      WHERE t.parent_thread_id IN (${batch})
+        OR t.containing_thread_id IN (${batch})
+    `;
+    const [results] = await dbQuery(query);
+    pushAll(rows, results);
+  }
 
   const descendantThreadInfos: Map<string, DescendantInfo> = new Map();
   for (const row of rows) {
@@ -631,20 +616,10 @@
     const userID = row.user.toString();
     descendantThreadInfo.users.set(userID, {
       curRole: row.role.toString(),
-      curRolePermissions:
-        dbType === 'mysql5.7'
-          ? row.role_permissions
-          : JSON.parse(row.role_permissions),
-      curPermissions:
-        dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions),
-      curPermissionsForChildren:
-        dbType === 'mysql5.7'
-          ? row.permissions_for_children
-          : JSON.parse(row.permissions_for_children),
-      curPermissionsFromParent:
-        dbType === 'mysql5.7'
-          ? row.permissions_from_parent
-          : JSON.parse(row.permissions_from_parent),
+      curRolePermissions: JSON.parse(row.role_permissions),
+      curPermissions: JSON.parse(row.permissions),
+      curPermissionsForChildren: JSON.parse(row.permissions_for_children),
+      curPermissionsFromParent: JSON.parse(row.permissions_from_parent),
       curMemberOfContainingThread: row.containing_role > 0,
     });
   }
@@ -749,12 +724,10 @@
     WHERE t.id = ${threadID}
   `;
   const [
-    dbType,
     [threadResults],
     [membershipResults],
     [parentMembershipResults],
   ] = await Promise.all([
-    getDBType(),
     dbQuery(threadQuery),
     dbQuery(membershipQuery),
     dbQuery(parentMembershipQuery),
@@ -777,16 +750,9 @@
     const userID = row.user.toString();
     membershipInfo.set(userID, {
       role: row.role.toString(),
-      permissions:
-        dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions),
-      permissionsForChildren:
-        dbType === 'mysql5.7'
-          ? row.permissions_for_children
-          : JSON.parse(row.permissions_for_children),
-      rolePermissions:
-        dbType === 'mysql5.7'
-          ? row.role_permissions
-          : JSON.parse(row.role_permissions),
+      permissions: JSON.parse(row.permissions),
+      permissionsForChildren: JSON.parse(row.permissions_for_children),
+      rolePermissions: JSON.parse(row.role_permissions),
       memberOfContainingThread: !!(
         row.containing_role && row.containing_role > 0
       ),
@@ -794,10 +760,7 @@
   }
   for (const row of parentMembershipResults) {
     const userID = row.user.toString();
-    const permissionsFromParent =
-      dbType === 'mysql5.7'
-        ? row.permissions_from_parent
-        : JSON.parse(row.permissions_from_parent);
+    const permissionsFromParent = JSON.parse(row.permissions_from_parent);
     const membership = membershipInfo.get(userID);
     if (membership) {
       membership.permissionsFromParent = permissionsFromParent;
@@ -955,29 +918,12 @@
   // column and this is an INSERT, but we don't want to require people to have
   // to know the current `subscription` when they're just using this function to
   // update the permissions of an existing membership row.
-  const dbType = await getDBType();
   while (insertRows.length > 0) {
     const batch = insertRows.splice(0, membershipInsertBatchSize);
     const query = SQL`
       INSERT INTO memberships (user, thread, role, creation_time, subscription,
         permissions, permissions_for_children, last_message, last_read_message)
       VALUES ${batch}
-    `;
-    if (dbType === 'mysql5.7') {
-      query.append(SQL`
-      ON DUPLICATE KEY UPDATE
-        subscription = IF(
-          (role <= 0 AND VALUES(role) > 0)
-            OR (role > 0 AND VALUES(role) <= 0),
-          VALUES(subscription),
-          subscription
-        ),
-        role = VALUES(role),
-        permissions = VALUES(permissions),
-        permissions_for_children = VALUES(permissions_for_children)
-      `);
-    } else {
-      query.append(SQL`
       ON DUPLICATE KEY UPDATE
         subscription = IF(
           (role <= 0 AND VALUE(role) > 0)
@@ -988,8 +934,7 @@
         role = VALUE(role),
         permissions = VALUE(permissions),
         permissions_for_children = VALUE(permissions_for_children)
-      `);
-    }
+    `;
     await dbQuery(query);
   }
 }
diff --git a/keyserver/src/updaters/thread-updaters.js b/keyserver/src/updaters/thread-updaters.js
--- a/keyserver/src/updaters/thread-updaters.js
+++ b/keyserver/src/updaters/thread-updaters.js
@@ -31,7 +31,6 @@
 import { getRolePermissionBlobs } from '../creators/role-creator';
 import { createUpdates } from '../creators/update-creator';
 import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
 import { fetchEntryInfos } from '../fetchers/entry-fetchers';
 import { fetchMessageInfos } from '../fetchers/message-fetchers';
 import {
@@ -532,15 +531,9 @@
           LEFT JOIN roles r ON r.id = t.default_role
           WHERE t.id = ${request.threadID}
         `;
-        const [[result], dbType] = await Promise.all([
-          dbQuery(rolePermissionsQuery),
-          getDBType(),
-        ]);
+        const [result] = await dbQuery(rolePermissionsQuery);
         if (result.length > 0) {
-          rolePermissions =
-            dbType === 'mysql5.7'
-              ? result[0].permissions
-              : JSON.parse(result[0].permissions);
+          rolePermissions = JSON.parse(result[0].permissions);
         }
       }
       if (!rolePermissions) {