Fix message_user_initiated
This commit is contained in:
parent
f5312b9463
commit
9d04daff5f
3 changed files with 61 additions and 0 deletions
30
ts/sql/migrations/48-fix-user-initiated-index.ts
Normal file
30
ts/sql/migrations/48-fix-user-initiated-index.ts
Normal file
|
@ -0,0 +1,30 @@
|
|||
// Copyright 2021 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { Database } from 'better-sqlite3';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion48(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 48) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
db.exec(
|
||||
`
|
||||
DROP INDEX message_user_initiated;
|
||||
|
||||
CREATE INDEX message_user_initiated ON messages (conversationId, isUserInitiatedMessage);
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 48');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion48: success!');
|
||||
}
|
|
@ -23,6 +23,7 @@ import updateToSchemaVersion44 from './44-badges';
|
|||
import updateToSchemaVersion45 from './45-stories';
|
||||
import updateToSchemaVersion46 from './46-optimize-stories';
|
||||
import updateToSchemaVersion47 from './47-further-optimize';
|
||||
import updateToSchemaVersion48 from './48-fix-user-initiated-index';
|
||||
|
||||
function updateToSchemaVersion1(
|
||||
currentVersion: number,
|
||||
|
@ -1909,6 +1910,7 @@ export const SCHEMA_VERSIONS = [
|
|||
updateToSchemaVersion45,
|
||||
updateToSchemaVersion46,
|
||||
updateToSchemaVersion47,
|
||||
updateToSchemaVersion48,
|
||||
];
|
||||
|
||||
export function updateSchema(db: Database, logger: LoggerType): void {
|
||||
|
|
|
@ -1263,4 +1263,33 @@ describe('SQL migrations test', () => {
|
|||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('updateToSchemaVersion48', () => {
|
||||
it('creates usable index for hasUserInitiatedMessages', () => {
|
||||
updateToVersion(48);
|
||||
|
||||
const details = db
|
||||
.prepare(
|
||||
`
|
||||
EXPLAIN QUERY PLAN
|
||||
SELECT COUNT(*) as count FROM
|
||||
(
|
||||
SELECT 1 FROM messages
|
||||
WHERE
|
||||
conversationId = 'convo' AND
|
||||
isUserInitiatedMessage = 1
|
||||
LIMIT 1
|
||||
);
|
||||
`
|
||||
)
|
||||
.all()
|
||||
.map(({ detail }) => detail)
|
||||
.join('\n');
|
||||
|
||||
assert.include(
|
||||
details,
|
||||
'SEARCH messages USING INDEX message_user_initiated (conversationId=? AND isUserInitiatedMessage=?)'
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue