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

canal解析增加分区语句失败 #3900

Closed
lilibin-0618 opened this issue Nov 2, 2021 · 5 comments
Closed

canal解析增加分区语句失败 #3900

lilibin-0618 opened this issue Nov 2, 2021 · 5 comments
Labels
Milestone

Comments

@lilibin-0618
Copy link

lilibin-0618 commented Nov 2, 2021

environment

  • canal version 1.1.5
  • mysql version Percona-Server-5.7.28, ENGINE = TokuDB

Issue Description

mysql执行增加分区的操作,一次性增加多个分区导致canal解析sql语句错误,但是逐条创建分区是正常的。

Steps to reproduce

查询了报错,应该是druid的问题

Expected behaviour

期望官方修复druid问题并引用进canal。

If there is an exception, please attach the exception trace:

Just put your stack trace here!
![242cefc87aea4cfc1b817f839f0b8dd6-80079](https://user-images.githubusercontent.com/85610880/139838129-51b350a7-16a9-45ae-aac1-276df50b79f0.png)

下面是canal的报错:
2021-11-02 19:30:43.759 [destination = online_mysql_XXXXX_progress , address = /172.16.2.109:3306 , EventParser] WARN  c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> begin to find start position, it will be long time for reset or first position
2021-11-02 19:30:43.765 [destination = online_mysql_XXXXX_progress , address = /172.16.2.109:3306 , EventParser] WARN  c.a.otter.canal.parse.inbound.mysql.tsdb.MemoryTableMeta - parse faield : alter table daily_progress add partition ( partition p20220201 VALUES LESS THAN (738552) ENGINE = TokuDB, PARTITION pmax VALUES LESS THAN MAXVALUE ENGINE = TokuDB)
com.alibaba.druid.sql.parser.ParserException: syntax error, error in :'ENGINE = TokuDB, PARTITION pmax VALUES ', expect ), actual ,, pos 105, line 1, column 105, token ,
	at com.alibaba.druid.sql.parser.SQLParser.printError(SQLParser.java:576) ~[druid-1.2.6.jar:1.2.6]
	at com.alibaba.druid.sql.parser.SQLParser.accept(SQLParser.java:584) ~[druid-1.2.6.jar:1.2.6]
	at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseAlterSpecification(MySqlStatementParser.java:6110) ~[druid-1.2.6.jar:1.2.6]
	at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseAlterTable(MySqlStatementParser.java:6810) ~[druid-1.2.6.jar:1.2.6]
	at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseAlter(MySqlStatementParser.java:5166) ~[druid-1.2.6.jar:1.2.6]
	at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:304) ~[druid-1.2.6.jar:1.2.6]
	at com.alibaba.druid.sql.SQLUtils.parseStatements(SQLUtils.java:565) ~[druid-1.2.6.jar:1.2.6]
	at com.alibaba.druid.sql.SQLUtils.parseStatements(SQLUtils.java:587) ~[druid-1.2.6.jar:1.2.6]
	at com.alibaba.druid.sql.repository.SchemaRepository.console(SchemaRepository.java:445) ~[druid-1.2.6.jar:1.2.6]
	at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.MemoryTableMeta.apply(MemoryTableMeta.java:84) ~[canal.parse-1.1.5.jar:na]
	at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta.applyHistoryOnMemory(DatabaseTableMeta.java:454) [canal.parse-1.1.5.jar:na]
	at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta.rollback(DatabaseTableMeta.java:167) [canal.parse-1.1.5.jar:na]
	at com.alibaba.otter.canal.parse.inbound.mysql.AbstractMysqlEventParser.processTableMeta(AbstractMysqlEventParser.java:142) [canal.parse-1.1.5.jar:na]
	at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$1.run(AbstractEventParser.java:197) [canal.parse-1.1.5.jar:na]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_201]
2021-11-02 19:30:43.765 [destination = online_mysql_XXXXX_progress , address = /172.16.2.109:3306 , EventParser] WARN  c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> find start position successfully, EntryPosition[included=false,journalName=mysql-bin.002668,position=713513730,serverId=1182953,gtid=3aby17t7a-11ef-11eb-885d-e4434ba4a6a8:1,5695430b-6a7d-11ea-9h52-e4434bb61830:1-10609618787,3a720ff1-74ee-11eb-92bb-246e96247198:1-2,f5d64471-6e5f-11e6-a298-246e96247198:1-1670230942,4b9e5eb0-6e61-11e6-a2a0-246e9624736c:1-125,timestamp=1635760819000] cost : 6ms , the next step is binlog dump


@lilibin-0618
Copy link
Author

h

1 similar comment
@lilibin-0618
Copy link
Author

h

@agapple
Copy link
Member

agapple commented May 17, 2022

提供一个完整的ddl语法

@agapple
Copy link
Member

agapple commented May 17, 2022

alter table daily_progress add partition ( partition p20220201 VALUES LESS THAN (738552) ENGINE = TokuDB, PARTITION pmax VALUES LESS THAN MAXVALUE ENGINE = TokuDB)

目前这个语法解析是有问题

@agapple agapple added the bug label May 17, 2022
@agapple agapple added this to the v1.1.6 milestone May 20, 2022
@agapple
Copy link
Member

agapple commented May 23, 2022

#4183

@agapple agapple closed this as completed May 23, 2022
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

2 participants