Skip to content

Commit 2a4d373

Browse files
committed
1 parent a4460b5 commit 2a4d373

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

Sources/SQLite/Typed/Query.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -998,6 +998,10 @@ extension Connection {
998998
select.clauses.select = (false, [Expression<Void>(literal: "*") as Expressible])
999999
let queries = [select] + query.clauses.join.map { $0.query }
10001000
if !namespace.isEmpty {
1001+
let tableNames = queries.map({ $0.tableName().expression.template })
1002+
if !tableNames.contains(namespace) {
1003+
throw QueryError.noSuchTable(name: namespace)
1004+
}
10011005
for q in queries {
10021006
if q.tableName().expression.template == namespace {
10031007
try expandGlob(true)(q)

Tests/SQLiteTests/QueryTests.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,14 @@ class QueryTests : XCTestCase {
9393
users.join(posts, on: posts[userId] == users[id]).join(categories, on: categories[id] == posts[categoryId])
9494
)
9595
}
96+
97+
func test_join_compilesJoinClause_withNamespaces() {
98+
let query = users.join(posts, on: posts[userId] == users[id]).select(posts[*], users[*])
99+
AssertSQL(
100+
"SELECT \"posts\".*, \"users\".* FROM \"users\" INNER JOIN \"posts\" ON (\"posts\".\"user_id\" = \"users\".\"id\")",
101+
query
102+
)
103+
}
96104

97105
func test_filter_compilesWhereClause() {
98106
AssertSQL("SELECT * FROM \"users\" WHERE (\"admin\" = 1)", users.filter(admin == true))

0 commit comments

Comments
 (0)