diff --git a/server/store/adapters/rdbms/drivers/mysql/dialect.go b/server/store/adapters/rdbms/drivers/mysql/dialect.go index 88be83515..68d4007a9 100644 --- a/server/store/adapters/rdbms/drivers/mysql/dialect.go +++ b/server/store/adapters/rdbms/drivers/mysql/dialect.go @@ -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) { diff --git a/server/store/adapters/rdbms/drivers/mysql/ql.go b/server/store/adapters/rdbms/drivers/mysql/ql.go new file mode 100644 index 000000000..3dcef0793 --- /dev/null +++ b/server/store/adapters/rdbms/drivers/mysql/ql.go @@ -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() +) diff --git a/server/store/adapters/rdbms/ql/ref.go b/server/store/adapters/rdbms/ql/ref.go index 9843c66b3..e2aaae2b4 100644 --- a/server/store/adapters/rdbms/ql/ref.go +++ b/server/store/adapters/rdbms/ql/ref.go @@ -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 }