SQL Expressions: Add STDDEV(), VARIANCE() and aliases (#103851)

* SQL Expressions: Bump GMS for STDDEV(), VARIANCE()

Bump Go MySQL Server to the latest version, to get support for STDDEV()
and VARIANCE() functions, and their aliases.

See https://github.com/dolthub/go-mysql-server/pull/2928

* Update app-code to comply with latest GMS version

* Run `go mod tidy`

* Update test which had depended on STDDEV being missing

* Run `make update-workspace`
This commit is contained in:
Sam Jewell
2025-04-15 10:48:19 +01:00
committed by GitHub
parent 4ea56b2cfb
commit 5c418196f9
7 changed files with 17 additions and 17 deletions
+2 -2
View File
@@ -195,11 +195,11 @@ func TestQueryFramesDateTimeSelect(t *testing.T) {
}
func TestErrorsFromGoMySQLServerAreFlagged(t *testing.T) {
const GmsNotImplemented = "STDDEV" // not implemented in go-mysql-server as of 2025-03-18
const GmsNotImplemented = "TRUNCATE" // not implemented in go-mysql-server as of 2025-04-11
db := DB{}
query := `SELECT ` + GmsNotImplemented + `(1);`
query := `SELECT ` + GmsNotImplemented + `(123.456, 2);`
_, err := db.QueryFrames(context.Background(), "sqlExpressionRefId", query, nil)
require.Error(t, err)
+1 -1
View File
@@ -42,7 +42,7 @@ func convertToDataFrame(ctx *mysql.Context, iter mysql.RowIter, schema mysql.Sch
for i, val := range row {
// Run val through mysql.Type.Convert to normalize underlying value
// of the interface
nV, _, err := schema[i].Type.Convert(val)
nV, _, err := schema[i].Type.Convert(ctx, val)
if err != nil {
return nil, err
}
+2 -2
View File
@@ -72,7 +72,7 @@ type rowIter struct {
row int
}
func (ri *rowIter) Next(_ *mysql.Context) (mysql.Row, error) {
func (ri *rowIter) Next(ctx *mysql.Context) (mysql.Row, error) {
// We assume each field in the Frame has the same number of rows.
numRows := 0
if len(ri.ft.Frame.Fields) > 0 {
@@ -95,7 +95,7 @@ func (ri *rowIter) Next(_ *mysql.Context) (mysql.Row, error) {
// If the field is JSON, convert json.RawMessage to types.JSONDocument
if raw, ok := val.(json.RawMessage); ok {
doc, inRange, err := types.JSON.Convert(raw)
doc, inRange, err := types.JSON.Convert(ctx, raw)
if err != nil {
return nil, fmt.Errorf("failed to convert json.RawMessage to JSONDocument: %w", err)
}