From 3b775a1fb8a1878714e3451191438963d688f1b0 Mon Sep 17 00:00:00 2001 From: dblythy Date: Sun, 18 Sep 2022 04:41:45 +1000 Subject: [PATCH] fix: sorting by non-existing value throws `INVALID_SERVER_ERROR` on Postgres (#8157) --- 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..7dbd789c3b 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.split('.')[0]] && fieldName !== 'score') { + delete sort[fieldName]; + } }); return (isMaster ? Promise.resolve()