Fix bit string literals over SQL adapter #8112
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.
So, bytea and bitstring/bit varying are not the same thing in pg. In SQL, they are both represented by string literals (of type unknown). The difference is that bitstring can have sub-byte length.
Initially, I represented BitStringConstant with bytes + bitlength. It turned out that Python has no easy way to convert 10101010001 to bytes, so I replaced that with plain str, as it was passed from parser.
We do still need
ByteaConstant
, because in EdgeQL's bytes literal should land in bytea pg type, not bitstring.Here is the now unused code for codegen of the old BitStringConstants: