【标题】
修复开启partial seq scan后Seq Scan算子初始化期间core

【实现内容】:
修复开启partial seq scan后Seq Scan算子初始化期间core,禁用ustore_attr中的enable_ustore_partial_seqscan与enable_candidate_buf_usage_count参数。

【根因分析】:
开启partial seq scan后,seq scan算子初始化期间,会对算子中涉及的目标元组树进行“拉直”操作,递归将节点拉直为简单的list,再进行遍历,但是期间节点的结构发生了变化,在原来的逻辑中,按照拉直前操作节点的方式对其进行强制转换,导致空指针,现根据节点实际类型进行转换,避免空指针导致数据库core。

【实现方案】:
禁用两个ustore_attr参数:
enable_candidate_buf_usage_count:bool类型,session级别生效,默认false,刷脏是否考虑buffer重用度,解决TPCC定期毛刺问题。
enable_ustore_partial_seqscan:bool类型,session级别生效,默认false,部分顺序扫描开关,控制seqscan中拷贝元组长度。

【关联需求或issue】:
#I6BST2:配置参数enable_default_ustore_table=on/ ustore_attr='enable_ustore_partial_seqscan=true',运行一条update操作,数据库coredump。

【开发自验报告】:

  1. 请附上自验结果(内容或者截图)
[chendong@openGauss37 Mon Feb 06 19:45 ~]$ gsql -d postgres -p 12580 -r
gsql ((openGauss 3.1.1 build 1dbe456e) compiled at 2023-02-06 19:36:19 commit 0 last mr  debug)
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

openGauss=# show enable_default_ustore_table;
 enable_default_ustore_table
-----------------------------
 on
(1 row)

openGauss=# show ustore_attr;
            ustore_attr
------------------------------------
 enable_ustore_partial_seqscan=true
(1 row)

openGauss=# drop table if exists abort_test;
NOTICE:  table "abort_test" does not exist, skipping
DROP TABLE
openGauss=# create table abort_test(id int,name varchar(10));
CREATE TABLE
openGauss=# insert into abort_test values(1,'a');
INSERT 0 1
openGauss=# update abort_test set abort_test.name='cici' where abort_test.id=1;
UPDATE 1
openGauss=# \q
  1. 是否可以添加fastcheck测试用例,如是,请补充fastcheck用例
    是,已添加
    输入图片说明
  2. 是否涉及资料修改,如是,在docs仓库补充资料
    不涉及
  3. 是否考虑支撑升级和在线扩容等扩展场景
    不涉及
  4. 是否考虑异常场景/并发场景/前向兼容/性能场景
    不涉及
  5. 是否对其他模块产生影响
    不涉及

【其他说明】: