From 67b8f7744c7ce826aaecdb7dd47ddda00aa08d88 Mon Sep 17 00:00:00 2001 From: dblythy Date: Sat, 10 Sep 2022 10:04:41 +1000 Subject: [PATCH 1/5] fix: sorting by non-existing values throws INVALID_SERVER_ERROR on postgres --- spec/ParseQuery.spec.js | 10 ++++++++++ src/Controllers/DatabaseController.js | 3 +++ 2 files changed, 13 insertions(+) diff --git a/spec/ParseQuery.spec.js b/spec/ParseQuery.spec.js index 0dcc83639c..6b43fe4418 100644 --- a/spec/ParseQuery.spec.js +++ b/spec/ParseQuery.spec.js @@ -1715,6 +1715,16 @@ describe('Parse.Query testing', () => { }); }); + it('order by non-existing string', async () => { + const strings = ['a', 'b', 'c', 'd']; + const makeBoxedNumber = function (num, i) { + return new BoxedNumber({ number: num, string: strings[i] }); + }; + await Parse.Object.saveAll([3, 1, 3, 2].map(makeBoxedNumber)); + const results = await new Parse.Query(BoxedNumber).ascending('foo').find(); + expect(results.length).toBe(4); + }); + it('order by descending number then ascending string', function (done) { const strings = ['a', 'b', 'c', 'd']; const makeBoxedNumber = function (num, i) { diff --git a/src/Controllers/DatabaseController.js b/src/Controllers/DatabaseController.js index 25b97d0ec7..6ba4fd26e9 100644 --- a/src/Controllers/DatabaseController.js +++ b/src/Controllers/DatabaseController.js @@ -1207,6 +1207,9 @@ class DatabaseController { `Invalid field name: ${fieldName}.` ); } + if (!schema.fields[fieldName]) { + delete sort[fieldName]; + } }); return (isMaster ? Promise.resolve() From 7f623363078358446ae5511689f3e552a5248bf2 Mon Sep 17 00:00:00 2001 From: dblythy Date: Sat, 10 Sep 2022 12:53:36 +1000 Subject: [PATCH 2/5] Update DatabaseController.js --- src/Controllers/DatabaseController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Controllers/DatabaseController.js b/src/Controllers/DatabaseController.js index 6ba4fd26e9..d2cca873d6 100644 --- a/src/Controllers/DatabaseController.js +++ b/src/Controllers/DatabaseController.js @@ -1207,7 +1207,7 @@ class DatabaseController { `Invalid field name: ${fieldName}.` ); } - if (!schema.fields[fieldName]) { + if (this.adapter instanceof PostgresStorageAdapter && !schema.fields[fieldName]) { delete sort[fieldName]; } }); From 5ef3ff234e1d0a9ef5e5462d400270a437f2c346 Mon Sep 17 00:00:00 2001 From: dblythy Date: Sat, 10 Sep 2022 13:08:05 +1000 Subject: [PATCH 3/5] Update DatabaseController.js --- src/Controllers/DatabaseController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Controllers/DatabaseController.js b/src/Controllers/DatabaseController.js index d2cca873d6..b611101c5d 100644 --- a/src/Controllers/DatabaseController.js +++ b/src/Controllers/DatabaseController.js @@ -1207,7 +1207,7 @@ class DatabaseController { `Invalid field name: ${fieldName}.` ); } - if (this.adapter instanceof PostgresStorageAdapter && !schema.fields[fieldName]) { + if (!schema.fields[fieldName.split('.')[0]]) { delete sort[fieldName]; } }); From 1b9fc1251540ca7e0c70956a47f0a2c2d844bfff Mon Sep 17 00:00:00 2001 From: dblythy Date: Mon, 12 Sep 2022 10:27:28 +1000 Subject: [PATCH 4/5] Update DatabaseController.js --- src/Controllers/DatabaseController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Controllers/DatabaseController.js b/src/Controllers/DatabaseController.js index b611101c5d..aad5499201 100644 --- a/src/Controllers/DatabaseController.js +++ b/src/Controllers/DatabaseController.js @@ -1207,7 +1207,7 @@ class DatabaseController { `Invalid field name: ${fieldName}.` ); } - if (!schema.fields[fieldName.split('.')[0]]) { + if (!schema.fields[fieldName.split('.')[0]] && fieldName.charAt(0) !== '$') { delete sort[fieldName]; } }); From 771cbfcada319e305bc11ad751d88d74384d4405 Mon Sep 17 00:00:00 2001 From: dblythy Date: Sat, 17 Sep 2022 22:45:40 +1000 Subject: [PATCH 5/5] Update DatabaseController.js --- src/Controllers/DatabaseController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Controllers/DatabaseController.js b/src/Controllers/DatabaseController.js index aad5499201..7dbd789c3b 100644 --- a/src/Controllers/DatabaseController.js +++ b/src/Controllers/DatabaseController.js @@ -1207,7 +1207,7 @@ class DatabaseController { `Invalid field name: ${fieldName}.` ); } - if (!schema.fields[fieldName.split('.')[0]] && fieldName.charAt(0) !== '$') { + if (!schema.fields[fieldName.split('.')[0]] && fieldName !== 'score') { delete sort[fieldName]; } });