Skip to content

[Bug] NullPointerException occurred when using the upsert feature model #26882

@bobhan1

Description

@bobhan1

Discussed in #26865

Originally posted by bingwill November 13, 2023
1、problem:I ran into an 'Unexpected exception: null' error when submitting an update sql to dorisDB.
2、env:Deployed the latest doris version(2.0.2) .Using the upsert feature by setting up parameters like enable_unique_key_merge_on_write = true and set enable_unique_key_partial_update=true in the Unique model.
3、Error occurred when using the update sql to modify data with full unique keys.
Update sql can be executed successfully,when using part of then unique keys or any none unique key or mixed.
4、
1)table ddl:
CREATE TABLE mtstate (
id varchar(100) NOT NULL,
type int(11) NOT NULL,
date datetime NULL,
remark varchar(100) NULL COMMENT,
action_time datetime NULL
) ENGINE=OLAP
UNIQUE KEY(id, type)
COMMENT 'OLAP'
DISTRIBUTED BY HASH(id, type) BUCKETS 10
PROPERTIES (
"replication_allocation" = "tag.location.default: 3",
"is_being_synced" = "false",
"storage_format" = "V2",
"enable_unique_key_merge_on_write" = "true",
"light_schema_change" = "true",
"store_row_column" = "true",
"disable_auto_compaction" = "false",
"enable_single_replica_compaction" = "false"
);

  1. successful :update mtstate t set t.remark ='898989' where t.id ='380133091267784704' and t.type =3 and t.date ='2023-11-12 00:00:00';
    update mtstate t set t.remark ='898989' where t.id ='380133091267784704' and t.date ='2023-11-12 00:00:00';
    update mtstate t set t.remark ='898989' where t.id ='380133091267784704' ;
    etc.
    3)failed : update mtstate t set t.remark ='898989' where t.id ='380133091267784704' and t.type =3;

5、error info
1)mysql client:
SQL 错误 [1105] [HY000]: errCode = 2, detailMessage = Unexpected exception: null。
2)fe.log
2023-11-13 11:26:45,128 INFO (mysql-nio-pool-9|1234) [DatabaseTransactionMgr.beginTransaction():351] begin transaction: txn id 27988117 with label insert_ab22aaf8ce44464c_b674210e829cba2b from coordinator FE: 10.12.42.77, listener id: -1
2023-11-13 11:26:45,198 WARN (mysql-nio-pool-9|1234) [StmtExecutor.analyze():992] Analyze failed. stmt[1299, ab22aaf8ce44464c-b674210e829cba2b]
java.lang.NullPointerException: null
at org.apache.doris.planner.OriginalPlanner.createPlanFragments(OriginalPlanner.java:239) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.planner.OriginalPlanner.plan(OriginalPlanner.java:101) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.analyzeAndGenerateQueryPlan(StmtExecutor.java:1141) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.analyze(StmtExecutor.java:975) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.executeByLegacy(StmtExecutor.java:673) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:451) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:422) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.handleUpdateStmt(StmtExecutor.java:2160) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.executeByLegacy(StmtExecutor.java:744) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:448) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:422) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:435) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.ConnectProcessor.dispatch(ConnectProcessor.java:583) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.ConnectProcessor.processOnce(ConnectProcessor.java:834) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.mysql.ReadListener.lambda$handleEvent$0(ReadListener.java:52) ~[doris-fe.jar:1.2-SNAPSHOT]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_162]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_162]
at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_162]
2023-11-13 11:26:45,198 WARN (mysql-nio-pool-9|1234) [StmtExecutor.executeByLegacy():776] execute Exception. stmt[1299, ab22aaf8ce44464c-b674210e829cba2b]
org.apache.doris.common.AnalysisException: errCode = 2, detailMessage = Unexpected exception: null
at org.apache.doris.qe.StmtExecutor.analyze(StmtExecutor.java:993) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.executeByLegacy(StmtExecutor.java:673) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:451) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:422) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.handleUpdateStmt(StmtExecutor.java:2160) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.executeByLegacy(StmtExecutor.java:744) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:448) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:422) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:435) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.ConnectProcessor.dispatch(ConnectProcessor.java:583) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.qe.ConnectProcessor.processOnce(ConnectProcessor.java:834) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.mysql.ReadListener.lambda$handleEvent$0(ReadListener.java:52) ~[doris-fe.jar:1.2-SNAPSHOT]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_162]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_162]
at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_162]
6、Is there anthing wrong with it?
thanks!!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions