From c8179f74d4f589e1c6889945e9304095dcba286e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Mon, 18 Jul 2022 18:40:34 +0200 Subject: [PATCH] Fix boolean field Backward compatibility for alias store codec The JSON record value codec properly encoded T/F as "1"/"" but the plain codec did not. --- store/adapters/rdbms/drivers/columns.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/store/adapters/rdbms/drivers/columns.go b/store/adapters/rdbms/drivers/columns.go index bee6718cd..8e55b286e 100644 --- a/store/adapters/rdbms/drivers/columns.go +++ b/store/adapters/rdbms/drivers/columns.go @@ -70,6 +70,19 @@ func (c *SingleValueColumn) Decode(raw any, r dal.ValueSetter) error { return err } + // now, encode the value according to JSON format constraints + switch c.attr.Type.(type) { + case *dal.TypeBoolean: + // for backward compatibility reasons + // we need to cast true bool values to "1" + // and use "" for other (false) values + if cast.ToBool(value) { + value = "1" + } else { + value = "" + } + } + ident := c.attr.Ident if !valid { return r.SetValue(ident, 0, nil)