From 8c4e09207c74294364eefa14159338908bc65f67 Mon Sep 17 00:00:00 2001 From: Ting-Wei Lan Date: Wed, 27 Mar 2019 17:09:24 +0800 Subject: core: vm: sqlvm: support SQL three-valued logic on AST We make the zero value invalid by design. Users must be aware of the difference between SQL boolean and Go boolean and initialize it explicitly. --- core/vm/sqlvm/parser/internal/grammar.peg | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'core/vm/sqlvm/parser/internal/grammar.peg') diff --git a/core/vm/sqlvm/parser/internal/grammar.peg b/core/vm/sqlvm/parser/internal/grammar.peg index 7429f65a4..a0cb9ec63 100644 --- a/core/vm/sqlvm/parser/internal/grammar.peg +++ b/core/vm/sqlvm/parser/internal/grammar.peg @@ -912,7 +912,11 @@ BoolLiteral node := &ast.BoolValueNode{} node.SetPosition(uint32(c.pos.offset)) node.SetLength(uint32(len(c.text))) - node.V = bytes.EqualFold(b.([]byte), []byte("TRUE")) + if bytes.EqualFold(b.([]byte), []byte("TRUE")) { + node.V = ast.BoolValueTrue + } else { + node.V = ast.BoolValueFalse + } return node, nil } -- cgit v1.2.3