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 updateToSchemaVersion45 from './45-stories';
|
||||||
import updateToSchemaVersion46 from './46-optimize-stories';
|
import updateToSchemaVersion46 from './46-optimize-stories';
|
||||||
import updateToSchemaVersion47 from './47-further-optimize';
|
import updateToSchemaVersion47 from './47-further-optimize';
|
||||||
|
import updateToSchemaVersion48 from './48-fix-user-initiated-index';
|
||||||
|
|
||||||
function updateToSchemaVersion1(
|
function updateToSchemaVersion1(
|
||||||
currentVersion: number,
|
currentVersion: number,
|
||||||
|
@ -1909,6 +1910,7 @@ export const SCHEMA_VERSIONS = [
|
||||||
updateToSchemaVersion45,
|
updateToSchemaVersion45,
|
||||||
updateToSchemaVersion46,
|
updateToSchemaVersion46,
|
||||||
updateToSchemaVersion47,
|
updateToSchemaVersion47,
|
||||||
|
updateToSchemaVersion48,
|
||||||
];
|
];
|
||||||
|
|
||||||
export function updateSchema(db: Database, logger: LoggerType): void {
|
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…
Add table
Reference in a new issue