使用mybatis框架,定义如下部分列更新:连续执行,后执行的更新会覆盖前面的更新,把第二次更新不包含的列置为null,在2.0.10上执行是正常的。
<insert id="updateabc">
SET enable_unique_key_partial_update = true;
insert into tableA(a,b,c) select * from tableB;
SET enable_unique_key_partial_update = false;
</insert>
<insert id="updateefg">
SET enable_unique_key_partial_update = true;
insert into tableA(e,f,g) select * from tableC;
SET enable_unique_key_partial_update = false;
</insert>
补充:
enable_insert_strict的值为false
建表DDL(部分列):
CREATE TABLE `dws_dev_sprint_issue` (
`issue_id` varchar(64) NOT NULL COMMENT '问题id',
`sprint_id` varchar(64) NOT NULL COMMENT '所属迭代id',
`jira_featureteam_id` varchar(64) NULL COMMENT '所属jira特性团队',
`product_lingbo_id` varchar(64) NULL COMMENT '备案产品ID',
`summary` text NULL COMMENT '概要字段',
`jira_featureteam_name` varchar(64) NULL COMMENT '所属jira团队',
`issue_key` varchar(50) NULL COMMENT '问题关键字',
`moscow` varchar(50) NULL COMMENT '问题关键字',
`fix_version_id` text NULL COMMENT '修复版本id(可能多个),可能多个id,逗号分隔,1,2,3,',
`fix_version_name` text NULL COMMENT '修复版本',
`issue_created` datetime NULL COMMENT 'issue创建时间',
`is_in_plan` boolean NULL COMMENT '计划开始时间是否在迭代',
`story_point_plan` decimal(10,2) NULL COMMENT '计划开始时刻故事点数',
`issue_status_plan` varchar(50) NULL COMMENT '计划开始时刻状态名称',
`issue_standard_status_plan` varchar(50) NULL COMMENT '计划开始时刻标准工作流状态名称',
`issue_type_plan` varchar(50) NULL COMMENT '计划开始时刻问题类型名称',
`status_category_plan` varchar(50) NULL COMMENT '计划时间时刻工作流状态分类'
) ENGINE=OLAP
UNIQUE KEY(`issue_id`, `sprint_id`)
COMMENT '该表描述了与迭代相关的issue信息:issue是否在计划中,结束时刻是否在迭代中, 结束状态, story_point等信息, 用于描述issue在研发管理过程中的变化-5min'
DISTRIBUTED BY HASH(`sprint_id`) BUCKETS 10
PROPERTIES (
"replication_allocation" = "tag.location.default: 3",
"min_load_replica_num" = "-1",
"is_being_synced" = "false",
"storage_medium" = "hdd",
"storage_format" = "V2",
"inverted_index_storage_format" = "V1",
"enable_unique_key_merge_on_write" = "true",
"light_schema_change" = "true",
"disable_auto_compaction" = "false",
"enable_single_replica_compaction" = "false",
"group_commit_interval_ms" = "10000",
"group_commit_data_bytes" = "134217728",
"enable_mow_light_delete" = "false"
);
部分更的SQL,分别通过JDBC直连执行,是正常的,放到spring+mybatis的框架里就不行了。使用的工程模板是:https://github.com/apache/doris/tree/master/samples/doris-demo/spring-jdbc-demo
<insert id="updateabc">
SET enable_unique_key_partial_update = true;
insert into tableA(a,b,c) select * from tableB;
SET enable_unique_key_partial_update = false;
</insert>
上面的SQL片段,如果删掉 SET enable_unique_key_partial_update = false; 就是正确的,但是会影响其它的SQL执行。