Use base64 to avoid truncation with PostgreSQL #167
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.
When using a PostgreSQL database, serializing the cart's content and storing them in a text column doesn't work. because PostegreSQL drops everything after a zero byte in text columns. And seeing as PHP's serialize adds zero bytes to private and protected members
this results as a truncated string being inserted in the
content
column and being unable to unserialize it later.This behaviour can be reproduced in the test suite by using a PostegreSQL database instead of a sqlite one.
Using base64, we can sidestep this issue, the zero byte will only "live" in PHP, and never be inserted in PostgreSQL.
Unfotunately, using base64 will end up being a breaking change for those that are currently using a PostgreSQL database, although I would imagine that already implemented some form of workaround because they would have been impacted by this bug already.