Support the STD agg. fnc. on MySQL databases

This was supported in past versions, preserving here.
Other drivers currently do not support it (as in the past).
This commit is contained in:
Tomaž Jerman
2023-03-13 11:39:23 +01:00
parent 89e38c0381
commit 3ec7d19fae
3 changed files with 27 additions and 1 deletions
@@ -238,7 +238,7 @@ func (d mysqlDialect) ExprHandler(n *ql.ASTNode, args ...exp.Expression) (expr e
return drivers.OpHandlerNotIn(d, n, args...)
}
return ql.DefaultRefHandler(n, args...)
return ref2exp.RefHandler(n, args...)
}
func (d mysqlDialect) ValHandler(n *ql.ASTNode) (out exp.Expression, err error) {
@@ -0,0 +1,16 @@
package mysql
import (
"github.com/cortezaproject/corteza/server/store/adapters/rdbms/ql"
"github.com/doug-martin/goqu/v9/exp"
)
var (
ref2exp = ql.ExprHandlerMap{
"std": {
Handler: func(args ...exp.Expression) exp.Expression {
return exp.NewSQLFunctionExpression("STD", args[0])
},
},
}.ExprHandlers()
)
+10
View File
@@ -280,6 +280,12 @@ var (
return exp.NewSQLFunctionExpression("MAX", args[0])
},
},
"std": {
HandlerE: func(args ...exp.Expression) (exp.Expression, error) {
return nil, fmt.Errorf("STD function not supported on this database")
},
},
}
)
@@ -304,6 +310,10 @@ func (ee ExprHandlerMap) RefHandler(n *ql.ASTNode, args ...exp.Expression) (exp.
return nil, fmt.Errorf("unknown ref %q", r)
}
if ee[r].Handler != nil && ee[r].HandlerE != nil {
panic("invalid ql ref definition: both Handler and HandlerE are set")
}
if ee[r].Handler != nil {
return ee[r].Handler(args...), nil
}