Skip to content
This repository was archived by the owner on Jan 28, 2021. It is now read-only.

Commit 6ddeaf8

Browse files
committed
sql/parse: error for unsupported distinct on aggregations
Signed-off-by: Miguel Molina <[email protected]>
1 parent 5f48ea3 commit 6ddeaf8

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

engine_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1026,7 +1026,7 @@ var queries = []struct {
10261026
FROM (
10271027
SELECT
10281028
i,
1029-
COUNT(DISTINCT s) AS foo
1029+
COUNT(s) AS foo
10301030
FROM mytable
10311031
GROUP BY i
10321032
) AS q

sql/parse/parse.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ import (
1010
"strings"
1111

1212
opentracing "github.com/opentracing/opentracing-go"
13-
"gopkg.in/src-d/go-errors.v1"
1413
"github.com/src-d/go-mysql-server/sql"
1514
"github.com/src-d/go-mysql-server/sql/expression"
1615
"github.com/src-d/go-mysql-server/sql/expression/function"
1716
"github.com/src-d/go-mysql-server/sql/plan"
17+
"gopkg.in/src-d/go-errors.v1"
1818
"vitess.io/vitess/go/vt/sqlparser"
1919
)
2020

@@ -765,6 +765,10 @@ func exprToExpression(e sqlparser.Expr) (sql.Expression, error) {
765765
return nil, err
766766
}
767767

768+
if v.Distinct {
769+
return nil, ErrUnsupportedSyntax.New("DISTINCT on aggregations")
770+
}
771+
768772
return expression.NewUnresolvedFunction(v.Name.Lowered(),
769773
v.IsAggregate(), exprs...), nil
770774
case *sqlparser.ParenExpr:

sql/parse/parse_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ package parse
33
import (
44
"testing"
55

6-
errors "gopkg.in/src-d/go-errors.v1"
76
"github.com/src-d/go-mysql-server/sql/expression"
87
"github.com/src-d/go-mysql-server/sql/plan"
8+
errors "gopkg.in/src-d/go-errors.v1"
99

10-
"github.com/stretchr/testify/require"
1110
"github.com/src-d/go-mysql-server/sql"
11+
"github.com/stretchr/testify/require"
1212
)
1313

1414
var fixtures = map[string]sql.Node{
@@ -1166,6 +1166,7 @@ var fixturesErrors = map[string]*errors.Kind{
11661166
`SELECT '2018-05-01' / INTERVAL 1 DAY`: ErrUnsupportedSyntax,
11671167
`SELECT INTERVAL 1 DAY + INTERVAL 1 DAY`: ErrUnsupportedSyntax,
11681168
`SELECT '2018-05-01' + (INTERVAL 1 DAY + INTERVAL 1 DAY)`: ErrUnsupportedSyntax,
1169+
`SELECT COUNT(DISTINCT foo) FROM b`: ErrUnsupportedSyntax,
11691170
}
11701171

11711172
func TestParseErrors(t *testing.T) {

0 commit comments

Comments
 (0)