Open ifrenzyc opened 8 years ago
分析代码,发现是 CharTypes.identifierFlags 判断 identifier 缺少判断 ‘-’ 字符。 由于 odps 采用 ‘--’ 做 comment 因此只修改了 MySQL 的逻辑: MysqlLexer.java
+ private final static boolean[] identifierFlags = new boolean[256];
+ static {
+ identifierFlags['-'] = true;
+ }
+
+ private boolean isIdentifierChar0(char c) {
+ if (c <= identifierFlags.length) {
+ return identifierFlags[c];
+ }
+
+ return c != ' ' && c != ',';
+ }
private boolean isIdentifierChar(char c) {
- return c != '#' && CharTypes.isIdentifierChar(c);
+ return c != '#' && (CharTypes.isIdentifierChar(c) || isIdentifierChar0(c));
}
代码如下:
执行后获取的 database = 'test',不是预期的 'test-ds'