[8.x] Add better bitwise operators support #40529
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Impetus
This addresses the problem mentioned in issue #40484
Changes
Since the bitwise operators are fundamentally different from other, in the sense that they do not produce boolean expression but integer based expressions, I elected to treat them differently from others.
Currently, both MySQL and SQLite support "implicit casting" of integer to boolean, but SQL Server and PostgreSQL do not.
The idea is to have a uniform behavior across all supported databases.
Previously this would yield a PDOException on PostgreSQL for instance :
The proposed implementation is database agnostic (as far as I'm aware at least). This is done by forcing a comparison, thus transforming the expression into a boolean one.
What next
This could open the door to support for basic arithmetic operators (e.g.
+
,-
, etc...), although I would argue those appear even more elusively in WHERE clauses.