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

Commit 95f7fb5c by Over Martinez Committed by GitHub

fix(mssql): empty order array generates invalid FETCH statement (#12261)

1 parent ed2d7a90
...@@ -913,9 +913,9 @@ class MSSQLQueryGenerator extends AbstractQueryGenerator { ...@@ -913,9 +913,9 @@ class MSSQLQueryGenerator extends AbstractQueryGenerator {
} }
if (options.limit || options.offset) { if (options.limit || options.offset) {
if (!options.order || options.include && !orders.subQueryOrder.length) { if (!options.order || !options.order.length || options.include && !orders.subQueryOrder.length) {
const tablePkFragment = `${this.quoteTable(options.tableAs || model.name)}.${this.quoteIdentifier(model.primaryKeyField)}`; const tablePkFragment = `${this.quoteTable(options.tableAs || model.name)}.${this.quoteIdentifier(model.primaryKeyField)}`;
if (!options.order) { if (!options.order || !options.order.length) {
fragment += ` ORDER BY ${tablePkFragment}`; fragment += ` ORDER BY ${tablePkFragment}`;
} else { } else {
const orderFieldNames = _.map(options.order, order => order[0]); const orderFieldNames = _.map(options.order, order => order[0]);
......
...@@ -79,5 +79,14 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -79,5 +79,14 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
mysql: " LIMIT '\\';DELETE FROM user', 10", mysql: " LIMIT '\\';DELETE FROM user', 10",
mssql: " OFFSET N''';DELETE FROM user' ROWS FETCH NEXT 10 ROWS ONLY" mssql: " OFFSET N''';DELETE FROM user' ROWS FETCH NEXT 10 ROWS ONLY"
}); });
testsql({
limit: 10,
order: [], // When the order is an empty array, one is automagically prepended
model: { primaryKeyField: 'id', name: 'tableRef' }
}, {
default: ' LIMIT 10',
mssql: ' ORDER BY [tableRef].[id] OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY'
});
}); });
}); });
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!