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

Commit 6fb74c8a by Sushant Committed by GitHub

fix(query-generator): handle literal for substring based operators (#12210)

1 parent 8d9e58b4
......@@ -2593,14 +2593,20 @@ class QueryGenerator {
return this._joinKeyValue(key, value.map(identifier => this.quoteIdentifier(identifier)).join('.'), comparator, options.prefix);
case Op.startsWith:
comparator = this.OperatorMap[Op.like];
return this._joinKeyValue(key, this.escape(`${value}%`), comparator, options.prefix);
case Op.endsWith:
comparator = this.OperatorMap[Op.like];
return this._joinKeyValue(key, this.escape(`%${value}`), comparator, options.prefix);
case Op.substring:
comparator = this.OperatorMap[Op.like];
return this._joinKeyValue(key, this.escape(`%${value}%`), comparator, options.prefix);
if (value instanceof Utils.Literal) {
value = value.val;
}
let pattern = `${value}%`;
if (prop === Op.endsWith) pattern = `%${value}`;
if (prop === Op.substring) pattern = `%${value}%`;
return this._joinKeyValue(key, this.escape(pattern), comparator, options.prefix);
}
const escapeOptions = {
......
......@@ -441,6 +441,13 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
default: "[username] LIKE 'swagger%'",
mssql: "[username] LIKE N'swagger%'"
});
testsql('username', {
[Op.startsWith]: current.literal('swagger')
}, {
default: "[username] LIKE 'swagger%'",
mssql: "[username] LIKE N'swagger%'"
});
});
describe('Op.endsWith', () => {
......@@ -450,6 +457,13 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
default: "[username] LIKE '%swagger'",
mssql: "[username] LIKE N'%swagger'"
});
testsql('username', {
[Op.endsWith]: current.literal('swagger')
}, {
default: "[username] LIKE '%swagger'",
mssql: "[username] LIKE N'%swagger'"
});
});
describe('Op.substring', () => {
......@@ -459,6 +473,13 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
default: "[username] LIKE '%swagger%'",
mssql: "[username] LIKE N'%swagger%'"
});
testsql('username', {
[Op.substring]: current.literal('swagger')
}, {
default: "[username] LIKE '%swagger%'",
mssql: "[username] LIKE N'%swagger%'"
});
});
describe('Op.between', () => {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!