Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/ExpressionExtractor.java +4 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,10 @@ public final class ExpressionExtractor { if (numberNode.isPresent()) { result.setLiterals(NumberUtil.getExactlyNumber(numberNode.get().getText(), 10)); } Optional<ParserRuleContext> doubleNode = ExtractorUtils.findFirstChildNode(expressionNode, RuleName.DOUBLE_VALUE); if (doubleNode.isPresent()) { result.setLiterals(Double.parseDouble(doubleNode.get().getText())); } Optional<ParserRuleContext> stringNode = ExtractorUtils.findFirstChildNode(expressionNode, RuleName.STRING); if (stringNode.isPresent()) { String text = stringNode.get().getText(); Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/util/RuleName.java +2 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,8 @@ public enum RuleName { NUMBER("Number"), DOUBLE_VALUE("DoubleValue"), STRING("String"), EXPR("Expr"), Loading sharding-core/sharding-core-parse/sharding-core-parse-mysql/src/main/antlr4/imports/mysql/BaseRule.g4 +5 −0 Original line number Diff line number Diff line Loading @@ -191,6 +191,7 @@ variable literal : question | number | doubleValue | TRUE | FALSE | NULL Loading @@ -210,6 +211,10 @@ number : NUMBER_ ; doubleValue : DOUBLE_VALUE_ ; string : STRING_ ; Loading sharding-core/sharding-core-parse/sharding-core-parse-mysql/src/main/antlr4/imports/mysql/Literals.g4 +5 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,11 @@ STRING_ ; NUMBER_ : MINUS_? INT_? DOT_? INT_ (E [+\-]? INT_)? : MINUS_? INT_ ; DOUBLE_VALUE_ : MINUS_? INT_? DOT_ INT_ (E [+\-]? INT_)? ; HEX_DIGIT_ Loading sharding-core/sharding-core-parse/sharding-core-parse-test/src/test/resources/parser/insert.xml +12 −0 Original line number Diff line number Diff line Loading @@ -618,4 +618,16 @@ <and-condition/> </or-condition> </parser-result> <parser-result sql-case-id="insert_with_double_value"> <tables> <table name="t_double_test" /> </tables> <tokens> <table-token start-index="12" table-name="t_double_test" length="13" /> <insert-values-token begin-position="25" /> </tokens> <or-condition> <and-condition/> </or-condition> </parser-result> </parser-result-sets> Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/ExpressionExtractor.java +4 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,10 @@ public final class ExpressionExtractor { if (numberNode.isPresent()) { result.setLiterals(NumberUtil.getExactlyNumber(numberNode.get().getText(), 10)); } Optional<ParserRuleContext> doubleNode = ExtractorUtils.findFirstChildNode(expressionNode, RuleName.DOUBLE_VALUE); if (doubleNode.isPresent()) { result.setLiterals(Double.parseDouble(doubleNode.get().getText())); } Optional<ParserRuleContext> stringNode = ExtractorUtils.findFirstChildNode(expressionNode, RuleName.STRING); if (stringNode.isPresent()) { String text = stringNode.get().getText(); Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/util/RuleName.java +2 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,8 @@ public enum RuleName { NUMBER("Number"), DOUBLE_VALUE("DoubleValue"), STRING("String"), EXPR("Expr"), Loading
sharding-core/sharding-core-parse/sharding-core-parse-mysql/src/main/antlr4/imports/mysql/BaseRule.g4 +5 −0 Original line number Diff line number Diff line Loading @@ -191,6 +191,7 @@ variable literal : question | number | doubleValue | TRUE | FALSE | NULL Loading @@ -210,6 +211,10 @@ number : NUMBER_ ; doubleValue : DOUBLE_VALUE_ ; string : STRING_ ; Loading
sharding-core/sharding-core-parse/sharding-core-parse-mysql/src/main/antlr4/imports/mysql/Literals.g4 +5 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,11 @@ STRING_ ; NUMBER_ : MINUS_? INT_? DOT_? INT_ (E [+\-]? INT_)? : MINUS_? INT_ ; DOUBLE_VALUE_ : MINUS_? INT_? DOT_ INT_ (E [+\-]? INT_)? ; HEX_DIGIT_ Loading
sharding-core/sharding-core-parse/sharding-core-parse-test/src/test/resources/parser/insert.xml +12 −0 Original line number Diff line number Diff line Loading @@ -618,4 +618,16 @@ <and-condition/> </or-condition> </parser-result> <parser-result sql-case-id="insert_with_double_value"> <tables> <table name="t_double_test" /> </tables> <tokens> <table-token start-index="12" table-name="t_double_test" length="13" /> <insert-values-token begin-position="25" /> </tokens> <or-condition> <and-condition/> </or-condition> </parser-result> </parser-result-sets>