From de55a76d402a6326c60a5f4cd1a03c7476613f0b Mon Sep 17 00:00:00 2001
From: Simon Willison
{% if query %}{{ query.sql }}{% endif %}
{% endif %}
{% else %}
{% if not canned_query %}
{% endif %}
{% endif %}
diff --git a/datasette/views/database.py b/datasette/views/database.py
index 0cf93832..8e4ea85a 100644
--- a/datasette/views/database.py
+++ b/datasette/views/database.py
@@ -577,7 +577,7 @@ class QueryView(View):
named_parameters = []
if canned_query and canned_query.get("params"):
named_parameters = canned_query["params"]
- if not named_parameters:
+ if not named_parameters and sql:
named_parameters = derive_named_parameters(sql)
named_parameter_values = {
named_parameter: params.get(named_parameter) or ""
@@ -602,7 +602,7 @@ class QueryView(View):
params_for_query = params
- if not canned_query_write:
+ if sql and not canned_query_write:
try:
if not canned_query:
# For regular queries we only allow SELECT, plus other rules
@@ -646,6 +646,8 @@ class QueryView(View):
# Handle formats from plugins
if format_ == "csv":
+ if not sql:
+ raise DatasetteError("?sql= is required", status=400)
async def fetch_data_for_csv(request, _next=None):
results = await db.execute(sql, params, truncate=True)
@@ -771,25 +773,26 @@ class QueryView(View):
# - No magic parameters, so no :_ in the SQL string
edit_sql_url = None
is_validated_sql = False
- try:
- validate_sql_select(sql)
- is_validated_sql = True
- except InvalidSql:
- pass
- if allow_execute_sql and is_validated_sql and ":_" not in sql:
- edit_sql_url = (
- datasette.urls.database(database)
- + "/-/query"
- + "?"
- + urlencode(
- {
- **{
- "sql": sql,
- },
- **named_parameter_values,
- }
+ if sql:
+ try:
+ validate_sql_select(sql)
+ is_validated_sql = True
+ except InvalidSql:
+ pass
+ if allow_execute_sql and is_validated_sql and ":_" not in sql:
+ edit_sql_url = (
+ datasette.urls.database(database)
+ + "/-/query"
+ + "?"
+ + urlencode(
+ {
+ **{
+ "sql": sql,
+ },
+ **named_parameter_values,
+ }
+ )
)
- )
async def query_actions():
query_actions = []
diff --git a/docs/changelog.rst b/docs/changelog.rst
index 329b4769..dfb2a736 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -4,6 +4,13 @@
Changelog
=========
+.. _v1_0_unreleased:
+
+Unreleased
+----------
+
+- Fixed a bug where visiting ``/