diff --git a/src/common/backend/parser/gram.y b/src/common/backend/parser/gram.y index a1ec888165892fab35a03d76629c5b6be59cc891..01643038acd95f060d060049504d5dcbd85da339 100644 --- a/src/common/backend/parser/gram.y +++ b/src/common/backend/parser/gram.y @@ -28129,7 +28129,6 @@ a_expr: c_expr { $$ = $1; } errmsg("@var_name := expr is not yet supported in distributed database."))); #endif if (DB_IS_CMPT(B_FORMAT) && (u_sess->attr.attr_common.enable_set_variable_b_format || ENABLE_SET_VARIABLES)) { - u_sess->parser_cxt.has_equal_uservar = true; UserSetElem *n = makeNode(UserSetElem); n->name = list_make1((Node *)$1); n->val = (Expr *)$3; diff --git a/src/gausskernel/process/stream/execStream.cpp b/src/gausskernel/process/stream/execStream.cpp index a605ff3192a42b1a787f1bb27df421183981e467..361c5ba526099ea8a68bb1e508ba07b9bef69d09 100755 --- a/src/gausskernel/process/stream/execStream.cpp +++ b/src/gausskernel/process/stream/execStream.cpp @@ -1241,7 +1241,8 @@ static void StartupStreamThread(StreamState* node) StreamTxnContext transactionCxt; - if (IS_SPQ_RUNNING || nodeTag(node->ss.ps.plan->lefttree) != T_ModifyTable) { + if (IS_SPQ_RUNNING || (nodeTag(node->ss.ps.plan->lefttree) != T_ModifyTable && + nodeTag(node->ss.ps.plan->lefttree) != T_VecModifyTable)) { transactionCxt.txnId = GetCurrentTransactionIdIfAny(); } else { transactionCxt.txnId = GetCurrentTransactionId(); diff --git a/src/gausskernel/process/threadpool/threadpool_stream.cpp b/src/gausskernel/process/threadpool/threadpool_stream.cpp index 22012f5997d20af0099cfe976167f20e9ceaa8f7..ee6e92f32067cb0f6cd291b5728cb6537029bfb7 100644 --- a/src/gausskernel/process/threadpool/threadpool_stream.cpp +++ b/src/gausskernel/process/threadpool/threadpool_stream.cpp @@ -135,6 +135,7 @@ void ThreadPoolStream::InitStream() /* Init GUC option for this session. */ InitializeGUCOptions(); + init_set_user_params_htab(); /* Read in remaining GUC variables */ read_nondefault_variables(); diff --git a/src/gausskernel/runtime/executor/execQual.cpp b/src/gausskernel/runtime/executor/execQual.cpp index 92843d43a12b06b868ba7790aa70dcda587b379b..bde719c9ed50688717a9f9f79c3287d49158ebeb 100644 --- a/src/gausskernel/runtime/executor/execQual.cpp +++ b/src/gausskernel/runtime/executor/execQual.cpp @@ -1119,7 +1119,7 @@ static Datum ExecEvalConst(ExprState* exprstate, ExprContext* econtext, bool* is con = (Const *)node; } } else { - con = makeConst(UNKNOWNOID, -1, InvalidOid, -2, (Datum)0, true, false); + con = (Const*)((UserVar *)exprstate->expr)->value; } if (u_sess->parser_cxt.in_userset) { u_sess->parser_cxt.has_set_uservar = true; @@ -6724,6 +6724,7 @@ ExprState* ExecInitExprByRecursion(Expr* node, PlanState* parent) state = (ExprState*)usestate; state->evalfunc = (ExprStateEvalFunc)ExecEvalUserSetElm; usestate->instate = ExecInitExpr((Expr *)useexpr->val, parent); + u_sess->parser_cxt.has_equal_uservar = true; } break; case T_PriorExpr: state = (ExprState*)makeNode(ExprState); diff --git a/src/test/regress/input/hw_cstore_index1.source b/src/test/regress/input/hw_cstore_index1.source index c0032cca6cdd7aad78a743b1ba28cacb7a76aad1..550f91e150f5907b2c7efb1a3cf724c30f9cc822 100644 --- a/src/test/regress/input/hw_cstore_index1.source +++ b/src/test/regress/input/hw_cstore_index1.source @@ -53,8 +53,10 @@ create table cstore_index_tbl( ,interval1 interval ,interval2 tinterval)with(orientation=column) ; +set query_dop = 1002; insert into cstore_index_tbl select * from row_index_tbl; select ctid from cstore_index_tbl order by 1; +set query_dop = 1; create index idx_int1 on cstore_index_tbl(id1); create index idx_int2 on cstore_index_tbl(id2); diff --git a/src/test/regress/input/set_user_defined_variables_test.source b/src/test/regress/input/set_user_defined_variables_test.source index fe4086f7a6d43612c273711760750df41626fc71..7534a54732cbf2f4483f82b30b4725acb5dd7cbd 100644 --- a/src/test/regress/input/set_user_defined_variables_test.source +++ b/src/test/regress/input/set_user_defined_variables_test.source @@ -649,6 +649,15 @@ INSERT INTO demo VALUES ('5', 'E', '4'); INSERT INTO demo VALUES ('6', 'F', '1'); INSERT INTO demo VALUES ('7', 'G', '1'); +set query_dop = 1002; +SELECT @r , +(SELECT @r:= parent_id FROM demo WHERE id = @r) AS parent_id, +@l:= @l+ 1 AS lvl +FROM +(SELECT @r:= 5, @l:= 0) vars, +demo h +WHERE @r<> 0; +set query_dop = 1; SELECT @r , (SELECT @r:= parent_id FROM demo WHERE id = @r) AS parent_id, @l:= @l+ 1 AS lvl diff --git a/src/test/regress/output/hw_cstore_index1.source b/src/test/regress/output/hw_cstore_index1.source index 7c15a147b1cdf9e0076e678427eaf91dbb20231a..9251197c68ca97c084b73d017215110b7c5ebba6 100644 --- a/src/test/regress/output/hw_cstore_index1.source +++ b/src/test/regress/output/hw_cstore_index1.source @@ -49,6 +49,7 @@ create table cstore_index_tbl( ,serial1 int ,interval1 interval ,interval2 tinterval)with(orientation=column) ; +set query_dop = 1002; insert into cstore_index_tbl select * from row_index_tbl; select ctid from cstore_index_tbl order by 1; ctid @@ -59,6 +60,7 @@ select ctid from cstore_index_tbl order by 1; (1001,4) (4 rows) +set query_dop = 1; create index idx_int1 on cstore_index_tbl(id1); create index idx_int2 on cstore_index_tbl(id2); create index idx_int4 on cstore_index_tbl(id4); diff --git a/src/test/regress/output/set_user_defined_variables_test.source b/src/test/regress/output/set_user_defined_variables_test.source index bfe3ef55d3b9d048bb0f646dc8b8f88955f247ef..34b2265c80b6b44d084e204c7486c8e6d20f77b0 100644 --- a/src/test/regress/output/set_user_defined_variables_test.source +++ b/src/test/regress/output/set_user_defined_variables_test.source @@ -1326,6 +1326,23 @@ INSERT INTO demo VALUES ('4', 'D', '2'); INSERT INTO demo VALUES ('5', 'E', '4'); INSERT INTO demo VALUES ('6', 'F', '1'); INSERT INTO demo VALUES ('7', 'G', '1'); +set query_dop = 1002; +SELECT @r , +(SELECT @r:= parent_id FROM demo WHERE id = @r) AS parent_id, +@l:= @l+ 1 AS lvl +FROM +(SELECT @r:= 5, @l:= 0) vars, +demo h +WHERE @r<> 0; + @r | parent_id | lvl +----+-----------+----- + 5 | 4 | 1 + 4 | 2 | 2 + 2 | 1 | 3 + 1 | 0 | 4 +(4 rows) + +set query_dop = 1; SELECT @r , (SELECT @r:= parent_id FROM demo WHERE id = @r) AS parent_id, @l:= @l+ 1 AS lvl