@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator

Fix "Map omits required key" exception by comparing result order against modern field keys master

Summary: Sorting a Maniphest search query by custom fields throws a "Map returned omits required key" exception. The `isCustomFieldOrderKey()` check still tested against legacy field key format (for example `[custom:]std:maniphest:deadline.due`) while the code passes modern field key format (for example `custom.deadline.due`). After fixing this, `PhutilTypeSpec::checkMap()` throws an exception when a non-optional (extra) key `$column` is in `$columns` but not in the array of type parameters below to check against: `"Got unexpected parameters: customfield, customfield.index.table, customfield.index.key"` Thus add optional types for customfields in `buildPagingClauseFromMultipleColumns()` to allow them instead of throwing another exception. Closes T15631 Test Plan: * Have a custom field (with search: true) defined via http://phorge.localhost/config/edit/maniphest.custom-field-definitions/ * Have two tasks have the custom field set * Go to http://phorge.localhost/maniphest/query/ , select the custom field (e.g. "Due Date (Reversed)") in the "Order By" field, and click the "Search" button. Iterate through the results via the "Next" button if needed Reviewers: O1 Blessed Committers, valerio.bozzolan Reviewed By: O1 Blessed Committers, valerio.bozzolan Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno Maniphest Tasks: T15631 Differential Revision: https://we.phorge.it/D25504


+5 -2
1 changed file