不要怂,就是干,撸起袖子干!

Commit 4ff64088 by Sushant Committed by GitHub

fix(abstract/query-generator): properly escape/stringify IN values as per field definition (#8480)

1 parent 321394b4
...@@ -2311,7 +2311,7 @@ const QueryGenerator = { ...@@ -2311,7 +2311,7 @@ const QueryGenerator = {
} }
if (value.length) { if (value.length) {
return this._joinKeyValue(key, `(${value.map(item => this.escape(item)).join(', ')})`, comparator, options.prefix); return this._joinKeyValue(key, `(${value.map(item => this.escape(item, field)).join(', ')})`, comparator, options.prefix);
} }
if (comparator === this.OperatorMap[Op.in]) { if (comparator === this.OperatorMap[Op.in]) {
......
...@@ -415,6 +415,28 @@ suite(Support.getTestDialectTeaser('SQL'), () => { ...@@ -415,6 +415,28 @@ suite(Support.getTestDialectTeaser('SQL'), () => {
'INNER JOIN [Post] AS [postaliasname] ON [User].[id] = [postaliasname].[user_id];' 'INNER JOIN [Post] AS [postaliasname] ON [User].[id] = [postaliasname].[user_id];'
}); });
}); });
it('properly stringify IN values as per field definition', () => {
const User = Support.sequelize.define('User', {
name: DataTypes.STRING,
age: DataTypes.INTEGER,
data: DataTypes.BLOB
}, {
freezeTableName: true
});
expectsql(sql.selectQuery('User', {
attributes: ['name', 'age', 'data'],
where: {
data: ['123']
}
}, User), {
postgres: 'SELECT "name", "age", "data" FROM "User" AS "User" WHERE "User"."data" IN (E\'\\\\x313233\');',
mysql: 'SELECT `name`, `age`, `data` FROM `User` AS `User` WHERE `User`.`data` IN (X\'313233\');',
sqlite: 'SELECT `name`, `age`, `data` FROM `User` AS `User` WHERE `User`.`data` IN (X\'313233\');',
mssql: 'SELECT [name], [age], [data] FROM [User] AS [User] WHERE [User].[data] IN (0x313233);'
});
});
}); });
suite('queryIdentifiersFalse', () => { suite('queryIdentifiersFalse', () => {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!