Skip to content

Commit

Permalink
Merge pull request #120 from vapor/revert-116-bugfix/union
Browse files Browse the repository at this point in the history
Revert "Fix for only retrieving a fields from the Model table in union SQL queries"
  • Loading branch information
tanner0101 authored Oct 13, 2016
2 parents 276b035 + c16c1a2 commit 7adb2df
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 14 deletions.
5 changes: 2 additions & 3 deletions Sources/Fluent/SQL/GeneralSQLSerializer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,8 @@ open class GeneralSQLSerializer: SQLSerializer {
var statement: [String] = []
var values: [Node] = []

let tableSQL = sql(table)
statement += "SELECT \(tableSQL).* FROM"
statement += tableSQL
statement += "SELECT * FROM"
statement += sql(table)

if !unions.isEmpty {
statement += sql(unions)
Expand Down
16 changes: 8 additions & 8 deletions Tests/FluentTests/SQLSerializerTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class SQLSerializerTests: XCTestCase {
let sql = SQL.select(table: "users", filters: [], joins: [], orders: [], limit: nil)
let (statement, values) = serialize(sql)

XCTAssertEqual(statement, "SELECT `users`.* FROM `users`")
XCTAssertEqual(statement, "SELECT * FROM `users`")
XCTAssert(values.isEmpty)
}

Expand All @@ -26,7 +26,7 @@ class SQLSerializerTests: XCTestCase {
let sql = SQL.select(table: "users", filters: [filter], joins: [], orders: [], limit: Limit(count: 5))
let (statement, values) = serialize(sql)

XCTAssertEqual(statement, "SELECT `users`.* FROM `users` WHERE `users`.`age` >= ? LIMIT 0, 5")
XCTAssertEqual(statement, "SELECT * FROM `users` WHERE `users`.`age` >= ? LIMIT 0, 5")
XCTAssertEqual(values.first?.int, 21)
XCTAssertEqual(values.count, 1)
}
Expand All @@ -36,7 +36,7 @@ class SQLSerializerTests: XCTestCase {
let sql = SQL.select(table: "users", filters: [filter], joins: [], orders: [], limit: Limit(count: 5, offset: 15))
let (statement, _) = serialize(sql)

XCTAssertEqual(statement, "SELECT `users`.* FROM `users` WHERE `users`.`age` >= ? LIMIT 15, 5")
XCTAssertEqual(statement, "SELECT * FROM `users` WHERE `users`.`age` >= ? LIMIT 15, 5")
}

func testFilterCompareSelect() {
Expand All @@ -45,7 +45,7 @@ class SQLSerializerTests: XCTestCase {
let select = SQL.select(table: "friends", filters: [filter], joins: [], orders: [], limit: nil)
let (statement, values) = serialize(select)

XCTAssertEqual(statement, "SELECT `friends`.* FROM `friends` WHERE `users`.`name` != ?")
XCTAssertEqual(statement, "SELECT * FROM `friends` WHERE `users`.`name` != ?")
XCTAssertEqual(values.first?.string, "duck")
XCTAssertEqual(values.count, 1)
}
Expand All @@ -56,7 +56,7 @@ class SQLSerializerTests: XCTestCase {
let select = SQL.select(table: "friends", filters: [filter], joins: [], orders: [], limit: nil)
let (statement, values) = serialize(select)

XCTAssertEqual(statement, "SELECT `friends`.* FROM `friends` WHERE `users`.`name` LIKE ?")
XCTAssertEqual(statement, "SELECT * FROM `friends` WHERE `users`.`name` LIKE ?")
XCTAssertEqual(values.first?.string, "duc%")
XCTAssertEqual(values.count, 1)
}
Expand Down Expand Up @@ -93,7 +93,7 @@ class SQLSerializerTests: XCTestCase {
let select = SQL.select(table: "users", filters: [one, group, four], joins: [], orders: [], limit: nil)
let (statement, values) = serialize(select)

XCTAssertEqual(statement, "SELECT `users`.* FROM `users` WHERE `users`.`1` = ? AND (`users`.`2` = ? OR `users`.`3` = ?) AND `users`.`4` = ?")
XCTAssertEqual(statement, "SELECT * FROM `users` WHERE `users`.`1` = ? AND (`users`.`2` = ? OR `users`.`3` = ?) AND `users`.`4` = ?")
XCTAssertEqual(values.count, 4)
}

Expand All @@ -102,7 +102,7 @@ class SQLSerializerTests: XCTestCase {
let name = Sort(User.self, "name", .ascending)
let select = SQL.select(table: "users", filters: [adult], joins: [], orders: [name], limit: nil)
let (statement, values) = serialize(select)
XCTAssertEqual(statement, "SELECT `users`.* FROM `users` WHERE `users`.`age` > ? ORDER BY `users`.`name` ASC")
XCTAssertEqual(statement, "SELECT * FROM `users` WHERE `users`.`age` > ? ORDER BY `users`.`name` ASC")
XCTAssertEqual(values.count, 1)
}

Expand All @@ -112,7 +112,7 @@ class SQLSerializerTests: XCTestCase {
let email = Sort(User.self, "email", .descending)
let select = SQL.select(table: "users", filters: [adult], joins: [], orders: [name, email], limit: nil)
let (statement, values) = serialize(select)
XCTAssertEqual(statement, "SELECT `users`.* FROM `users` WHERE `users`.`age` > ? ORDER BY `users`.`name` ASC, `users`.`email` DESC")
XCTAssertEqual(statement, "SELECT * FROM `users` WHERE `users`.`age` > ? ORDER BY `users`.`name` ASC, `users`.`email` DESC")
XCTAssertEqual(values.count, 1)
}
}
Expand Down
6 changes: 3 additions & 3 deletions Tests/FluentTests/UnionTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ class UnionTests: XCTestCase {
if let sql = lqd.lastQuery {
let serializer = GeneralSQLSerializer(sql: sql)
let (statement, values) = serializer.serialize()
XCTAssertEqual(statement, "SELECT `atoms`.* FROM `atoms` JOIN `compounds` ON `atoms`.`#local_key` = `compounds`.`#foreign_key`")
XCTAssertEqual(statement, "SELECT * FROM `atoms` JOIN `compounds` ON `atoms`.`#local_key` = `compounds`.`#foreign_key`")
XCTAssertEqual(values.count, 0)
} else {
XCTFail("No last query.")
Expand All @@ -106,7 +106,7 @@ class UnionTests: XCTestCase {
if let sql = lqd.lastQuery {
let serializer = GeneralSQLSerializer(sql: sql)
let (statement, values) = serializer.serialize()
XCTAssertEqual(statement, "SELECT `atoms`.* FROM `atoms` JOIN `compounds` ON `atoms`.`#local_key` = `compounds`.`#foreign_key` WHERE `atoms`.`protons` > ? AND `compounds`.`atoms` < ?")
XCTAssertEqual(statement, "SELECT * FROM `atoms` JOIN `compounds` ON `atoms`.`#local_key` = `compounds`.`#foreign_key` WHERE `atoms`.`protons` > ? AND `compounds`.`atoms` < ?")

if values.count == 2 {
XCTAssertEqual(values[0].int, 5)
Expand Down Expand Up @@ -135,7 +135,7 @@ class UnionTests: XCTestCase {
let (statement, values) = serializer.serialize()
XCTAssertEqual(
statement,
"SELECT `compounds`.* FROM `compounds` JOIN `atom_compound` ON `compounds`.`\(lqd.idKey)` = `atom_compound`.`compound_\(lqd.idKey)` WHERE `atom_compound`.`atom_\(lqd.idKey)` = ?"
"SELECT * FROM `compounds` JOIN `atom_compound` ON `compounds`.`\(lqd.idKey)` = `atom_compound`.`compound_\(lqd.idKey)` WHERE `atom_compound`.`atom_\(lqd.idKey)` = ?"
)
XCTAssertEqual(values.count, 1)
XCTAssertEqual(values.first?.int, 42)
Expand Down

0 comments on commit 7adb2df

Please sign in to comment.