Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1.1.7后,sql解析仍然存在一些问题 #2340

Closed
JackEggie opened this issue Feb 12, 2018 · 7 comments
Closed

1.1.7后,sql解析仍然存在一些问题 #2340

JackEggie opened this issue Feb 12, 2018 · 7 comments
Labels
Milestone

Comments

@JackEggie
Copy link

#2262 中的sql仍然报错:

sql:

CREATE DEFINER=`root`@`%` FUNCTION `hello`(s CHAR(20)) RETURNS char(50) CHARSET big5
    DETERMINISTIC
RETURN CONCAT('Hello, ',s,'!')

exception:

com.alibaba.druid.sql.parser.ParserException: syntax error, error in :'@`%` FUNCTION `hello`(s CHAR(20)) R', expect PROCEDURE, actual FUNCTION pos 34, line 1, column 26, token FUNCTION
	at com.alibaba.druid.sql.parser.SQLParser.printError(SQLParser.java:284)
	at com.alibaba.druid.sql.parser.SQLParser.accept(SQLParser.java:292)
	at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseCreateProcedure(MySqlStatementParser.java:4354)
	at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseCreate(MySqlStatementParser.java:323)
	at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:161)
	at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:72)
	at com.alibaba.druid.sql.SQLUtils.parseStatements(SQLUtils.java:464)
	at name.jacktang.JsqlparserTest.parse(JsqlparserTest.java:31)
	at name.jacktang.JsqlparserTest.access$000(JsqlparserTest.java:17)
	at name.jacktang.JsqlparserTest$1.load(JsqlparserTest.java:24)
	at name.jacktang.JsqlparserTest$1.load(JsqlparserTest.java:21)
	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3522)
	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2315)
	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2278)
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2193)
	... 5 more

#2267 中的sql仍然报错:

sql:

CREATE TABLE IF NOT EXISTS srcTable
(
  `id` BIGINT(20) NOT NULL,
  `queue_id` BIGINT(20) NOT NULL DEFAULT '-1',
  `status` TINYINT(4) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT 10 AVG_ROW_LENGTH 10 DEFAULT CHARACTER SET=utf8 DEFAULT COLLATE = utf8_general_ci
CHECKSUM=0 COMPRESSION='NONE' CONNECTION = 'connect_string'  DELAY_KEY_WRITE = 0 ENCRYPTION 'N' INSERT_METHOD FIRST
MAX_ROWS 1000 MIN_ROWS=10 PACK_KEYS DEFAULT PASSWORD '12345678' STATS_AUTO_RECALC 0 STATS_PERSISTENT 0 
STATS_SAMPLE_PAGES 10

exception:

com.alibaba.druid.sql.parser.ParserException: syntax error, error in :'UM=0 COMPRESSION='NONE' CONNECTION ', expect IDENTIFIER, actual IDENTIFIER pos 313, line 8, column 24, token IDENTIFIER COMPRESSION
	at com.alibaba.druid.sql.parser.SQLParser.printError(SQLParser.java:284)
	at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:423)
	at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:72)
	at com.alibaba.druid.sql.SQLUtils.parseStatements(SQLUtils.java:464)
	at name.jacktang.JsqlparserTest.parse(JsqlparserTest.java:31)
	at name.jacktang.JsqlparserTest.access$000(JsqlparserTest.java:17)
	at name.jacktang.JsqlparserTest$1.load(JsqlparserTest.java:24)
	at name.jacktang.JsqlparserTest$1.load(JsqlparserTest.java:21)
	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3522)
	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2315)
	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2278)
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2193)
	... 5 more

sql:

CREATE TABLE IF NOT EXISTS ttable
(
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`queue_id` varchar(20) NOT NULL DEFAULT '-1',
`status` TINYINT(4) NOT NULL DEFAULT '1',
`geometry` geometry not null,
CONSTRAINT PRIMARY KEY (`id`),
CONSTRAINT UNIQUE KEY `uk_queue_id` USING BTREE (`queue_id`) KEY_BLOCK_SIZE=10,
FULLTEXT KEY `ft_status` (`queue_id`),
spatial index `spatial` (`geometry`),
CONSTRAINT FOREIGN KEY `fk_test`(`queue_id`) REFERENCES `test`(`id`)
) ENGINE=INNODB

exception:

com.alibaba.druid.sql.parser.ParserException: syntax error, error in :'id`) KEY_BLOCK_SIZE=10,
FULLTEXT KE', expect RPAREN, actual IDENTIFIER pos 301, line 8, column 62, token IDENTIFIER KEY_BLOCK_SIZE
	at com.alibaba.druid.sql.parser.SQLParser.printError(SQLParser.java:284)
	at com.alibaba.druid.sql.parser.SQLParser.accept(SQLParser.java:292)
	at com.alibaba.druid.sql.dialect.mysql.parser.MySqlCreateTableParser.parseCreateTable(MySqlCreateTableParser.java:217)
	at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseCreate(MySqlStatementParser.java:243)
	at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:161)
	at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:72)
	at com.alibaba.druid.sql.SQLUtils.parseStatements(SQLUtils.java:464)
	at name.jacktang.JsqlparserTest.parse(JsqlparserTest.java:31)
	at name.jacktang.JsqlparserTest.access$000(JsqlparserTest.java:17)
	at name.jacktang.JsqlparserTest$1.load(JsqlparserTest.java:24)
	at name.jacktang.JsqlparserTest$1.load(JsqlparserTest.java:21)
	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3522)
	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2315)
	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2278)
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2193)
	... 5 more
@wenshao wenshao added the Bug label Feb 12, 2018
@wenshao wenshao added this to the 1.1.9 milestone Feb 12, 2018
@wuyan2018
Copy link

1.1.6 提的问题说是1.1.7解决,1.1.7怎么还是报The query timeout value -1 is not valid,加了validationQueryTimeout参数设置>0还是不解决问题,sql server2008,1.1.8版本还下载不下来。

@wenshao
Copy link
Member

wenshao commented Feb 12, 2018

http://repo1.maven.org/maven2/com/alibaba/druid/1.1.8/
@wuyan2018 下载不下来是怎么回事?问题在1.1.8中解决了的。

@wuyan2018
Copy link

Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-dependencies/2.0.0.RC1/spring-boot-dependencies-2.0.0.RC1.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 17.846 s
[INFO] Finished at: 2018-02-19T08:00:53+08:00
[INFO] Final Memory: 20M/243M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project springboot_boss: Could not resolve dependencies for project com.guoxun:springboot_boss:jar:0.0.1-SNAPSHOT:
Failed to collect dependencies at com.alibaba:druid-spring-boot-starter:jar:1.1.8: Failed to read artifact descriptor for com.alibaba:druid-spring-boot-starter:jar:1.1.8:
Could not find artifact org.springframework.boot:spring-boot-dependencies:pom:2.0.0.RC1 in central (https://repo.maven.apache.org/maven2) -> [Help 1]
难道spring boot 1.5.10.RELEASE 不能用? 但是 druid 1.1.7 也没有解决问题啊
@wenshao 谢谢回复,辛苦了!

wenshao added a commit that referenced this issue Feb 19, 2018
@wuyan2018
Copy link

@wenshao 我是maven 不能下载,用的是spring boot 1.5.10release

com.alibaba
druid-spring-boot-starter
1.1.8

@wenshao
Copy link
Member

wenshao commented Mar 11, 2018

https://github.com/alibaba/druid/releases/tag/1.1.9
问题已修复,请用新版本

@wenshao wenshao closed this as completed Mar 11, 2018
@taolive
Copy link

taolive commented Sep 12, 2018

https://github.com/alibaba/druid/releases/tag/1.1.9
问题已修复,请用新版本

使用maven 1.1.9 版本,问题还会存在

sql脚本:

DROP FUNCTION IF EXISTS `currval`;
DELIMITER ;;
CREATE  FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS int(11)
BEGIN
DECLARE VALUE INTEGER;
SET VALUE = 0;
SELECT current_value INTO VALUE FROM sequence WHERE NAME = seq_name;
RETURN VALUE;
END
;;
DELIMITER ;

解析报错:

java.sql.SQLException: sql injection violation, class com.alibaba.druid.sql.dialect.mysql.ast.clause.MySqlDeclareStatement not allow : CREATE  FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS int(11)
BEGIN
DECLARE VALUE INTEGER;
SET VALUE = 0;
SELECT current_value INTO VALUE FROM sequence WHERE NAME = seq_name;
RETURN VALUE;
END

@lxinghe
Copy link

lxinghe commented Jun 17, 2021

为啥关掉了?解决了?2021年了我用的v1.2.6还是有这个问题呢?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants