Skip to content
Merged
Show file tree
Hide file tree
Changes from 19 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
220 changes: 220 additions & 0 deletions enginetest/queries/script_queries.go
Original file line number Diff line number Diff line change
Expand Up @@ -7887,6 +7887,226 @@ where
},
},
},
{
Name: "std, stdev, stddev_pop, variance, var_pop, var_samp tests",
Dialect: "mysql",
SetUpScript: []string{
"create table t (i int);",
"create table tt (i int, j int);",
"insert into tt values (0, 1), (0, 2), (0, 3);",
"insert into tt values (1, 123), (1, 456), (1, 789);",
},
Assertions: []ScriptTestAssertion{
{
Query: "select std(i), stddev(i), stddev_pop(i), stddev_samp(i) from t;",
Expected: []sql.Row{
{nil, nil, nil, nil},
},
},
{
Query: "select variance(i), var_pop(i), var_samp(i) from t;",
Expected: []sql.Row{
{nil, nil, nil},
},
},
{
Query: "insert into t values (1);",
Expected: []sql.Row{
{types.NewOkResult(1)},
},
},
{
Query: "select std(i), stddev(i), stddev_pop(i), stddev_samp(i) from t;",
Expected: []sql.Row{
{0.0, 0.0, 0.0, nil},
},
},
{
Query: "select variance(i), var_pop(i), var_samp(i) from t;",
Expected: []sql.Row{
{0.0, 0.0, nil},
},
},
{
Query: "insert into t values (2);",
Expected: []sql.Row{
{types.NewOkResult(1)},
},
},
{
Query: "select std(i), stddev(i), stddev_pop(i), stddev_samp(i) from t;",
Expected: []sql.Row{
{0.5, 0.5, 0.5, 0.7071067811865476},
},
},
{
Query: "select variance(i), var_pop(i), var_samp(i) from t;",
Expected: []sql.Row{
{0.25, 0.25, 0.5},
},
},
{
Query: "insert into t values (3);",
Expected: []sql.Row{
{types.NewOkResult(1)},
},
},
{
Query: "select std(i), stddev(i), stddev_pop(i), stddev_samp(i) from t;",
Expected: []sql.Row{
{0.816496580927726, 0.816496580927726, 0.816496580927726, 1.0},
},
},
{
Query: "select variance(i), var_pop(i), var_samp(i) from t;",
Expected: []sql.Row{
{0.6666666666666666, 0.6666666666666666, 1.0},
},
},
{
Query: "insert into t values (null), (null);",
Expected: []sql.Row{
{types.NewOkResult(2)},
},
},
{
Query: "select std(i), stddev(i), stddev_pop(i), stddev_samp(i) from t;",
Expected: []sql.Row{
{0.816496580927726, 0.816496580927726, 0.816496580927726, 1.0},
},
},
{
Query: "select variance(i), var_pop(i), var_samp(i) from t;",
Expected: []sql.Row{
{0.6666666666666666, 0.6666666666666666, 1.0},
},
},
{
Query: "select i, std(j), stddev_samp(j) from tt group by i;",
Expected: []sql.Row{
{0, 0.816496580927726, 1.0},
{1, 271.89336144893275, 333.0},
},
},
{
Query: "select i, variance(i), var_samp(i) from tt group by i;",
Expected: []sql.Row{
{0, 0.0, 0.0},
{1, 0.0, 0.0},
},
},
{
Query: "select std(i) over(), std(j) over(), stddev_samp(j) over() from tt order by i;",
Expected: []sql.Row{
{0.5, 297.47660972475353, 325.86929895281634},
{0.5, 297.47660972475353, 325.86929895281634},
{0.5, 297.47660972475353, 325.86929895281634},
{0.5, 297.47660972475353, 325.86929895281634},
{0.5, 297.47660972475353, 325.86929895281634},
{0.5, 297.47660972475353, 325.86929895281634},
},
},
{
Query: "select i, std(j) over(partition by i), stddev_samp(j) over(partition by i) from tt order by i;",
Expected: []sql.Row{
{0, 0.816496580927726, 1.0},
{0, 0.816496580927726, 1.0},
{0, 0.816496580927726, 1.0},
{1, 271.89336144893275, 333.0},
{1, 271.89336144893275, 333.0},
{1, 271.89336144893275, 333.0},
},
},
{
Query: "select i, variance(i) over(), var_samp(i) over() from tt order by i;",
Expected: []sql.Row{
{0, 0.25, 0.3},
{0, 0.25, 0.3},
{0, 0.25, 0.3},
{1, 0.25, 0.3},
{1, 0.25, 0.3},
{1, 0.25, 0.3},
},
},
{
Query: "select i, variance(j) over(partition by i), var_samp(i) over(partition by i) from tt order by i;",
Expected: []sql.Row{
{0, 0.6666666666666666, 0.0},
{0, 0.6666666666666666, 0.0},
{0, 0.6666666666666666, 0.0},
{1, 73926.0, 0.0},
{1, 73926.0, 0.0},
{1, 73926.0, 0.0},
},
},
{
Query: "insert into tt values (null, null);",
Expected: []sql.Row{
{types.NewOkResult(1)},
},
},
{
Query: "select i, std(i) over(), std(j) over(), stddev_samp(j) over() from tt order by i;",
Expected: []sql.Row{
{nil, 0.5, 297.47660972475353, 325.86929895281634},
{0, 0.5, 297.47660972475353, 325.86929895281634},
{0, 0.5, 297.47660972475353, 325.86929895281634},
{0, 0.5, 297.47660972475353, 325.86929895281634},
{1, 0.5, 297.47660972475353, 325.86929895281634},
{1, 0.5, 297.47660972475353, 325.86929895281634},
{1, 0.5, 297.47660972475353, 325.86929895281634},
},
},
{
Query: "select i, std(j) over(partition by i), stddev_samp(j) over(partition by i) from tt order by i;",
Expected: []sql.Row{
{nil, nil, nil},
{0, 0.816496580927726, 1.0},
{0, 0.816496580927726, 1.0},
{0, 0.816496580927726, 1.0},
{1, 271.89336144893275, 333.0},
{1, 271.89336144893275, 333.0},
{1, 271.89336144893275, 333.0},
},
},
{
Query: "select i, variance(i) over(), var_samp(i) over() from tt order by i;",
Expected: []sql.Row{
{nil, 0.25, 0.3},
{0, 0.25, 0.3},
{0, 0.25, 0.3},
{0, 0.25, 0.3},
{1, 0.25, 0.3},
{1, 0.25, 0.3},
{1, 0.25, 0.3},
},
},
{
Query: "select i, variance(j) over(partition by i), var_samp(i) over(partition by i) from tt order by i;",
Expected: []sql.Row{
{nil, nil, nil},
{0, 0.6666666666666666, 0.0},
{0, 0.6666666666666666, 0.0},
{0, 0.6666666666666666, 0.0},
{1, 73926.0, 0.0},
{1, 73926.0, 0.0},
{1, 73926.0, 0.0},
},
},
{
Query: "select i, stddev_pop(j) over w, stddev_samp(j) over w, variance(j) over w, var_samp(i) over w from tt window w as (partition by i) order by i;",
Expected: []sql.Row{
{nil, nil, nil, nil, nil},
{0, 0.816496580927726, 1.0, 0.6666666666666666, 0.0},
{0, 0.816496580927726, 1.0, 0.6666666666666666, 0.0},
{0, 0.816496580927726, 1.0, 0.6666666666666666, 0.0},
{1, 271.89336144893275, 333.0, 73926.0, 0.0},
{1, 271.89336144893275, 333.0, 73926.0, 0.0},
{1, 271.89336144893275, 333.0, 73926.0, 0.0},
},
},
},
},
}

var SpatialScriptTests = []ScriptTest{
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ require (
github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad
github.com/dolthub/jsonpath v0.0.2-0.20240227200619-19675ab05c71
github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81
github.com/dolthub/vitess v0.0.0-20250409183615-d8335325e91c
github.com/dolthub/vitess v0.0.0-20250410090211-143e6b272ad4
github.com/go-kit/kit v0.10.0
github.com/go-sql-driver/mysql v1.7.2-0.20231213112541-0004702b931d
github.com/gocraft/dbr/v2 v2.7.2
Expand Down
6 changes: 2 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,8 @@ github.com/dolthub/jsonpath v0.0.2-0.20240227200619-19675ab05c71 h1:bMGS25NWAGTE
github.com/dolthub/jsonpath v0.0.2-0.20240227200619-19675ab05c71/go.mod h1:2/2zjLQ/JOOSbbSboojeg+cAwcRV0fDLzIiWch/lhqI=
github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81 h1:7/v8q9XGFa6q5Ap4Z/OhNkAMBaK5YeuEzwJt+NZdhiE=
github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81/go.mod h1:siLfyv2c92W1eN/R4QqG/+RjjX5W2+gCTRjZxBjI3TY=
github.com/dolthub/vitess v0.0.0-20250325024605-8131be3ca6d3 h1:euU+adNAYw46Zcp1HnoaSDWhqjfaL8s/1SPU+i16gYM=
github.com/dolthub/vitess v0.0.0-20250325024605-8131be3ca6d3/go.mod h1:1gQZs/byeHLMSul3Lvl3MzioMtOW1je79QYGyi2fd70=
github.com/dolthub/vitess v0.0.0-20250409183615-d8335325e91c h1:hl+yPanHdJML9aMB0MgrTCpzsd3jIf/o3r8pC6Tqx6E=
github.com/dolthub/vitess v0.0.0-20250409183615-d8335325e91c/go.mod h1:1gQZs/byeHLMSul3Lvl3MzioMtOW1je79QYGyi2fd70=
github.com/dolthub/vitess v0.0.0-20250410090211-143e6b272ad4 h1:LGTt2LtYX8vaai32d+c9L0sMcP+Dg9w1kO6+lbsxxYg=
github.com/dolthub/vitess v0.0.0-20250410090211-143e6b272ad4/go.mod h1:1gQZs/byeHLMSul3Lvl3MzioMtOW1je79QYGyi2fd70=
github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
Expand Down
10 changes: 9 additions & 1 deletion optgen/cmd/source/unary_aggs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,12 @@ unaryAggs:
desc: "returns the minimum value of expr in all rows."
- name: "Sum"
desc: "returns the sum of expr in all rows"
nullable: false
nullable: false
- name: "StdDevPop"
desc: "returns the population standard deviation of expr"
- name: "StdDevSamp"
desc: "returns the sample standard deviation of expr"
- name: "VarPop"
desc: "returns the population variance of expr"
- name: "VarSamp"
desc: "returns the sample variance of expr"
4 changes: 2 additions & 2 deletions sql/expression/function/aggregation/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,11 +125,11 @@ func (a *unaryAggBase) WithChildren(children ...sql.Expression) (sql.Expression,
return &na, nil
}

func (a unaryAggBase) FunctionName() string {
func (a *unaryAggBase) FunctionName() string {
return a.functionName
}

func (a unaryAggBase) Description() string {
func (a *unaryAggBase) Description() string {
return a.description
}

Expand Down
Loading
Loading