From 671036432fddafa12807f6900543e4077c8e379a Mon Sep 17 00:00:00 2001 From: Todd Gruben Date: Mon, 28 Jul 2014 16:56:40 +0000 Subject: [PATCH] check for empty values in query --- query/parser.go | 15 ++++++++++++++- query/planner_test.go | 13 +++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/query/parser.go b/query/parser.go index e688d3da0..907927e12 100644 --- a/query/parser.go +++ b/query/parser.go @@ -214,7 +214,20 @@ ArgLoop: if query.Operation == "get" && query.Args["frame"] == nil { query.Args["frame"] = "general" } - + if len(query.Args) == 0 && len(query.Subqueries) == 0 { + if query.Operation == "count" { + return nil, fmt.Errorf("No Args Given") + } + if query.Operation == "intersect" { + return nil, fmt.Errorf("No Args Given") + } + if query.Operation == "union" { + return nil, fmt.Errorf("No Args Given") + } + if query.Operation == "difference" { + return nil, fmt.Errorf("No Args Given") + } + } return query, nil } diff --git a/query/planner_test.go b/query/planner_test.go index 2e96df223..237f456c9 100644 --- a/query/planner_test.go +++ b/query/planner_test.go @@ -5,6 +5,7 @@ import ( "pilosa/db" "pilosa/util" "testing" + . "github.com/smartystreets/goconvey/convey" ) @@ -202,4 +203,16 @@ func TestQueryPlanner(t *testing.T) { So(qp[3].(*TopNQueryStep).Input, ShouldEqual, qp[2].(GetQueryStep).Id) So(qp[3].(*TopNQueryStep).N, ShouldEqual, 50) }) + Convey("Get query plan - including parsing", t, func() { + + _, err := QueryForPQL("count()") + So(err, ShouldNotEqual, nil) + _, err = QueryForPQL("count(intersect())") + So(err, ShouldNotEqual, nil) + _, err = QueryForPQL("count(get(10, default))") + So(err, ShouldEqual, nil) + _, err = QueryForPQL("count(union())") + So(err, ShouldNotEqual, nil) + }) + }