Browse Source

Fix subQuery when used as a binary right

auto-join
Casey Foster 12 years ago
parent
commit
7c44b1bc7a
  1. 12
      lib/dialect/postgres.js
  2. 8
      test/dialects/table-tests.js

12
lib/dialect/postgres.js

@ -231,17 +231,9 @@ Postgres.prototype.visitQuery = function(queryNode) {
Postgres.prototype.visitSubquery = function(queryNode) { Postgres.prototype.visitSubquery = function(queryNode) {
var subQuery = new this._myClass(); var subQuery = new this._myClass();
subQuery.visitQuery(queryNode); subQuery.visitQuery(queryNode);
var alias = queryNode.alias;
this.params = this.params.concat(subQuery.params); this.params = this.params.concat(subQuery.params);
return '(' + subQuery.output.join(' ') + ')' + (alias ? ' ' + alias : '');
var result = subQuery.output;
result[0] = '('+result[0];
result[result.length-1] = result[result.length-1] + ')';
if(queryNode.alias) {
result[result.length-1] = result[result.length-1] + ' ' + queryNode.alias;
}
return result;
}; };
Postgres.prototype.visitTable = function(tableNode) { Postgres.prototype.visitTable = function(tableNode) {

8
test/dialects/table-tests.js

@ -165,3 +165,11 @@ Harness.test({
mysql : 'SELECT `user`.`name` AS `quote"quote"tick``tick``` FROM `user`', mysql : 'SELECT `user`.`name` AS `quote"quote"tick``tick``` FROM `user`',
params: [] params: []
}); });
Harness.test({
query : user.select(user.star()).where(user.id['in'](user.subQuery().select(user.id))),
pg : 'SELECT "user".* FROM "user" WHERE ("user"."id" IN (SELECT "user"."id" FROM "user"))',
sqlite: 'SELECT "user".* FROM "user" WHERE ("user"."id" IN (SELECT "user"."id" FROM "user"))',
mysql : 'SELECT `user`.* FROM `user` WHERE (`user`.`id` IN (SELECT `user`.`id` FROM `user`))',
params: []
});

Loading…
Cancel
Save