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

Commit 34b964bb by Mick Hansen

Merge pull request #5458 from brendonboshell/master

empty array  in where should return no data
2 parents d3c25368 8c6c7740
...@@ -2004,9 +2004,20 @@ var QueryGenerator = { ...@@ -2004,9 +2004,20 @@ var QueryGenerator = {
return item && item.length; return item && item.length;
}); });
// $or: [] should return no data.
// $not of no restriction should also return no data
if ((key === '$or' || key === '$not') && value.length === 0) {
return '0 = 1';
}
return value.length ? outerBinding + '('+value.join(binding)+')' : undefined; return value.length ? outerBinding + '('+value.join(binding)+')' : undefined;
} else { } else {
value = self.whereItemsQuery(value, options, binding); value = self.whereItemsQuery(value, options, binding);
if ((key === '$or' || key === '$not') && !value) {
return '0 = 1';
}
return value ? outerBinding + '('+value+')' : undefined; return value ? outerBinding + '('+value+')' : undefined;
} }
} }
......
...@@ -248,6 +248,20 @@ suite(Support.getTestDialectTeaser('SQL'), function() { ...@@ -248,6 +248,20 @@ suite(Support.getTestDialectTeaser('SQL'), function() {
mssql: "([group_id] = 1 OR ([user_id] = 2 AND [role] = N'admin'))" mssql: "([group_id] = 1 OR ([user_id] = 2 AND [role] = N'admin'))"
}); });
}); });
testsql('$or', [], {
default: "0 = 1"
});
testsql('$or', {}, {
default: "0 = 1"
});
test("sequelize.or()", function () {
expectsql(sql.whereItemQuery(undefined, this.sequelize.or()), {
default: "0 = 1"
});
});
}); });
suite('$and', function () { suite('$and', function () {
...@@ -313,6 +327,14 @@ suite(Support.getTestDialectTeaser('SQL'), function() { ...@@ -313,6 +327,14 @@ suite(Support.getTestDialectTeaser('SQL'), function() {
}, { }, {
default: 'NOT ([shared] = 1 AND ([group_id] = 1 OR [user_id] = 2))' default: 'NOT ([shared] = 1 AND ([group_id] = 1 OR [user_id] = 2))'
}); });
testsql('$not', [], {
default: "0 = 1"
});
testsql('$not', {}, {
default: "0 = 1"
});
}); });
}); });
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!