StarRocks / starrocks

StarRocks, a Linux Foundation project, is a next-generation sub-second MPP OLAP database for full analytics scenarios, including multi-dimensional analytics, real-time analytics, and ad-hoc queries.
https://starrocks.io
Apache License 2.0
8.3k stars 1.68k forks source link

[BUG] Alter table occur parse exception #44524

Closed xuzifu666 closed 2 months ago

xuzifu666 commented 2 months ago

Alter table had bug for optimze buckets.

Steps to reproduce the behavior (Required)

  1. CREATE TABLE ods_datalake_sr ( pk_names varchar(65533) NOT NULL COMMENT "主键", operation_ts bigint(20) NULL COMMENT "比较键", operation_type varchar(10) NULL COMMENT "binlog数据类型", db_name varchar(20) NULL COMMENT "库名", tb_name varchar(100) NULL COMMENT "表名", id int(11) NULL COMMENT "id主键", user_id varchar(65533) NULL COMMENT "id", name varchar(65533) NULL COMMENT "name", from varchar(65533) NULL COMMENT "来源", model varchar(65533) NULL COMMENT "号" ) ENGINE=OLAP PRIMARY KEY(pk_names) DISTRIBUTED BY HASH(pk_names) BUCKETS 90 PROPERTIES ( "replication_num" = "2", "in_memory" = "false", "enable_persistent_index" = "true", "replicated_storage" = "true", "compression" = "LZ4" );

had a col named from in table

2.ALTER TABLE ods_datalake_srDISTRIBUTED BY HASH(pk_names) BUCKETS 75;

  1. show alter table OPTIMIZE ;
    ALTER DISTRIBUTED BY HASH(pk_names) BUCKETS 75 | 1739880 | CANCELLED | replace partitions failed com.starrocks.alter.AlterCancelException: all partitions rewrite failed | 99 | 86400 |

  2. fe log: 2024-04-22 14:38:43,344 WARN (starrocks-taskrun-pool-211|3616532) [TaskRunExecutor.lambda$executeTaskRun$0():57] failed to execute TaskRun. com.starrocks.sql.parser.ParsingException: Getting syntax error at line 1, column 216. Detail message: Unexpected input 'from', the most similar input is {a legal identifier}. at com.starrocks.sql.parser.ErrorHandler.syntaxError(ErrorHandler.java:40) ~[starrocks-fe.jar:?] at org.antlr.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:41) ~[antlr4-runtime-4.9.2.jar:4.9.2] at org.antlr.v4.runtime.Parser.notifyErrorListeners(Parser.java:544) ~[antlr4-runtime-4.9.2.jar:4.9.2] at com.starrocks.sql.parser.SqlParser$1.reportInputMismatch(SqlParser.java:222) ~[starrocks-fe.jar:?] at org.antlr.v4.runtime.DefaultErrorStrategy.reportError(DefaultErrorStrategy.java:139) ~[antlr4-runtime-4.9.2.jar:4.9.2] at com.starrocks.sql.parser.StarRocksParser.selectItem(StarRocksParser.java:35224) ~[starrocks-fe.jar:?] at com.starrocks.sql.parser.StarRocksParser.querySpecification(StarRocksParser.java:34229) ~[starrocks-fe.jar:?] at com.starrocks.sql.parser.StarRocksParser.queryPrimary(StarRocksParser.java:33729) ~[starrocks-fe.jar:?] at com.starrocks.sql.parser.StarRocksParser.queryNoWith(StarRocksParser.java:33435) ~[starrocks-fe.jar:?] at com.starrocks.sql.parser.StarRocksParser.queryRelation(StarRocksParser.java:33312) ~[starrocks-fe.jar:?] at com.starrocks.sql.parser.StarRocksParser.queryStatement(StarRocksParser.java:33244) ~[starrocks-fe.jar:?] at com.starrocks.sql.parser.StarRocksParser.insertStatement(StarRocksParser.java:16019) ~[starrocks-fe.jar:?] at com.starrocks.sql.parser.StarRocksParser.statement(StarRocksParser.java:1852) ~[starrocks-fe.jar:?] at com.starrocks.sql.parser.StarRocksParser.singleStatement(StarRocksParser.java:756) ~[starrocks-fe.jar:?] at com.starrocks.sql.parser.StarRocksParser.sqlStatements(StarRocksParser.java:647) ~[starrocks-fe.jar:?] at com.starrocks.sql.parser.SqlParser.parseWithStarRocksDialect(SqlParser.java:103)

Expected behavior (Required)

success alter table with buckets change

Real behavior (Required)

error out for parse error

StarRocks version (Required)

3.2.4

xuzifu666 commented 2 months ago

https://github.com/StarRocks/starrocks/pull/44533 @meegoo Could you help review for the pr whether is fit for fix it.