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

[array low cardinality] alter table error in aggregate table #45532

Open wangruin opened 1 month ago

wangruin commented 1 month ago

Steps to reproduce the behavior (Required)

mysql>  CREATE TABLE `array_low_cardinality_aggregate` ( `c1` date NULL COMMENT "", `c2` int(11) NULL COMMENT "", `c3` int(11) NULL COMMENT "", `c4` varchar(20) NULL COMMENT "", `c5` varchar(20) NULL COMMENT "", `c6` array<date> replace NULL COMMENT "", `c7` array<int(11)> replace NULL COMMENT "", `c8` array<int(11)> replace NULL COMMENT "", `c9` array<varchar(20)> replace NULL COMMENT "", `c10` array<varchar(20)> replace NULL COMMENT "", `c11` array<varchar(20)> replace NULL COMMENT "", `c12` array<array<varchar(20)>> replace NULL COMMENT "" ) ENGINE=OLAP aggregate KEY(`c1`, `c2`, `c3`, `c4`, `c5`) PARTITION BY RANGE(`c1`) (PARTITION p1 VALUES [("0000-01-01"), ("1993-01-01")), PARTITION p2 VALUES [("1993-01-01"), ("1994-01-01")), PARTITION p3 VALUES [("1994-01-01"), ("1995-01-01")), PARTITION p4 VALUES [("1995-01-01"), ("1996-01-01")), PARTITION p5 VALUES [("1996-01-01"), ("1997-01-01")), PARTITION p6 VALUES [("1997-01-01"), ("1998-01-01")), PARTITION p7 VALUES [("1998-01-01"), ("1999-01-01"))) DISTRIBUTED BY HASH(`c1`) BUCKETS 48 PROPERTIES ("replication_num" = "3");
Query OK, 0 rows affected (0.24 sec)

mysql> alter table array_low_cardinality_aggregate MODIFY COLUMN c10 array<varchar(20)> AFTER c5;
ERROR 1064 (HY000): Unexpected exception: null

Expected behavior (Required)

alter table success

Real behavior (Required)

ERROR 1064 (HY000): Unexpected exception: null

2024-05-13 15:32:58.754+08:00 WARN (thrift-server-pool-78|244) [StmtExecutor.handleDdlStmt():1607] DDL statement (alter table array_low_cardinality_aggregate MODIFY COLUMN c10 array<varc
har(20)> AFTER c5) process failed.
java.lang.IllegalArgumentException: null
        at com.google.common.base.Preconditions.checkArgument(Preconditions.java:129) ~[spark-dpp-1.0.0.jar:?]
        at com.starrocks.alter.SchemaChangeHandler.processModifyColumn(SchemaChangeHandler.java:434) ~[starrocks-fe.jar:?]
        at com.starrocks.alter.SchemaChangeHandler.analyzeAndCreateJob(SchemaChangeHandler.java:1650) ~[starrocks-fe.jar:?]
        at com.starrocks.alter.SchemaChangeHandler.process(SchemaChangeHandler.java:1764) ~[starrocks-fe.jar:?]
        at com.starrocks.alter.AlterJobMgr.processAlterTable(AlterJobMgr.java:565) ~[starrocks-fe.jar:?]
        at com.starrocks.server.LocalMetastore.alterTable(LocalMetastore.java:3062) ~[starrocks-fe.jar:?]
        at com.starrocks.server.MetadataMgr.alterTable(MetadataMgr.java:313) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.DDLStmtExecutor$StmtExecutorVisitor.lambda$visitAlterTableStatement$13(DDLStmtExecutor.java:355) ~[starrocks-fe.jar:?]
        at com.starrocks.common.ErrorReport.wrapWithRuntimeException(ErrorReport.java:108) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.DDLStmtExecutor$StmtExecutorVisitor.visitAlterTableStatement(DDLStmtExecutor.java:354) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.DDLStmtExecutor$StmtExecutorVisitor.visitAlterTableStatement(DDLStmtExecutor.java:180) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.ast.AlterTableStmt.accept(AlterTableStmt.java:64) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.ast.AstVisitor.visit(AstVisitor.java:70) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.DDLStmtExecutor.execute(DDLStmtExecutor.java:166) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.StmtExecutor.handleDdlStmt(StmtExecutor.java:1577) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.StmtExecutor.execute(StmtExecutor.java:642) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.ConnectProcessor.proxyExecute(ConnectProcessor.java:850) ~[starrocks-fe.jar:?]
        at com.starrocks.service.FrontendServiceImpl.forward(FrontendServiceImpl.java:1154) ~[starrocks-fe.jar:?]
        at com.starrocks.thrift.FrontendService$Processor$forward.getResult(FrontendService.java:4276) ~[starrocks-fe.jar:?]
        at com.starrocks.thrift.FrontendService$Processor$forward.getResult(FrontendService.java:4256) ~[starrocks-fe.jar:?]
        at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38) ~[libthrift-0.13.0.jar:0.13.0]
        at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:38) ~[libthrift-0.13.0.jar:0.13.0]
        at com.starrocks.common.SRTThreadPoolServer$WorkerProcess.run(SRTThreadPoolServer.java:311) ~[starrocks-fe.jar:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
        at java.lang.Thread.run(Thread.java:829) ~[?:?]

StarRocks version (Required)

wangruin commented 2 days ago
2024-07-05 10:45:56.238+08:00 WARN (thrift-server-pool-18|206) [StmtExecutor.handleDdlStmt():1678] DDL statement (alter table lineorder rename column lo_partkey lo_partkey_2) process failed.
 java.lang.IllegalStateException
    at com.google.common.base.Preconditions.checkState(Preconditions.java:496)
    at com.starrocks.alter.SchemaChangeHandler.analyzeAndCreateJob(SchemaChangeHandler.java:1831)
    at com.starrocks.alter.SchemaChangeHandler.process(SchemaChangeHandler.java:1918)
    at com.starrocks.alter.AlterJobMgr.processAlterTable(AlterJobMgr.java:550)
    at com.starrocks.server.LocalMetastore.alterTable(LocalMetastore.java:3037)
    at com.starrocks.server.GlobalStateMgr.alterTable(GlobalStateMgr.java:3532)
    at com.starrocks.qe.DDLStmtExecutor$StmtExecutorVisitor.lambda$visitAlterTableStatement$13(DDLStmtExecutor.java:330)
    at com.starrocks.common.ErrorReport.wrapWithRuntimeException(ErrorReport.java:108)
    at com.starrocks.qe.DDLStmtExecutor$StmtExecutorVisitor.visitAlterTableStatement(DDLStmtExecutor.java:329)
    at com.starrocks.qe.DDLStmtExecutor$StmtExecutorVisitor.visitAlterTableStatement(DDLStmtExecutor.java:159)
    at com.starrocks.sql.ast.AlterTableStmt.accept(AlterTableStmt.java:52)
    at com.starrocks.qe.DDLStmtExecutor.execute(DDLStmtExecutor.java:145)
    at com.starrocks.qe.StmtExecutor.handleDdlStmt(StmtExecutor.java:1652)
    at com.starrocks.qe.StmtExecutor.execute(StmtExecutor.java:680)
    at com.starrocks.qe.ConnectProcessor.proxyExecute(ConnectProcessor.java:776)
    at com.starrocks.service.FrontendServiceImpl.forward(FrontendServiceImpl.java:1279)
    at com.starrocks.thrift.FrontendService$Processor$forward.getResult(FrontendService.java:4276)
    at com.starrocks.thrift.FrontendService$Processor$forward.getResult(FrontendService.java:4256)
    at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38)
    at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:38)
    at com.starrocks.common.SRTThreadPoolServer$WorkerProcess.run(SRTThreadPoolServer.java:311)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)