Skip to content
This repository was archived by the owner on Jul 14, 2025. It is now read-only.

Commit f3ecd52

Browse files
authored
FIX: allow query to be explained (#371)
Bug introduced during refactoring in this PR: #318 Explain parameter must be passed to `ResultFormatConverter`.
1 parent 08a01b2 commit f3ecd52

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

app/controllers/discourse_data_explorer/query_controller.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ def run
194194
result,
195195
query_params:,
196196
download: params[:download],
197+
explain: params[:explain] == "true",
197198
)
198199
end
199200
format.csv do

spec/requests/query_controller_spec.rb

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,13 @@ def make_query(sql, opts = {}, group_ids = [])
126126
end
127127

128128
describe "#run" do
129-
def run_query(id, params = {})
129+
def run_query(id, params = {}, explain = false)
130130
params = Hash[params.map { |a| [a[0], a[1].to_s] }]
131-
post "/admin/plugins/explorer/queries/#{id}/run.json", params: { params: params.to_json }
131+
post "/admin/plugins/explorer/queries/#{id}/run.json",
132+
params: {
133+
params: params.to_json,
134+
explain: explain,
135+
}
132136
end
133137

134138
it "can run queries" do
@@ -139,6 +143,18 @@ def run_query(id, params = {})
139143
expect(response_json["errors"]).to eq([])
140144
expect(response_json["columns"]).to eq(["my_value"])
141145
expect(response_json["rows"]).to eq([[23]])
146+
expect(response_json["explain"]).to be_nil
147+
end
148+
149+
it "can run and explain queries" do
150+
query = make_query("SELECT 23 as my_value")
151+
run_query query.id, {}, true
152+
expect(response.status).to eq(200)
153+
expect(response_json["success"]).to eq(true)
154+
expect(response_json["errors"]).to eq([])
155+
expect(response_json["columns"]).to eq(["my_value"])
156+
expect(response_json["rows"]).to eq([[23]])
157+
expect(response_json["explain"]).to match("Result ")
142158
end
143159

144160
it "can process parameters" do

0 commit comments

Comments
 (0)