Fix for count being very slow on large Parse Classes' collections (Postgres) (#5330)

* Changed count to be approximate. Should help with postgres slowness

* refactored last commit to only fall back to estimate if no complex query

* handlign variables correctly

* Trying again because it was casting to lowercase table names which doesnt work for us/

* syntax error

* Adding quotations to pg query

* hopefully final pg fix

* Postgres will now use an approximate count unless there is a more complex query specified

* handling edge case

* Fix for count being very slow on large Parse Classes' collections in Postgres. Replicating fix for Mongo in issue 5264

* Fixed silly spelling error resulting from copying over notes

* Lint fixes

* limiting results to 1 on approximation

* suppress test that we can no longer run for postgres

* removed tests from Postgres that no longer apply

* made changes requested by dplewis

* fixed count errors

* updated package.json

* removed test exclude for pg

* removed object types from method

* test disabled for postgres

* returned type

* add estimate count test

* fix mongo test
This commit is contained in:
CoderickLamar
2019-04-08 15:59:15 -07:00
committed by Diamond Lewis
parent e396612254
commit c7eb7daeae
7 changed files with 181 additions and 57 deletions

View File

@@ -152,10 +152,7 @@ export class MongoStorageAdapter implements StorageAdapter {
// encoded
const encodedUri = formatUrl(parseUrl(this._uri));
this.connectionPromise = MongoClient.connect(
encodedUri,
this._mongoOptions
)
this.connectionPromise = MongoClient.connect(encodedUri, this._mongoOptions)
.then(client => {
// Starting mongoDB 3.0, the MongoClient.connect don't return a DB anymore but a client
// Fortunately, we can get back the options and use them to select the proper DB.
@@ -385,8 +382,8 @@ export class MongoStorageAdapter implements StorageAdapter {
deleteAllClasses(fast: boolean) {
return storageAdapterAllCollections(this).then(collections =>
Promise.all(
collections.map(
collection => (fast ? collection.deleteMany({}) : collection.drop())
collections.map(collection =>
fast ? collection.deleteMany({}) : collection.drop()
)
)
);
@@ -952,6 +949,8 @@ export class MongoStorageAdapter implements StorageAdapter {
readPreference = ReadPreference.NEAREST;
break;
case undefined:
case null:
case '':
break;
default:
throw new Parse.Error(