Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[yugabyte#7241] ysql: Import 'Avoid divide-by-zero in regex_selectivi…
…ty() with long fixed prefix.' Summary: Upstream commit was a28df6fa3041523f9a96cf0d3c3929f8bdc7c797 Commit message was: ``` Given a regex pattern with a very long fixed prefix (approaching 500 characters), the result of pow(FIXED_CHAR_SEL, fixed_prefix_len) can underflow to zero. Typically the preceding selectivity calculation would have underflowed as well, so that we compute 0/0 and get NaN. In released branches this leads to an assertion failure later on. That doesn't happen in HEAD, for reasons I've not explored yet, but it's surely still a bug. To fix, just skip the division when the pow() result is zero, so that we'll (most likely) return a zero selectivity estimate. In the edge cases where "sel" didn't yet underflow, perhaps this isn't desirable, but I'm not sure that the case is worth spending a lot of effort on. The results of regex_selectivity_sub() are barely worth the electrons they're written on anyway :-( Per report from Alexander Lakhin. Back-patch to all supported versions. Discussion: https://postgr.es/m/[email protected] ``` Test Plan: Build yugabyte DB and run test suite via Jenkins Reviewers: jason Reviewed By: jason Subscribers: yql Differential Revision: https://phabricator.dev.yugabyte.com/D10628
- Loading branch information