001package gudusoft.gsqlparser.ir.logical.rex;
002
003import gudusoft.gsqlparser.ir.common.SourceAnchor;
004import gudusoft.gsqlparser.ir.logical.RexNode;
005import gudusoft.gsqlparser.ir.logical.RexNodeVisitor;
006
007/**
008 * Constant/literal value expression.
009 */
010public final class RexLiteral extends RexNode {
011
012    public enum LiteralType {
013        STRING, INTEGER, DECIMAL, BOOLEAN, NULL, DATE, TIMESTAMP
014    }
015
016    private final String value;
017    private final LiteralType literalType;
018
019    public RexLiteral(String value, LiteralType literalType, SourceAnchor anchor) {
020        super(RexKind.LITERAL, anchor);
021        this.value = value;
022        this.literalType = literalType;
023    }
024
025    public String getValue() { return value; }
026    public LiteralType getLiteralType() { return literalType; }
027
028    @Override
029    public <R> R accept(RexNodeVisitor<R> visitor) { return visitor.visitLiteral(this); }
030
031    @Override
032    public String toString() { return value; }
033}