From 2ef9ab64f1fc1e8d09bd70bfff1ff9ecf6fb7450 Mon Sep 17 00:00:00 2001 From: Anshul Khandelwal <12948312+k-anshul@users.noreply.github.com> Date: Fri, 18 Sep 2026 13:30:16 +0530 Subject: [PATCH] reject queries without from clause --- runtime/metricsview/metricssql/parser.go | 4 ++-- runtime/metricsview/metricssql/parser_test.go | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/runtime/metricsview/metricssql/parser.go b/runtime/metricsview/metricssql/parser.go index 418f4181ce8c..f80bc0d29eab 100644 --- a/runtime/metricsview/metricssql/parser.go +++ b/runtime/metricsview/metricssql/parser.go @@ -188,10 +188,10 @@ type selectField struct { } func (q *query) parseFrom(ctx context.Context, node *ast.TableRefsClause) error { - n := node.TableRefs - if n == nil || n.Left == nil { + if node == nil || node.TableRefs == nil || node.TableRefs.Left == nil { return fmt.Errorf("metrics sql: need `FROM metrics_view` clause") } + n := node.TableRefs if n.Right != nil { return fmt.Errorf("metrics sql: join is not supported") } diff --git a/runtime/metricsview/metricssql/parser_test.go b/runtime/metricsview/metricssql/parser_test.go index ec2c576b53e3..a9bd831d20db 100644 --- a/runtime/metricsview/metricssql/parser_test.go +++ b/runtime/metricsview/metricssql/parser_test.go @@ -251,6 +251,10 @@ func TestCompile(t *testing.T) { "select pub from ad_bids_metrics, ad_bids_metrics_advanced", "metrics sql: join is not supported", }, + { + "select 1", + "metrics sql: need `FROM metrics_view` clause", + }, } clm, err := rt.ResolveSecurity(t.Context(), instanceID, claims, mv)