Skip to content

Commit a295c40

Browse files
vitaly-tflovilmart
authored andcommitted
PostgreSQL performance optimization (#4457)
Performance-optimizing transactions to execute all non-result queries as a single operation.
1 parent dbf6d60 commit a295c40

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/Adapters/Storage/Postgres/PostgresStorageAdapter.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -809,7 +809,8 @@ export class PostgresStorageAdapter implements StorageAdapter {
809809
return list.concat(joinTablesForSchema(schema.schema));
810810
}, []);
811811
const classes = ['_SCHEMA', '_PushStatus', '_JobStatus', '_JobSchedule', '_Hooks', '_GlobalConfig', '_Audience', ...results.map(result => result.className), ...joins];
812-
return this._client.tx(t=>t.batch(classes.map(className=>t.none('DROP TABLE IF EXISTS $<className:name>', {className}))));
812+
const queries = classes.map(className => ({query: 'DROP TABLE IF EXISTS $<className:name>', values: {className}}));
813+
return this._client.tx(t => t.none(this._pgp.helpers.concat(queries)));
813814
}, error => {
814815
if (error.code === PostgresRelationDoesNotExistError) {
815816
// No _SCHEMA collection. Don't delete anything.
@@ -1604,7 +1605,8 @@ export class PostgresStorageAdapter implements StorageAdapter {
16041605
}
16051606

16061607
dropIndexes(className: string, indexes: any, conn: any): Promise<void> {
1607-
return (conn || this._client).tx(t => t.batch(indexes.map(i => t.none('DROP INDEX $1:name', i))));
1608+
const queries = indexes.map(i => ({query: 'DROP INDEX $1:name', values: i}));
1609+
return (conn || this._client).tx(t => t.none(this._pgp.helpers.concat(queries)));
16081610
}
16091611

16101612
getIndexes(className: string) {

0 commit comments

Comments
 (0)