This is an automated email from the ASF dual-hosted git repository.

maxyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudberry.git


The following commit(s) were added to refs/heads/main by this push:
     new 4d220433dab Revert "ORCA: Support create plan in singlenode mode"
4d220433dab is described below

commit 4d220433dab9ee5aa447f0094a4af52c1bd351e0
Author: Jianghua Yang <[email protected]>
AuthorDate: Mon Sep 22 22:13:43 2025 +0800

    Revert "ORCA: Support create plan in singlenode mode"
    
    This reverts commit 36c1e7a92c23ebd3cbdf670f3fd1ab0089c60dab.
---
 .github/workflows/build-cloudberry.yml             |   6 +-
 src/backend/gpopt/config/CConfigParamMapping.cpp   |   8 +-
 .../gpopt/translate/CTranslatorQueryToDXL.cpp      |  47 ---------
 src/backend/gpopt/translate/CTranslatorUtils.cpp   |   1 -
 src/backend/gpopt/utils/COptTasks.cpp              |   7 +-
 .../include/naucrates/traceflags/traceflags.h      |   3 -
 src/backend/optimizer/plan/planner.c               |   2 +-
 src/backend/utils/misc/guc_gp.c                    |  11 ++
 .../gpopt/translate/CTranslatorQueryToDXL.h        |   2 -
 src/include/utils/guc.h                            |   1 +
 src/include/utils/unsync_guc_name.h                |   1 +
 .../singlenode_isolation2/expected/lockmodes.out   | 116 ++++++++++-----------
 src/test/singlenode_regress/expected/explain.out   |   1 -
 .../singlenode_regress/expected/rowsecurity.out    |  38 ++++---
 src/test/singlenode_regress/expected/select.out    |  13 ++-
 15 files changed, 103 insertions(+), 154 deletions(-)

diff --git a/.github/workflows/build-cloudberry.yml 
b/.github/workflows/build-cloudberry.yml
index 76dc06ced80..fecd44a9637 100644
--- a/.github/workflows/build-cloudberry.yml
+++ b/.github/workflows/build-cloudberry.yml
@@ -273,8 +273,7 @@ jobs:
                "make_configs":["src/test/isolation:installcheck-singlenode",
                                
"src/test/singlenode_regress:installcheck-singlenode",
                                
"src/test/singlenode_isolation2:installcheck-singlenode"],
-               "num_primary_mirror_pairs":0,
-               "pg_settings":{"optimizer":"off"}
+               "num_primary_mirror_pairs":0
               },
               {"test":"ic-resgroup-v2",
                "make_configs":["src/test/isolation2:installcheck-resgroup-v2"],
@@ -319,6 +318,9 @@ jobs:
               },
               {"test":"ic-parallel-retrieve-cursor",
                
"make_configs":["src/test/isolation2:installcheck-parallel-retrieve-cursor"]
+              },
+              {"test":"ic-cbdb-parallel",
+               "make_configs":["src/test/regress:installcheck-cbdb-parallel"]
               }
             ]
           }'
diff --git a/src/backend/gpopt/config/CConfigParamMapping.cpp 
b/src/backend/gpopt/config/CConfigParamMapping.cpp
index 2968a31829d..603855c50ec 100644
--- a/src/backend/gpopt/config/CConfigParamMapping.cpp
+++ b/src/backend/gpopt/config/CConfigParamMapping.cpp
@@ -15,7 +15,7 @@
 
 extern "C" {
 #include "postgres.h"
-#include "cdb/cdbvars.h"
+
 #include "utils/guc.h"
 }
 
@@ -386,12 +386,6 @@ CConfigParamMapping::PackConfigParamInBitset(
                }
        }
 
-       if (IS_SINGLENODE()) {
-               traceflag_bitset->ExchangeSet(EopttraceSingleNodeMode);
-       } else {
-               traceflag_bitset->ExchangeClear(EopttraceSingleNodeMode);
-       }
-
        if (!optimizer_enable_nljoin)
        {
                CBitSet *nl_join_bitset = CXform::PbsNLJoinXforms(mp);
diff --git a/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp 
b/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
index 34b045b6807..20cc6557c28 100644
--- a/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
+++ b/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
@@ -210,9 +210,6 @@ CTranslatorQueryToDXL::CTranslatorQueryToDXL(
                }
        }
 
-       // check if query has insert/update/delete when is_master_only is true.
-       CheckUnsupportedDDLInSingleMode(m_mp, query);
-
        // check if the query has any unsupported node types
        CheckUnsupportedNodeTypes(query);
 
@@ -283,50 +280,6 @@ CTranslatorQueryToDXL::~CTranslatorQueryToDXL()
        }
 }
 
-//---------------------------------------------------------------------------
-//     @function:
-//             CTranslatorQueryToDXL::CheckUnsupportedNodeTypes
-//
-//     @doc:
-//             Check for unsupported node types, and throws an exception when 
found
-//
-//---------------------------------------------------------------------------
-void
-CTranslatorQueryToDXL::CheckUnsupportedDDLInSingleMode(CMemoryPool *mp, Query 
*query)
-{
-       static const SUnsupportedFeature unsupported_features[] = {
-               {T_SubLink, GPOS_WSZ_LIT("Sublink")},
-               {T_SubqueryScan, GPOS_WSZ_LIT("Subscan")},
-       };
-
-       List *unsupported_list = NIL;
-       for (ULONG ul = 0; ul < GPOS_ARRAY_SIZE(unsupported_features); ul++)
-       {
-               unsupported_list = gpdb::LAppendInt(unsupported_list,
-                                                                               
        unsupported_features[ul].node_tag);
-       }
-
-       INT unsupported_node = gpdb::FindNodes((Node *) query, 
unsupported_list);
-       gpdb::GPDBFree(unsupported_list);
-
-       if (GPOS_FTRACE(EopttraceSingleNodeMode) || 
GPOS_FTRACE(EopttraceDisableMotions)) {
-               if (query->commandType == CMD_INSERT ||  query->commandType == 
CMD_UPDATE ||
-                       query->commandType == CMD_DELETE) {
-                       GPOS_RAISE(gpdxl::ExmaDXL, 
gpdxl::ExmiQuery2DXLUnsupportedFeature,
-                                  GPOS_WSZ_LIT("Single-mode not support 
insert/update/delete"));
-               }
-
-               if (0 <= unsupported_node) {
-                       CWStringDynamic error_message(mp);
-                       error_message.AppendFormat(GPOS_WSZ_LIT("Single-mode 
not support %s"),
-                               
unsupported_features[unsupported_node].m_feature_name);
-
-                       GPOS_RAISE(gpdxl::ExmaDXL, 
gpdxl::ExmiQuery2DXLUnsupportedFeature,
-                                  error_message.GetBuffer());
-               }
-       }
-}
-
 //---------------------------------------------------------------------------
 //     @function:
 //             CTranslatorQueryToDXL::CheckUnsupportedNodeTypes
diff --git a/src/backend/gpopt/translate/CTranslatorUtils.cpp 
b/src/backend/gpopt/translate/CTranslatorUtils.cpp
index 356f2668919..0887c72725c 100644
--- a/src/backend/gpopt/translate/CTranslatorUtils.cpp
+++ b/src/backend/gpopt/translate/CTranslatorUtils.cpp
@@ -150,7 +150,6 @@ CTranslatorUtils::GetTableDescr(CMemoryPool *mp, 
CMDAccessor *md_accessor,
        }
        else if (IMDRelation::ErelstorageForeign != 
rel->RetrieveRelStorageType() &&
                         !optimizer_enable_master_only_queries &&
-                        !GPOS_FTRACE(EopttraceSingleNodeMode) &&
                         (IMDRelation::EreldistrMasterOnly == 
distribution_policy))
        {
                // fall back to the planner for queries on master-only table if 
they are disabled with Orca. This is due to
diff --git a/src/backend/gpopt/utils/COptTasks.cpp 
b/src/backend/gpopt/utils/COptTasks.cpp
index afdbcc4665c..dd0e61116d8 100644
--- a/src/backend/gpopt/utils/COptTasks.cpp
+++ b/src/backend/gpopt/utils/COptTasks.cpp
@@ -953,9 +953,10 @@ COptTasks::OptimizeTask(void *ptr)
                                query_to_dxl_translator->GetCTEs();
                        GPOS_ASSERT(nullptr != query_output_dxlnode_array);
 
-                       BOOL is_master_only = 
GPOS_FTRACE(EopttraceDisableMotions) || 
-                               GPOS_FTRACE(EopttraceSingleNodeMode) ||
-                               
!query_to_dxl_translator->HasDistributedTables();
+                       BOOL is_master_only =
+                               !optimizer_enable_motions ||
+                               (!optimizer_enable_motions_masteronly_queries &&
+                                
!query_to_dxl_translator->HasDistributedTables());
                        // See NoteDistributionPolicyOpclasses() in 
src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
                        BOOL use_legacy_opfamilies =
                                
(query_to_dxl_translator->GetDistributionHashOpsKind() ==
diff --git 
a/src/backend/gporca/libnaucrates/include/naucrates/traceflags/traceflags.h 
b/src/backend/gporca/libnaucrates/include/naucrates/traceflags/traceflags.h
index 0693a374fbf..2e489f214e5 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/traceflags/traceflags.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/traceflags/traceflags.h
@@ -83,9 +83,6 @@ enum EOptTraceFlag
        // print debug info of CTE
        EopttraceDebugCTE = 101020,
 
-       // Is singlenode
-       EopttraceSingleNodeMode = 101021,
-
        ///////////////////////////////////////////////////////
        ////////////////// transformations flags //////////////
        ///////////////////////////////////////////////////////
diff --git a/src/backend/optimizer/plan/planner.c 
b/src/backend/optimizer/plan/planner.c
index 5abd5ca8709..da5acb23ebf 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -384,7 +384,7 @@ standard_planner(Query *parse, const char *query_string, 
int cursorOptions,
         * PARALLEL RETRIEVE CURSOR is not supported by ORCA yet.
         */
        if (optimizer &&
-               IS_QD_OR_SINGLENODE() &&
+               GP_ROLE_DISPATCH == Gp_role &&
                IS_QUERY_DISPATCHER() &&
                (cursorOptions & CURSOR_OPT_SKIP_FOREIGN_PARTITIONS) == 0 &&
                (cursorOptions & CURSOR_OPT_PARALLEL_RETRIEVE) == 0)
diff --git a/src/backend/utils/misc/guc_gp.c b/src/backend/utils/misc/guc_gp.c
index 3cfbfeb12aa..18d33966de2 100644
--- a/src/backend/utils/misc/guc_gp.c
+++ b/src/backend/utils/misc/guc_gp.c
@@ -324,6 +324,7 @@ char           *optimizer_search_strategy_path = NULL;
 /* GUCs to tell Optimizer to enable a physical operator */
 bool           optimizer_enable_nljoin;
 bool           optimizer_enable_indexjoin;
+bool           optimizer_enable_motions_masteronly_queries;
 bool           optimizer_enable_motions;
 bool           optimizer_enable_motion_broadcast;
 bool           optimizer_enable_motion_gather;
@@ -2180,6 +2181,16 @@ struct config_bool ConfigureNamesBool_gp[] =
                true,
                NULL, NULL, NULL
        },
+       {
+               {"optimizer_enable_motions_masteronly_queries", PGC_USERSET, 
DEVELOPER_OPTIONS,
+                       gettext_noop("Enable plans with Motion operators in the 
optimizer for queries with no distributed tables."),
+                       NULL,
+                       GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
+               },
+               &optimizer_enable_motions_masteronly_queries,
+               false,
+               NULL, NULL, NULL
+       },
        {
                {"optimizer_enable_motions", PGC_USERSET, DEVELOPER_OPTIONS,
                        gettext_noop("Enable plans with Motion operators in the 
optimizer."),
diff --git a/src/include/gpopt/translate/CTranslatorQueryToDXL.h 
b/src/include/gpopt/translate/CTranslatorQueryToDXL.h
index 392af626d29..c74892e5df2 100644
--- a/src/include/gpopt/translate/CTranslatorQueryToDXL.h
+++ b/src/include/gpopt/translate/CTranslatorQueryToDXL.h
@@ -147,8 +147,6 @@ private:
        // node is found
        static void CheckUnsupportedNodeTypes(Query *query);
 
-       static void CheckUnsupportedDDLInSingleMode(CMemoryPool *mp, Query 
*query);
-
        // walker to check if SUBLINK node is present in the security quals
        static BOOL CheckSublinkInSecurityQuals(Node *node, void *context);
 
diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h
index 13d7e79e262..4b62b663f0b 100644
--- a/src/include/utils/guc.h
+++ b/src/include/utils/guc.h
@@ -507,6 +507,7 @@ extern char *optimizer_search_strategy_path;
 /* GUCs to tell Optimizer to enable a physical operator */
 extern bool optimizer_enable_nljoin;
 extern bool optimizer_enable_indexjoin;
+extern bool optimizer_enable_motions_masteronly_queries;
 extern bool optimizer_enable_motions;
 extern bool optimizer_enable_motion_broadcast;
 extern bool optimizer_enable_motion_gather;
diff --git a/src/include/utils/unsync_guc_name.h 
b/src/include/utils/unsync_guc_name.h
index 97b9df29814..4c956e14fbf 100644
--- a/src/include/utils/unsync_guc_name.h
+++ b/src/include/utils/unsync_guc_name.h
@@ -422,6 +422,7 @@
                "optimizer_enable_motion_gather",
                "optimizer_enable_motion_redistribute",
                "optimizer_enable_motions",
+               "optimizer_enable_motions_masteronly_queries",
                "optimizer_enable_multiple_distinct_aggs",
                "optimizer_enable_nljoin",
                "optimizer_enable_outerjoin_rewrite",
diff --git a/src/test/singlenode_isolation2/expected/lockmodes.out 
b/src/test/singlenode_isolation2/expected/lockmodes.out
index 40835b507ca..0caadff3922 100644
--- a/src/test/singlenode_isolation2/expected/lockmodes.out
+++ b/src/test/singlenode_isolation2/expected/lockmodes.out
@@ -159,13 +159,13 @@ ABORT
 1: begin;
 BEGIN
 1: explain select * from t_lockmods, t_lockmods1 for update;
- QUERY PLAN                                                        
--------------------------------------------------------------------
- Nested Loop  (cost=0.00..1324032.37 rows=5 width=8)               
-   Join Filter: true                                               
-   ->  Seq Scan on t_lockmods1  (cost=0.00..431.00 rows=1 width=4) 
-   ->  Seq Scan on t_lockmods  (cost=0.00..431.00 rows=5 width=4)  
- Optimizer: GPORCA                                                 
+ QUERY PLAN                                                             
+------------------------------------------------------------------------
+ Nested Loop  (cost=10000000000.00..10000000752.74 rows=51150 width=20) 
+   ->  Seq Scan on t_lockmods1  (cost=0.00..112.30 rows=10230 width=10) 
+   ->  Materialize  (cost=0.00..1.07 rows=5 width=10)                   
+         ->  Seq Scan on t_lockmods  (cost=0.00..1.05 rows=5 width=10)  
+ Optimizer: Postgres query optimizer                                    
 (5 rows)
 1: select * from t_lockmods, t_lockmods1 for update;
  c | c 
@@ -185,13 +185,13 @@ ABORT
 1: begin;
 BEGIN
 1: explain select * from t_lockmods, t_lockmods1 for no key update;
- QUERY PLAN                                                        
--------------------------------------------------------------------
- Nested Loop  (cost=0.00..1324032.37 rows=5 width=8)               
-   Join Filter: true                                               
-   ->  Seq Scan on t_lockmods1  (cost=0.00..431.00 rows=1 width=4) 
-   ->  Seq Scan on t_lockmods  (cost=0.00..431.00 rows=5 width=4)  
- Optimizer: GPORCA                                                 
+ QUERY PLAN                                                             
+------------------------------------------------------------------------
+ Nested Loop  (cost=10000000000.00..10000000752.74 rows=51150 width=20) 
+   ->  Seq Scan on t_lockmods1  (cost=0.00..112.30 rows=10230 width=10) 
+   ->  Materialize  (cost=0.00..1.07 rows=5 width=10)                   
+         ->  Seq Scan on t_lockmods  (cost=0.00..1.05 rows=5 width=10)  
+ Optimizer: Postgres query optimizer                                    
 (5 rows)
 1: select * from t_lockmods, t_lockmods1 for no key update;
  c | c 
@@ -211,13 +211,13 @@ ABORT
 1: begin;
 BEGIN
 1: explain select * from t_lockmods, t_lockmods1 for share;
- QUERY PLAN                                                        
--------------------------------------------------------------------
- Nested Loop  (cost=0.00..1324032.37 rows=5 width=8)               
-   Join Filter: true                                               
-   ->  Seq Scan on t_lockmods1  (cost=0.00..431.00 rows=1 width=4) 
-   ->  Seq Scan on t_lockmods  (cost=0.00..431.00 rows=5 width=4)  
- Optimizer: GPORCA                                                 
+ QUERY PLAN                                                             
+------------------------------------------------------------------------
+ Nested Loop  (cost=10000000000.00..10000000752.74 rows=51150 width=20) 
+   ->  Seq Scan on t_lockmods1  (cost=0.00..112.30 rows=10230 width=10) 
+   ->  Materialize  (cost=0.00..1.07 rows=5 width=10)                   
+         ->  Seq Scan on t_lockmods  (cost=0.00..1.05 rows=5 width=10)  
+ Optimizer: Postgres query optimizer                                    
 (5 rows)
 1: select * from t_lockmods, t_lockmods1 for share;
  c | c 
@@ -237,13 +237,13 @@ ABORT
 1: begin;
 BEGIN
 1: explain select * from t_lockmods, t_lockmods1 for key share;
- QUERY PLAN                                                        
--------------------------------------------------------------------
- Nested Loop  (cost=0.00..1324032.37 rows=5 width=8)               
-   Join Filter: true                                               
-   ->  Seq Scan on t_lockmods1  (cost=0.00..431.00 rows=1 width=4) 
-   ->  Seq Scan on t_lockmods  (cost=0.00..431.00 rows=5 width=4)  
- Optimizer: GPORCA                                                 
+ QUERY PLAN                                                             
+------------------------------------------------------------------------
+ Nested Loop  (cost=10000000000.00..10000000752.74 rows=51150 width=20) 
+   ->  Seq Scan on t_lockmods1  (cost=0.00..112.30 rows=10230 width=10) 
+   ->  Materialize  (cost=0.00..1.07 rows=5 width=10)                   
+         ->  Seq Scan on t_lockmods  (cost=0.00..1.05 rows=5 width=10)  
+ Optimizer: Postgres query optimizer                                    
 (5 rows)
 1: select * from t_lockmods, t_lockmods1 for key share;
  c | c 
@@ -583,14 +583,13 @@ ABORT
 1: begin;
 BEGIN
 1: explain select * from t_lockmods_ao, t_lockmods_ao1 for update;
- QUERY PLAN                                                           
-----------------------------------------------------------------------
- Nested Loop  (cost=0.00..1324032.57 rows=8 width=8)                  
-   Join Filter: true                                                  
-   ->  Seq Scan on t_lockmods_ao1  (cost=0.00..431.00 rows=1 width=4) 
-   ->  Seq Scan on t_lockmods_ao  (cost=0.00..431.00 rows=8 width=4)  
- Optimizer: GPORCA                                                    
-(5 rows)
+ QUERY PLAN                                                          
+---------------------------------------------------------------------
+ Nested Loop  (cost=10000000000.00..10000000001.24 rows=8 width=20)  
+   ->  Seq Scan on t_lockmods_ao  (cost=0.00..1.08 rows=8 width=10)  
+   ->  Seq Scan on t_lockmods_ao1  (cost=0.00..0.01 rows=1 width=10) 
+ Optimizer: Postgres query optimizer                                 
+(4 rows)
 1: select * from t_lockmods_ao, t_lockmods_ao1 for update;
  c | c 
 ---+---
@@ -609,14 +608,13 @@ ABORT
 1: begin;
 BEGIN
 1: explain select * from t_lockmods_ao, t_lockmods_ao1 for no key update;
- QUERY PLAN                                                           
-----------------------------------------------------------------------
- Nested Loop  (cost=0.00..1324032.57 rows=8 width=8)                  
-   Join Filter: true                                                  
-   ->  Seq Scan on t_lockmods_ao1  (cost=0.00..431.00 rows=1 width=4) 
-   ->  Seq Scan on t_lockmods_ao  (cost=0.00..431.00 rows=8 width=4)  
- Optimizer: GPORCA                                                    
-(5 rows)
+ QUERY PLAN                                                          
+---------------------------------------------------------------------
+ Nested Loop  (cost=10000000000.00..10000000001.24 rows=8 width=20)  
+   ->  Seq Scan on t_lockmods_ao  (cost=0.00..1.08 rows=8 width=10)  
+   ->  Seq Scan on t_lockmods_ao1  (cost=0.00..0.01 rows=1 width=10) 
+ Optimizer: Postgres query optimizer                                 
+(4 rows)
 1: select * from t_lockmods_ao, t_lockmods_ao1 for no key update;
  c | c 
 ---+---
@@ -635,14 +633,13 @@ ABORT
 1: begin;
 BEGIN
 1: explain select * from t_lockmods_ao, t_lockmods_ao1 for share;
- QUERY PLAN                                                           
-----------------------------------------------------------------------
- Nested Loop  (cost=0.00..1324032.57 rows=8 width=8)                  
-   Join Filter: true                                                  
-   ->  Seq Scan on t_lockmods_ao1  (cost=0.00..431.00 rows=1 width=4) 
-   ->  Seq Scan on t_lockmods_ao  (cost=0.00..431.00 rows=8 width=4)  
- Optimizer: GPORCA                                                    
-(5 rows)
+ QUERY PLAN                                                          
+---------------------------------------------------------------------
+ Nested Loop  (cost=10000000000.00..10000000001.24 rows=8 width=20)  
+   ->  Seq Scan on t_lockmods_ao  (cost=0.00..1.08 rows=8 width=10)  
+   ->  Seq Scan on t_lockmods_ao1  (cost=0.00..0.01 rows=1 width=10) 
+ Optimizer: Postgres query optimizer                                 
+(4 rows)
 1: select * from t_lockmods_ao, t_lockmods_ao1 for share;
  c | c 
 ---+---
@@ -661,14 +658,13 @@ ABORT
 1: begin;
 BEGIN
 1: explain select * from t_lockmods_ao, t_lockmods_ao1 for key share;
- QUERY PLAN                                                           
-----------------------------------------------------------------------
- Nested Loop  (cost=0.00..1324032.57 rows=8 width=8)                  
-   Join Filter: true                                                  
-   ->  Seq Scan on t_lockmods_ao1  (cost=0.00..431.00 rows=1 width=4) 
-   ->  Seq Scan on t_lockmods_ao  (cost=0.00..431.00 rows=8 width=4)  
- Optimizer: GPORCA                                                    
-(5 rows)
+ QUERY PLAN                                                          
+---------------------------------------------------------------------
+ Nested Loop  (cost=10000000000.00..10000000001.24 rows=8 width=20)  
+   ->  Seq Scan on t_lockmods_ao  (cost=0.00..1.08 rows=8 width=10)  
+   ->  Seq Scan on t_lockmods_ao1  (cost=0.00..0.01 rows=1 width=10) 
+ Optimizer: Postgres query optimizer                                 
+(4 rows)
 1: select * from t_lockmods_ao, t_lockmods_ao1 for key share;
  c | c 
 ---+---
diff --git a/src/test/singlenode_regress/expected/explain.out 
b/src/test/singlenode_regress/expected/explain.out
index 2c9f373b894..2803a0b2c50 100644
--- a/src/test/singlenode_regress/expected/explain.out
+++ b/src/test/singlenode_regress/expected/explain.out
@@ -471,7 +471,6 @@ select jsonb_pretty(
          },                                          +
          "Settings": {                               +
              "Optimizer": "Postgres query optimizer",+
-             "optimizer": "off",                     +
              "parallel_setup_cost": "0",             +
              "parallel_tuple_cost": "0",             +
              "min_parallel_table_scan_size": "0"     +
diff --git a/src/test/singlenode_regress/expected/rowsecurity.out 
b/src/test/singlenode_regress/expected/rowsecurity.out
index d2b3baec80d..60b1eb0a261 100644
--- a/src/test/singlenode_regress/expected/rowsecurity.out
+++ b/src/test/singlenode_regress/expected/rowsecurity.out
@@ -783,16 +783,15 @@ SELECT * FROM t1 FOR SHARE;
 EXPLAIN (COSTS OFF) SELECT * FROM t1 FOR SHARE;
              QUERY PLAN              
 -------------------------------------
- LockRows
-   ->  Append
-         ->  Seq Scan on t1 t1_1
-               Filter: ((a % 2) = 0)
-         ->  Seq Scan on t2 t1_2
-               Filter: ((a % 2) = 0)
-         ->  Seq Scan on t3 t1_3
-               Filter: ((a % 2) = 0)
+ Append
+   ->  Seq Scan on t1 t1_1
+         Filter: ((a % 2) = 0)
+   ->  Seq Scan on t2 t1_2
+         Filter: ((a % 2) = 0)
+   ->  Seq Scan on t3 t1_3
+         Filter: ((a % 2) = 0)
  Optimizer: Postgres query optimizer
-(9 rows)
+(8 rows)
 
 SELECT * FROM t1 WHERE f_leak(b) FOR SHARE;
 NOTICE:  f_leak => bbb
@@ -810,18 +809,17 @@ NOTICE:  f_leak => yyy
 (5 rows)
 
 EXPLAIN (COSTS OFF) SELECT * FROM t1 WHERE f_leak(b) FOR SHARE;
-                     QUERY PLAN                      
------------------------------------------------------
- LockRows
-   ->  Append
-         ->  Seq Scan on t1 t1_1
-               Filter: (((a % 2) = 0) AND f_leak(b))
-         ->  Seq Scan on t2 t1_2
-               Filter: (((a % 2) = 0) AND f_leak(b))
-         ->  Seq Scan on t3 t1_3
-               Filter: (((a % 2) = 0) AND f_leak(b))
+                  QUERY PLAN                   
+-----------------------------------------------
+ Append
+   ->  Seq Scan on t1 t1_1
+         Filter: (((a % 2) = 0) AND f_leak(b))
+   ->  Seq Scan on t2 t1_2
+         Filter: (((a % 2) = 0) AND f_leak(b))
+   ->  Seq Scan on t3 t1_3
+         Filter: (((a % 2) = 0) AND f_leak(b))
  Optimizer: Postgres query optimizer
-(9 rows)
+(8 rows)
 
 -- union all query
 SELECT a, b, tableoid::regclass FROM t2 UNION ALL SELECT a, b, 
tableoid::regclass FROM t3;
diff --git a/src/test/singlenode_regress/expected/select.out 
b/src/test/singlenode_regress/expected/select.out
index f393c638962..a7014af1f98 100644
--- a/src/test/singlenode_regress/expected/select.out
+++ b/src/test/singlenode_regress/expected/select.out
@@ -816,14 +816,13 @@ select unique2 from onek2 where unique2 = 11 and stringu1 
< 'B';
 -- but if it's an update target, must retest anyway
 explain (costs off)
 select unique2 from onek2 where unique2 = 11 and stringu1 < 'B' for update;
-                  QUERY PLAN                   
------------------------------------------------
- LockRows
-   ->  Index Scan using onek2_u2_prtl on onek2
-         Index Cond: (unique2 = 11)
-         Filter: (stringu1 < 'B'::name)
+               QUERY PLAN                
+-----------------------------------------
+ Index Scan using onek2_u2_prtl on onek2
+   Index Cond: (unique2 = 11)
+   Filter: (stringu1 < 'B'::name)
  Optimizer: Postgres query optimizer
-(5 rows)
+(4 rows)
 
 select unique2 from onek2 where unique2 = 11 and stringu1 < 'B' for update;
  unique2 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to