【标题】(请简要描述下实现的内容)
修复 xc_for_update 的用例不通过的问题

【实现内容】:
执行 "WITH q1 AS (SELECT * FROM t1 ORDER BY 1 FOR UPDATE) SELECT * FROM q1,t2 ORDER BY 1 FOR UPDATE;"的报错信息错误

openGauss=# WITH q1 AS (SELECT * FROM t1 ORDER BY 1 FOR UPDATE) SELECT * FROM q1,t2 ORDER BY 1 FOR UPDATE;
WARNING: unrecognized node type: 942
WARNING: unrecognized node type: 942
ERROR: unexpected command tag "???"

预期应该是 "ERROR: SELECT FOR UPDATE/SHARE cannot be applied to a WITH query"

不应该出现不能识别的 "unrecognized node type: 942"

【根因分析】:
with子句和for udpate结合使用时,语法解析错误

【实现方案】:
问题分析过程如下
不应该出现告警"inrecognized node type:941"

WARNING堆栈对下
(gdb) bt
#0 errstart (elevel=19, filename=0x6f6aa80 "utility.cpp", lineno=9520,
funcname=0x6f6fb50 <CreateCommandTag(Node*)::func> "CreateCommandTag", domain=0x0, briefly=false)
at elog.cpp:240
#1 0x0000000001088e16 in elog_finish (elevel=19, fmt=0x6f6d8a6 "5 unrecognized node type: %d") at elog.cpp:1605
#2 0x000000000191a25e in CreateCommandTag (parse_tree=0x7fe980e146d8) at utility.cpp:9520
#3 0x00000000018ec035 in exec_simple_query (
query_string=0x7fe9f1bee060 "WITH q1 AS (SELECT * FROM t1 ORDER BY 1 FOR UPDATE) SELECT * FROM q1,t2 ORDER BY 1 FOR UPDATE;", messageType=QUERY_MESSAGE, msg=0x7fe9f81cc960) at postgres.cpp:2751
#4 0x00000000018fb2ca in PostgresMain (argc=1, argv=0x7fe9f55e6e80, dbname=0x0, username=0x0) at postgres.cpp:9259
#5 0x0000000001837d01 in BackendRun (port=0x7fe9f81cce50) at postmaster.cpp:9284
#6 0x0000000001849608 in GaussDbThreadMain<(knl_thread_role)2> (arg=0x7fea118ec120) at postmaster.cpp:13800
#7 0x00000000018446f1 in InternalThreadFunc (args=0x7fea118ec120) at postmaster.cpp:14458
#8 0x0000000002386ac6 in ThreadStarterFunc (arg=0x7fea118ec110) at gs_thread.cpp:382
#9 0x00007fea8b3a0ea5 in start_thread () from /lib64/libpthread.so.0
#10 0x00007fea8b0c9b0d in clone () from /lib64/libc.so.6

报错原因是不能识别结构 T_WithClause结构,估计是针对这个SQL语句"WITH q1 AS (SELECT * FROM t1 ORDER BY 1 FOR UPDATE) SELECT * FROM q1,t2 ORDER BY 1 FOR UPDATE;"
的语法解析有问题。
验证"WITH q1 AS (SELECT * FROM t1 ORDER BY 1 FOR UPDATE) SELECT * FROM q1,t2 ORDER BY 1;"是可以正确查询,
所以问题出在With子句和for update部分。
查看gram.y的 forUpdate for_locking_item for_locking_clause
发现
| with_clause select_clause opt_sort_clause select_limit for_locking_clause
相关的SQL语法解析中返回的语法结构错误,应该是返回select_clause,但是却返回了with_clause
所以导致了问题

查看修改记录,发现是代码优化processIntoClauseInSelectStmt时引入的错误
processIntoClauseInSelectStmt((SelectStmt *) $2
第一个参数应该对应的是select_clause,而实际填写的是with_clause

【关联需求或issue】:
#I6YV3Y:xc_for_update用例报错不能识别的nodetype 942 缺陷 xc_for_update用例报错不能识别的nodetype 942
#I6YV3Y:xc_for_update用例报错不能识别的nodetype 942#note_17723462

【开发自验报告】:

  1. 请附上自验结果(内容或者截图)
    openGauss=# CREATE TABLE t1(val int, val2 int);
    CREATE TABLE
    openGauss=# INSERT INTO t1 VALUES(1,11),(2,11);
    INSERT 0 2
    openGauss=# CREATE TABLE t2(val int, val2 int);
    CREATE TABLE
    openGauss=# INSERT INTO t2 VALUES(3,11),(4,11);
    INSERT 0 2
    openGauss=# WITH q1 AS (SELECT * FROM t1 ORDER BY 1 FOR UPDATE) SELECT * FROM q1,t2 ORDER BY 1 FOR UPDATE;
    ERROR: SELECT FOR UPDATE/SHARE cannot be applied to a WITH query

  2. 是否可以添加fastcheck测试用例,如是,请补充fastcheck用例
    对应的是 xc_for_update 用例

  3. 是否涉及资料修改,如是,在docs仓库补充资料

  4. 是否考虑升级场景(系统表修改、日志持久化以及修改执行态数据格式)
    不需要考虑升级

  5. 是否考虑在线扩容等扩展场景
    不需要考虑扩容

  6. 是否考虑异常场景/并发场景/前向兼容/性能场景
    不需要

  7. 是否对其他模块产生影响
    没有

【其他说明】: