From f45ae3c6bc282422a251938c868e639f084836c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Tue, 17 Jan 2023 20:42:15 +0530 Subject: [PATCH] Add val handler for bool type on MySQL --- .../adapters/rdbms/drivers/mysql/dialect.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/server/store/adapters/rdbms/drivers/mysql/dialect.go b/server/store/adapters/rdbms/drivers/mysql/dialect.go index 3c737f6c8..88be83515 100644 --- a/server/store/adapters/rdbms/drivers/mysql/dialect.go +++ b/server/store/adapters/rdbms/drivers/mysql/dialect.go @@ -6,8 +6,10 @@ import ( "github.com/cortezaproject/corteza/server/store/adapters/rdbms/ddl" "github.com/cortezaproject/corteza/server/store/adapters/rdbms/ql" + "github.com/spf13/cast" "github.com/cortezaproject/corteza/server/pkg/dal" + "github.com/cortezaproject/corteza/server/pkg/expr" "github.com/cortezaproject/corteza/server/store/adapters/rdbms/drivers" "github.com/doug-martin/goqu/v9" "github.com/doug-martin/goqu/v9/dialect/mysql" @@ -243,7 +245,20 @@ func (d mysqlDialect) ExprHandler(n *ql.ASTNode, args ...exp.Expression) (expr e } func (d mysqlDialect) ValHandler(n *ql.ASTNode) (out exp.Expression, err error) { - return ql.DefaultValueHandler(n) + switch v := n.Value.V.(type) { + case *expr.Boolean: + // value handling for boolean is different in mysql + // this was done to support value parsing for (IS ?) statement + if cast.ToBool(v.Get()) { + out = drivers.LiteralTRUE + } else { + out = drivers.LiteralFALSE + } + default: + out = exp.NewLiteralExpression("?", n.Value.V.Get()) + } + + return } func (d mysqlDialect) OrderedExpression(expr exp.Expression, dir exp.SortDirection, _ exp.NullSortType) exp.OrderedExpression {