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:
@@ -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()
|
||||
)
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user