Loading sharding-core/src/main/java/io/shardingsphere/core/parsing/lexer/Lexer.java +2 −2 Original line number Diff line number Diff line Loading @@ -109,7 +109,7 @@ public class Lexer { return isIdentifierBegin(getCurrentChar(0)); } private boolean isIdentifierBegin(final char ch) { protected boolean isIdentifierBegin(final char ch) { return CharType.isAlphabet(ch) || '`' == ch || '_' == ch || '$' == ch; } Loading @@ -126,7 +126,7 @@ public class Lexer { return CharType.isSymbol(getCurrentChar(0)); } private boolean isCharsBegin() { protected boolean isCharsBegin() { return '\'' == getCurrentChar(0) || '\"' == getCurrentChar(0); } Loading sharding-core/src/main/java/io/shardingsphere/core/parsing/lexer/analyzer/Tokenizer.java +4 −0 Original line number Diff line number Diff line Loading @@ -153,6 +153,10 @@ public final class Tokenizer { int length = getLengthUntilTerminatedChar('`'); return new Token(Literals.IDENTIFIER, input.substring(offset, offset + length), offset + length); } if ('"' == charAt(offset)) { int length = getLengthUntilTerminatedChar('"'); return new Token(Literals.IDENTIFIER, input.substring(offset, offset + length), offset + length); } int length = 0; while (isIdentifierChar(charAt(offset + length))) { length++; Loading sharding-core/src/main/java/io/shardingsphere/core/parsing/lexer/dialect/postgresql/PostgreSQLLexer.java +11 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package io.shardingsphere.core.parsing.lexer.dialect.postgresql; import io.shardingsphere.core.parsing.lexer.Lexer; import io.shardingsphere.core.parsing.lexer.analyzer.CharType; import io.shardingsphere.core.parsing.lexer.analyzer.Dictionary; /** Loading @@ -32,4 +33,14 @@ public final class PostgreSQLLexer extends Lexer { public PostgreSQLLexer(final String input) { super(input, dictionary); } @Override protected boolean isIdentifierBegin(final char ch) { return CharType.isAlphabet(ch) || '\"' == ch || '_' == ch; } @Override protected boolean isCharsBegin() { return '\'' == getCurrentChar(0); } } sharding-core/src/test/resources/parser/select.xml +16 −3 Original line number Diff line number Diff line Loading @@ -361,4 +361,17 @@ </and-condition> </or-condition> </parser-result> <parser-result sql-case-id="select_with_double_quotes" parameters="1"> <tables> <table name="t_order_item" /> </tables> <tokens> <table-token begin-position="14" original-literals=""t_order_item"" /> </tokens> <order-by-columns> <order-by-column name="item_id" order-direction="ASC" /> </order-by-columns> </parser-result> </parser-result-sets> sharding-jdbc/src/test/resources/asserts/cases/dql/dql-integrate-test-cases.xml +5 −0 Original line number Diff line number Diff line Loading @@ -296,4 +296,9 @@ <dql-test-case sql-case-id="select_sub_query_with_group_by"> <assertion expected-data-file="select_sub_query_with_group_by.xml" /> </dql-test-case> <dql-test-case sql-case-id="select_with_double_quotes"> <assertion parameters="100001:int" expected-data-file="select_not_equal_with_single_table.xml" /> </dql-test-case> </integrate-test-cases> Loading
sharding-core/src/main/java/io/shardingsphere/core/parsing/lexer/Lexer.java +2 −2 Original line number Diff line number Diff line Loading @@ -109,7 +109,7 @@ public class Lexer { return isIdentifierBegin(getCurrentChar(0)); } private boolean isIdentifierBegin(final char ch) { protected boolean isIdentifierBegin(final char ch) { return CharType.isAlphabet(ch) || '`' == ch || '_' == ch || '$' == ch; } Loading @@ -126,7 +126,7 @@ public class Lexer { return CharType.isSymbol(getCurrentChar(0)); } private boolean isCharsBegin() { protected boolean isCharsBegin() { return '\'' == getCurrentChar(0) || '\"' == getCurrentChar(0); } Loading
sharding-core/src/main/java/io/shardingsphere/core/parsing/lexer/analyzer/Tokenizer.java +4 −0 Original line number Diff line number Diff line Loading @@ -153,6 +153,10 @@ public final class Tokenizer { int length = getLengthUntilTerminatedChar('`'); return new Token(Literals.IDENTIFIER, input.substring(offset, offset + length), offset + length); } if ('"' == charAt(offset)) { int length = getLengthUntilTerminatedChar('"'); return new Token(Literals.IDENTIFIER, input.substring(offset, offset + length), offset + length); } int length = 0; while (isIdentifierChar(charAt(offset + length))) { length++; Loading
sharding-core/src/main/java/io/shardingsphere/core/parsing/lexer/dialect/postgresql/PostgreSQLLexer.java +11 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package io.shardingsphere.core.parsing.lexer.dialect.postgresql; import io.shardingsphere.core.parsing.lexer.Lexer; import io.shardingsphere.core.parsing.lexer.analyzer.CharType; import io.shardingsphere.core.parsing.lexer.analyzer.Dictionary; /** Loading @@ -32,4 +33,14 @@ public final class PostgreSQLLexer extends Lexer { public PostgreSQLLexer(final String input) { super(input, dictionary); } @Override protected boolean isIdentifierBegin(final char ch) { return CharType.isAlphabet(ch) || '\"' == ch || '_' == ch; } @Override protected boolean isCharsBegin() { return '\'' == getCurrentChar(0); } }
sharding-core/src/test/resources/parser/select.xml +16 −3 Original line number Diff line number Diff line Loading @@ -361,4 +361,17 @@ </and-condition> </or-condition> </parser-result> <parser-result sql-case-id="select_with_double_quotes" parameters="1"> <tables> <table name="t_order_item" /> </tables> <tokens> <table-token begin-position="14" original-literals=""t_order_item"" /> </tokens> <order-by-columns> <order-by-column name="item_id" order-direction="ASC" /> </order-by-columns> </parser-result> </parser-result-sets>
sharding-jdbc/src/test/resources/asserts/cases/dql/dql-integrate-test-cases.xml +5 −0 Original line number Diff line number Diff line Loading @@ -296,4 +296,9 @@ <dql-test-case sql-case-id="select_sub_query_with_group_by"> <assertion expected-data-file="select_sub_query_with_group_by.xml" /> </dql-test-case> <dql-test-case sql-case-id="select_with_double_quotes"> <assertion parameters="100001:int" expected-data-file="select_not_equal_with_single_table.xml" /> </dql-test-case> </integrate-test-cases>