make optimizer understant SELECT .... ORDER BY ? * expression -------------------------------------------------------------
Key: CORE-6131 URL: http://tracker.firebirdsql.org/browse/CORE-6131 Project: Firebird Core Issue Type: Improvement Reporter: Arioch Sometimes clients want to have sorting of variable (user-selectable) directions. Example: https://www.sql.ru/forum/1316247-2/firebird-3-0-embedded-podklucheniya-s-raznyh-prilozheniy One way to achieve it would be to transcode some field (or fields-based expression) to a number (maybe that is already a number, or maybe it is for example timestamp, so can be reduced to number using something like DATEDIFF), and then to multiply it by SQL parameter, with parameter then being either +1 or -1 or 0 ( direct sort, reverse sort, no sort ) The database can have ascending and descending indexes by the said expression (or a bi-directional index if Firebird would have one implemented). The thing is to recognize that the SQL parameter is de-facto a constant value and then to build fetching plan using either ascending or descending or non index, or none at all, based upon the value of the parameter. This is a special case, so no "general" problems should emerge. - multiplication of expression and numeric parameter in ORDER BY clause - existing index by that expression - the numeric parameter value being +1 or -1 or 0 (actually, any non-zero number there can be substituted with +1 or -1 for the sake of sorting) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://tracker.firebirdsql.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel