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:42:42 +01:00
parent 5e27424886
commit 3f3954bf9f
3 changed files with 27 additions and 1 deletions
@@ -241,7 +241,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
@@ -293,6 +293,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")
},
},
}
)
@@ -317,6 +323,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
}