-
-
Notifications
You must be signed in to change notification settings - Fork 4.3k
Fixed empty blob #9441
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fixed empty blob #9441
Conversation
| inherits(BLOB, BaseTypes.BLOB); | ||
|
|
||
| BLOB.parse = function(value, options, next) { | ||
| const data = next(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I dont think this works, can you show me a failing case
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure where the right place to add test case for this.
What I did here is only removed if what causes returning null instead of empty buffer.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok show me example of what you are trying to solve, paste it here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Something like:
expect(
(await model.findOne({ some_where_clause })).empty_buffer_column
).to.equal(Buffer.from(""));
In fact mysql2 what is used returns empty buffer in select queries, when sequelize catches that and returns null instead.
|
Ok so I have tested this change User
.sync({ force: true })
.then(() => {
return User.bulkCreate([{
username: 'anc',
data: Buffer.from('')
}, {
username: 'anc',
data: null
}]);
})
.then(() => {
return User.findAll();
})
.then(users => {
console.log(users[0].data, users[1].data);
});
### Output
<Buffer > nullIt seems MySQL2 now handles null case correctly, so as expected binary
sequelize/test/integration/model.test.js Line 2562 in 5f7d69a
Some related issues #8661 sidorares/node-mysql2#668 |
lib/dialects/mysql/data-types.js
Outdated
| } | ||
| inherits(BLOB, BaseTypes.BLOB); | ||
|
|
||
| BLOB.parse = function(value, options, next) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove BLOB function from this file, we will now go with mysql2 default
Pull Request check-list
Please make sure to review and check all of these items:
npm run testornpm run test-DIALECTpass with this change (including linting)?Description of change
SELECT query returns null instead of empty Buffer for BLOB type