Skip to content

Commit b6cd219

Browse files
committed
recursively seek select clauses
1 parent 5636517 commit b6cd219

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

src/show.jl

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,18 @@ function show(io::IO, sql_expression::SQLExpression)
150150
end
151151
end
152152

153+
has_select(something) = false
154+
has_select(expression::SQLExpression) =
155+
expression.call in (:SELECT, Symbol("SELECT DISTINCT"))
156+
157+
seek_select(something) = false
158+
seek_select(expression::SQLExpression) =
159+
has_select(expression) ||
160+
any(seek_select(clause) for clause in expression.arguments)
161+
153162
# Default to * if no columns are specifcied
154163
function finalize(sql_expression::SQLExpression)
155-
if sql_expression.call in (:FROM, Symbol("GROUP BY"), Symbol("INNER JOIN"))
164+
if !seek_select(sql_expression)
156165
SQLExpression(:SELECT, sql_expression, :*)
157166
else
158167
sql_expression

test/runtests.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ filename = joinpath(@__DIR__, "Chinook_Sqlite.sqlite")
1717
database = Database(filename)
1818
database2 = Database(DB(filename))
1919

20+
@test (database.Track |>
21+
@filter(_.AlbumId == 1) |>
22+
collect |>
23+
first).Name == "For Those About To Rock (We Salute You)"
24+
2025
@test database.Track |>
2126
@map({_.TrackId, _.Name, _.Composer, _.UnitPrice}) |>
2227
collect |>

0 commit comments

Comments
 (0)