On Fri, 29 Sept 2023 at 10:59, Tom Lane <t...@sss.pgh.pa.us> wrote:
> We could also discuss keeping the "tracing" aspect of it, but
> replacing debug_print_rel with pprint(rel), which'd still allow
> removal of all the "DEBUG SUPPORT" stuff at the bottom of allpaths.c.
> That's pretty much all of the maintenance-requiring stuff in it.

To assist discussion, I've attached a patch for that.

I likely can't contribute much to that discussion due to being more of
an "attach a debugger" person rather than an "add printf statements"
person.

To eliminate a hurdle for anyone who wants to chip in, I've attached
the old and new debug output from the following query:

select * from pg_class where oid = 1234;

One observation is that the output is quite a bit larger with the
patched version and does not seem as useful if you wanted
OPTIMIZER_DEBUG to help you figure out why a given Path was chosen.

David
After canonicalize_qual()
   {OPEXPR
   :opno 607
   :opfuncid 184
   :opresulttype 16
   :opretset false
   :opcollid 0
   :inputcollid 0
   :args (
      {VAR
      :varno 1
      :varattno 1
      :vartype 26
      :vartypmod -1
      :varcollid 0
      :varnullingrels (b)
      :varlevelsup 0
      :varnosyn 1
      :varattnosyn 1
      :location 29
      }
      {CONST
      :consttype 26
      :consttypmod -1
      :constcollid 0
      :constlen 4
      :constbyval true
      :constisnull false
      :location 33
      :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
      }
   )
   :location 32
   }

RELOPTINFO (pg_class): rows=1 width=273
        baserestrictinfo: pg_class.oid = 1234
        path list:
        IdxScan(pg_class) rows=1 cost=0.27..8.29

        cheapest parameterized paths:
        IdxScan(pg_class) rows=1 cost=0.27..8.29

        cheapest startup path:
        IdxScan(pg_class) rows=1 cost=0.27..8.29

        cheapest total path:
        IdxScan(pg_class) rows=1 cost=0.27..8.29
After canonicalize_qual()
   {OPEXPR
   :opno 607
   :opfuncid 184
   :opresulttype 16
   :opretset false
   :opcollid 0
   :inputcollid 0
   :args (
      {VAR
      :varno 1
      :varattno 1
      :vartype 26
      :vartypmod -1
      :varcollid 0
      :varnullingrels (b)
      :varlevelsup 0
      :varnosyn 1
      :varattnosyn 1
      :location 29
      }
      {CONST
      :consttype 26
      :consttypmod -1
      :constcollid 0
      :constlen 4
      :constbyval true
      :constisnull false
      :location 33
      :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
      }
   )
   :location 32
   }

   {RELOPTINFO
   :reloptkind 0
   :relids (b 1)
   :rows 1
   :consider_startup false
   :consider_param_startup false
   :consider_parallel true
   :reltarget
      {PATHTARGET
      :exprs (
         {VAR
         :varno 1
         :varattno 1
         :vartype 26
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 1
         :location 7
         }
         {VAR
         :varno 1
         :varattno 2
         :vartype 19
         :vartypmod -1
         :varcollid 950
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 2
         :location 7
         }
         {VAR
         :varno 1
         :varattno 3
         :vartype 26
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 3
         :location 7
         }
         {VAR
         :varno 1
         :varattno 4
         :vartype 26
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 4
         :location 7
         }
         {VAR
         :varno 1
         :varattno 5
         :vartype 26
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 5
         :location 7
         }
         {VAR
         :varno 1
         :varattno 6
         :vartype 26
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 6
         :location 7
         }
         {VAR
         :varno 1
         :varattno 7
         :vartype 26
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 7
         :location 7
         }
         {VAR
         :varno 1
         :varattno 8
         :vartype 26
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 8
         :location 7
         }
         {VAR
         :varno 1
         :varattno 9
         :vartype 26
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 9
         :location 7
         }
         {VAR
         :varno 1
         :varattno 10
         :vartype 23
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 10
         :location 7
         }
         {VAR
         :varno 1
         :varattno 11
         :vartype 700
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 11
         :location 7
         }
         {VAR
         :varno 1
         :varattno 12
         :vartype 23
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 12
         :location 7
         }
         {VAR
         :varno 1
         :varattno 13
         :vartype 26
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 13
         :location 7
         }
         {VAR
         :varno 1
         :varattno 14
         :vartype 16
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 14
         :location 7
         }
         {VAR
         :varno 1
         :varattno 15
         :vartype 16
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 15
         :location 7
         }
         {VAR
         :varno 1
         :varattno 16
         :vartype 18
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 16
         :location 7
         }
         {VAR
         :varno 1
         :varattno 17
         :vartype 18
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 17
         :location 7
         }
         {VAR
         :varno 1
         :varattno 18
         :vartype 21
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 18
         :location 7
         }
         {VAR
         :varno 1
         :varattno 19
         :vartype 21
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 19
         :location 7
         }
         {VAR
         :varno 1
         :varattno 20
         :vartype 16
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 20
         :location 7
         }
         {VAR
         :varno 1
         :varattno 21
         :vartype 16
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 21
         :location 7
         }
         {VAR
         :varno 1
         :varattno 22
         :vartype 16
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 22
         :location 7
         }
         {VAR
         :varno 1
         :varattno 23
         :vartype 16
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 23
         :location 7
         }
         {VAR
         :varno 1
         :varattno 24
         :vartype 16
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 24
         :location 7
         }
         {VAR
         :varno 1
         :varattno 25
         :vartype 16
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 25
         :location 7
         }
         {VAR
         :varno 1
         :varattno 26
         :vartype 18
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 26
         :location 7
         }
         {VAR
         :varno 1
         :varattno 27
         :vartype 16
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 27
         :location 7
         }
         {VAR
         :varno 1
         :varattno 28
         :vartype 26
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 28
         :location 7
         }
         {VAR
         :varno 1
         :varattno 29
         :vartype 28
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 29
         :location 7
         }
         {VAR
         :varno 1
         :varattno 30
         :vartype 28
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 30
         :location 7
         }
         {VAR
         :varno 1
         :varattno 31
         :vartype 1034
         :vartypmod -1
         :varcollid 0
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 31
         :location 7
         }
         {VAR
         :varno 1
         :varattno 32
         :vartype 1009
         :vartypmod -1
         :varcollid 950
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 32
         :location 7
         }
         {VAR
         :varno 1
         :varattno 33
         :vartype 194
         :vartypmod -1
         :varcollid 950
         :varnullingrels (b)
         :varlevelsup 0
         :varnosyn 1
         :varattnosyn 33
         :location 7
         }
      )
      :sortgrouprefs <>
      :cost.startup 0
      :cost.per_tuple 0
      :width 774
      :has_volatile_expr 0
      }
   :pathlist (
      {INDEXPATH
      :path.pathtype 323
      :parent_relids (b 1)
      :required_outer (b)
      :path.parallel_aware false
      :path.parallel_safe true
      :path.parallel_workers 0
      :path.rows 1
      :path.startup_cost 0.2725
      :path.total_cost 8.290000000000001
      :path.pathkeys <>
      :indexinfo
         {INDEXOPTINFO
         :indexoid 2662
         :reltablespace 0
         :pages 4
         :tuples 432
         :tree_height 1
         :ncolumns 1
         :nkeycolumns 1
         :indexkeys ( 1)
         :indexcollations ( 0)
         :opfamily ( 1989)
         :opcintype ( 26)
         :sortopfamily ( 1989)
         :reverse_sort ( false)
         :nulls_first ( false)
         :canreturn ( true)
         :relam 403
         :indpred <>
         :indextlist (
            {TARGETENTRY
            :expr
               {VAR
               :varno 1
               :varattno 1
               :vartype 26
               :vartypmod -1
               :varcollid 0
               :varnullingrels (b)
               :varlevelsup 0
               :varnosyn 1
               :varattnosyn 1
               :location -1
               }
            :resno 1
            :resname <>
            :ressortgroupref 0
            :resorigtbl 0
            :resorigcol 0
            :resjunk false
            }
         )
         :indrestrictinfo (
            {RESTRICTINFO
            :clause
               {OPEXPR
               :opno 607
               :opfuncid 184
               :opresulttype 16
               :opretset false
               :opcollid 0
               :inputcollid 0
               :args (
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               )
               :location 32
               }
            :is_pushed_down true
            :can_join false
            :pseudoconstant false
            :has_clone false
            :is_clone false
            :leakproof false
            :has_volatile 2
            :security_level 0
            :num_base_rels 1
            :clause_relids (b 1)
            :required_relids (b 1)
            :incompatible_relids (b)
            :outer_relids (b)
            :left_relids (b 1)
            :right_relids (b)
            :orclause <>
            :rinfo_serial 1
            :eval_cost.startup 0
            :eval_cost.per_tuple 0.0025
            :norm_selec 0.0023148148148148147
            :outer_selec -1
            :mergeopfamilies (o 1989)
            :left_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
               :em_relids (b 1)
               :em_is_const false
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :right_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               :em_relids (b)
               :em_is_const true
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :outer_is_left false
            :hashjoinoperator 0
            :left_bucketsize -1
            :right_bucketsize -1
            :left_mcvfreq -1
            :right_mcvfreq -1
            :left_hasheqoperator 0
            :right_hasheqoperator 0
            }
         )
         :predOK false
         :unique true
         :immediate true
         :hypothetical false
         :amcanorderbyop false
         :amoptionalkey true
         :amsearcharray true
         :amsearchnulls true
         :amhasgettuple true
         :amhasgetbitmap true
         :amcanparallel true
         :amcanmarkpos true
         }
      :indexclauses (
         {INDEXCLAUSE
         :rinfo
            {RESTRICTINFO
            :clause
               {OPEXPR
               :opno 607
               :opfuncid 184
               :opresulttype 16
               :opretset false
               :opcollid 0
               :inputcollid 0
               :args (
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               )
               :location 32
               }
            :is_pushed_down true
            :can_join false
            :pseudoconstant false
            :has_clone false
            :is_clone false
            :leakproof false
            :has_volatile 2
            :security_level 0
            :num_base_rels 1
            :clause_relids (b 1)
            :required_relids (b 1)
            :incompatible_relids (b)
            :outer_relids (b)
            :left_relids (b 1)
            :right_relids (b)
            :orclause <>
            :rinfo_serial 1
            :eval_cost.startup 0
            :eval_cost.per_tuple 0.0025
            :norm_selec 0.0023148148148148147
            :outer_selec -1
            :mergeopfamilies (o 1989)
            :left_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
               :em_relids (b 1)
               :em_is_const false
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :right_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               :em_relids (b)
               :em_is_const true
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :outer_is_left false
            :hashjoinoperator 0
            :left_bucketsize -1
            :right_bucketsize -1
            :left_mcvfreq -1
            :right_mcvfreq -1
            :left_hasheqoperator 0
            :right_hasheqoperator 0
            }
         :indexquals (
            {RESTRICTINFO
            :clause
               {OPEXPR
               :opno 607
               :opfuncid 184
               :opresulttype 16
               :opretset false
               :opcollid 0
               :inputcollid 0
               :args (
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               )
               :location 32
               }
            :is_pushed_down true
            :can_join false
            :pseudoconstant false
            :has_clone false
            :is_clone false
            :leakproof false
            :has_volatile 2
            :security_level 0
            :num_base_rels 1
            :clause_relids (b 1)
            :required_relids (b 1)
            :incompatible_relids (b)
            :outer_relids (b)
            :left_relids (b 1)
            :right_relids (b)
            :orclause <>
            :rinfo_serial 1
            :eval_cost.startup 0
            :eval_cost.per_tuple 0.0025
            :norm_selec 0.0023148148148148147
            :outer_selec -1
            :mergeopfamilies (o 1989)
            :left_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
               :em_relids (b 1)
               :em_is_const false
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :right_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               :em_relids (b)
               :em_is_const true
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :outer_is_left false
            :hashjoinoperator 0
            :left_bucketsize -1
            :right_bucketsize -1
            :left_mcvfreq -1
            :right_mcvfreq -1
            :left_hasheqoperator 0
            :right_hasheqoperator 0
            }
         )
         :lossy false
         :indexcol 0
         :indexcols <>
         }
      )
      :indexorderbys <>
      :indexorderbycols <>
      :indexscandir 1
      :indextotalcost 4.28
      :indexselectivity 0.0023148148148148147
      }
   )
   :ppilist <>
   :partial_pathlist <>
   :cheapest_startup_path
      {INDEXPATH
      :path.pathtype 323
      :parent_relids (b 1)
      :required_outer (b)
      :path.parallel_aware false
      :path.parallel_safe true
      :path.parallel_workers 0
      :path.rows 1
      :path.startup_cost 0.2725
      :path.total_cost 8.290000000000001
      :path.pathkeys <>
      :indexinfo
         {INDEXOPTINFO
         :indexoid 2662
         :reltablespace 0
         :pages 4
         :tuples 432
         :tree_height 1
         :ncolumns 1
         :nkeycolumns 1
         :indexkeys ( 1)
         :indexcollations ( 0)
         :opfamily ( 1989)
         :opcintype ( 26)
         :sortopfamily ( 1989)
         :reverse_sort ( false)
         :nulls_first ( false)
         :canreturn ( true)
         :relam 403
         :indpred <>
         :indextlist (
            {TARGETENTRY
            :expr
               {VAR
               :varno 1
               :varattno 1
               :vartype 26
               :vartypmod -1
               :varcollid 0
               :varnullingrels (b)
               :varlevelsup 0
               :varnosyn 1
               :varattnosyn 1
               :location -1
               }
            :resno 1
            :resname <>
            :ressortgroupref 0
            :resorigtbl 0
            :resorigcol 0
            :resjunk false
            }
         )
         :indrestrictinfo (
            {RESTRICTINFO
            :clause
               {OPEXPR
               :opno 607
               :opfuncid 184
               :opresulttype 16
               :opretset false
               :opcollid 0
               :inputcollid 0
               :args (
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               )
               :location 32
               }
            :is_pushed_down true
            :can_join false
            :pseudoconstant false
            :has_clone false
            :is_clone false
            :leakproof false
            :has_volatile 2
            :security_level 0
            :num_base_rels 1
            :clause_relids (b 1)
            :required_relids (b 1)
            :incompatible_relids (b)
            :outer_relids (b)
            :left_relids (b 1)
            :right_relids (b)
            :orclause <>
            :rinfo_serial 1
            :eval_cost.startup 0
            :eval_cost.per_tuple 0.0025
            :norm_selec 0.0023148148148148147
            :outer_selec -1
            :mergeopfamilies (o 1989)
            :left_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
               :em_relids (b 1)
               :em_is_const false
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :right_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               :em_relids (b)
               :em_is_const true
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :outer_is_left false
            :hashjoinoperator 0
            :left_bucketsize -1
            :right_bucketsize -1
            :left_mcvfreq -1
            :right_mcvfreq -1
            :left_hasheqoperator 0
            :right_hasheqoperator 0
            }
         )
         :predOK false
         :unique true
         :immediate true
         :hypothetical false
         :amcanorderbyop false
         :amoptionalkey true
         :amsearcharray true
         :amsearchnulls true
         :amhasgettuple true
         :amhasgetbitmap true
         :amcanparallel true
         :amcanmarkpos true
         }
      :indexclauses (
         {INDEXCLAUSE
         :rinfo
            {RESTRICTINFO
            :clause
               {OPEXPR
               :opno 607
               :opfuncid 184
               :opresulttype 16
               :opretset false
               :opcollid 0
               :inputcollid 0
               :args (
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               )
               :location 32
               }
            :is_pushed_down true
            :can_join false
            :pseudoconstant false
            :has_clone false
            :is_clone false
            :leakproof false
            :has_volatile 2
            :security_level 0
            :num_base_rels 1
            :clause_relids (b 1)
            :required_relids (b 1)
            :incompatible_relids (b)
            :outer_relids (b)
            :left_relids (b 1)
            :right_relids (b)
            :orclause <>
            :rinfo_serial 1
            :eval_cost.startup 0
            :eval_cost.per_tuple 0.0025
            :norm_selec 0.0023148148148148147
            :outer_selec -1
            :mergeopfamilies (o 1989)
            :left_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
               :em_relids (b 1)
               :em_is_const false
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :right_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               :em_relids (b)
               :em_is_const true
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :outer_is_left false
            :hashjoinoperator 0
            :left_bucketsize -1
            :right_bucketsize -1
            :left_mcvfreq -1
            :right_mcvfreq -1
            :left_hasheqoperator 0
            :right_hasheqoperator 0
            }
         :indexquals (
            {RESTRICTINFO
            :clause
               {OPEXPR
               :opno 607
               :opfuncid 184
               :opresulttype 16
               :opretset false
               :opcollid 0
               :inputcollid 0
               :args (
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               )
               :location 32
               }
            :is_pushed_down true
            :can_join false
            :pseudoconstant false
            :has_clone false
            :is_clone false
            :leakproof false
            :has_volatile 2
            :security_level 0
            :num_base_rels 1
            :clause_relids (b 1)
            :required_relids (b 1)
            :incompatible_relids (b)
            :outer_relids (b)
            :left_relids (b 1)
            :right_relids (b)
            :orclause <>
            :rinfo_serial 1
            :eval_cost.startup 0
            :eval_cost.per_tuple 0.0025
            :norm_selec 0.0023148148148148147
            :outer_selec -1
            :mergeopfamilies (o 1989)
            :left_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
               :em_relids (b 1)
               :em_is_const false
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :right_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               :em_relids (b)
               :em_is_const true
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :outer_is_left false
            :hashjoinoperator 0
            :left_bucketsize -1
            :right_bucketsize -1
            :left_mcvfreq -1
            :right_mcvfreq -1
            :left_hasheqoperator 0
            :right_hasheqoperator 0
            }
         )
         :lossy false
         :indexcol 0
         :indexcols <>
         }
      )
      :indexorderbys <>
      :indexorderbycols <>
      :indexscandir 1
      :indextotalcost 4.28
      :indexselectivity 0.0023148148148148147
      }
   :cheapest_total_path
      {INDEXPATH
      :path.pathtype 323
      :parent_relids (b 1)
      :required_outer (b)
      :path.parallel_aware false
      :path.parallel_safe true
      :path.parallel_workers 0
      :path.rows 1
      :path.startup_cost 0.2725
      :path.total_cost 8.290000000000001
      :path.pathkeys <>
      :indexinfo
         {INDEXOPTINFO
         :indexoid 2662
         :reltablespace 0
         :pages 4
         :tuples 432
         :tree_height 1
         :ncolumns 1
         :nkeycolumns 1
         :indexkeys ( 1)
         :indexcollations ( 0)
         :opfamily ( 1989)
         :opcintype ( 26)
         :sortopfamily ( 1989)
         :reverse_sort ( false)
         :nulls_first ( false)
         :canreturn ( true)
         :relam 403
         :indpred <>
         :indextlist (
            {TARGETENTRY
            :expr
               {VAR
               :varno 1
               :varattno 1
               :vartype 26
               :vartypmod -1
               :varcollid 0
               :varnullingrels (b)
               :varlevelsup 0
               :varnosyn 1
               :varattnosyn 1
               :location -1
               }
            :resno 1
            :resname <>
            :ressortgroupref 0
            :resorigtbl 0
            :resorigcol 0
            :resjunk false
            }
         )
         :indrestrictinfo (
            {RESTRICTINFO
            :clause
               {OPEXPR
               :opno 607
               :opfuncid 184
               :opresulttype 16
               :opretset false
               :opcollid 0
               :inputcollid 0
               :args (
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               )
               :location 32
               }
            :is_pushed_down true
            :can_join false
            :pseudoconstant false
            :has_clone false
            :is_clone false
            :leakproof false
            :has_volatile 2
            :security_level 0
            :num_base_rels 1
            :clause_relids (b 1)
            :required_relids (b 1)
            :incompatible_relids (b)
            :outer_relids (b)
            :left_relids (b 1)
            :right_relids (b)
            :orclause <>
            :rinfo_serial 1
            :eval_cost.startup 0
            :eval_cost.per_tuple 0.0025
            :norm_selec 0.0023148148148148147
            :outer_selec -1
            :mergeopfamilies (o 1989)
            :left_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
               :em_relids (b 1)
               :em_is_const false
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :right_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               :em_relids (b)
               :em_is_const true
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :outer_is_left false
            :hashjoinoperator 0
            :left_bucketsize -1
            :right_bucketsize -1
            :left_mcvfreq -1
            :right_mcvfreq -1
            :left_hasheqoperator 0
            :right_hasheqoperator 0
            }
         )
         :predOK false
         :unique true
         :immediate true
         :hypothetical false
         :amcanorderbyop false
         :amoptionalkey true
         :amsearcharray true
         :amsearchnulls true
         :amhasgettuple true
         :amhasgetbitmap true
         :amcanparallel true
         :amcanmarkpos true
         }
      :indexclauses (
         {INDEXCLAUSE
         :rinfo
            {RESTRICTINFO
            :clause
               {OPEXPR
               :opno 607
               :opfuncid 184
               :opresulttype 16
               :opretset false
               :opcollid 0
               :inputcollid 0
               :args (
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               )
               :location 32
               }
            :is_pushed_down true
            :can_join false
            :pseudoconstant false
            :has_clone false
            :is_clone false
            :leakproof false
            :has_volatile 2
            :security_level 0
            :num_base_rels 1
            :clause_relids (b 1)
            :required_relids (b 1)
            :incompatible_relids (b)
            :outer_relids (b)
            :left_relids (b 1)
            :right_relids (b)
            :orclause <>
            :rinfo_serial 1
            :eval_cost.startup 0
            :eval_cost.per_tuple 0.0025
            :norm_selec 0.0023148148148148147
            :outer_selec -1
            :mergeopfamilies (o 1989)
            :left_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
               :em_relids (b 1)
               :em_is_const false
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :right_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               :em_relids (b)
               :em_is_const true
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :outer_is_left false
            :hashjoinoperator 0
            :left_bucketsize -1
            :right_bucketsize -1
            :left_mcvfreq -1
            :right_mcvfreq -1
            :left_hasheqoperator 0
            :right_hasheqoperator 0
            }
         :indexquals (
            {RESTRICTINFO
            :clause
               {OPEXPR
               :opno 607
               :opfuncid 184
               :opresulttype 16
               :opretset false
               :opcollid 0
               :inputcollid 0
               :args (
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               )
               :location 32
               }
            :is_pushed_down true
            :can_join false
            :pseudoconstant false
            :has_clone false
            :is_clone false
            :leakproof false
            :has_volatile 2
            :security_level 0
            :num_base_rels 1
            :clause_relids (b 1)
            :required_relids (b 1)
            :incompatible_relids (b)
            :outer_relids (b)
            :left_relids (b 1)
            :right_relids (b)
            :orclause <>
            :rinfo_serial 1
            :eval_cost.startup 0
            :eval_cost.per_tuple 0.0025
            :norm_selec 0.0023148148148148147
            :outer_selec -1
            :mergeopfamilies (o 1989)
            :left_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
               :em_relids (b 1)
               :em_is_const false
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :right_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               :em_relids (b)
               :em_is_const true
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :outer_is_left false
            :hashjoinoperator 0
            :left_bucketsize -1
            :right_bucketsize -1
            :left_mcvfreq -1
            :right_mcvfreq -1
            :left_hasheqoperator 0
            :right_hasheqoperator 0
            }
         )
         :lossy false
         :indexcol 0
         :indexcols <>
         }
      )
      :indexorderbys <>
      :indexorderbycols <>
      :indexscandir 1
      :indextotalcost 4.28
      :indexselectivity 0.0023148148148148147
      }
   :cheapest_unique_path <>
   :cheapest_parameterized_paths (
      {INDEXPATH
      :path.pathtype 323
      :parent_relids (b 1)
      :required_outer (b)
      :path.parallel_aware false
      :path.parallel_safe true
      :path.parallel_workers 0
      :path.rows 1
      :path.startup_cost 0.2725
      :path.total_cost 8.290000000000001
      :path.pathkeys <>
      :indexinfo
         {INDEXOPTINFO
         :indexoid 2662
         :reltablespace 0
         :pages 4
         :tuples 432
         :tree_height 1
         :ncolumns 1
         :nkeycolumns 1
         :indexkeys ( 1)
         :indexcollations ( 0)
         :opfamily ( 1989)
         :opcintype ( 26)
         :sortopfamily ( 1989)
         :reverse_sort ( false)
         :nulls_first ( false)
         :canreturn ( true)
         :relam 403
         :indpred <>
         :indextlist (
            {TARGETENTRY
            :expr
               {VAR
               :varno 1
               :varattno 1
               :vartype 26
               :vartypmod -1
               :varcollid 0
               :varnullingrels (b)
               :varlevelsup 0
               :varnosyn 1
               :varattnosyn 1
               :location -1
               }
            :resno 1
            :resname <>
            :ressortgroupref 0
            :resorigtbl 0
            :resorigcol 0
            :resjunk false
            }
         )
         :indrestrictinfo (
            {RESTRICTINFO
            :clause
               {OPEXPR
               :opno 607
               :opfuncid 184
               :opresulttype 16
               :opretset false
               :opcollid 0
               :inputcollid 0
               :args (
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               )
               :location 32
               }
            :is_pushed_down true
            :can_join false
            :pseudoconstant false
            :has_clone false
            :is_clone false
            :leakproof false
            :has_volatile 2
            :security_level 0
            :num_base_rels 1
            :clause_relids (b 1)
            :required_relids (b 1)
            :incompatible_relids (b)
            :outer_relids (b)
            :left_relids (b 1)
            :right_relids (b)
            :orclause <>
            :rinfo_serial 1
            :eval_cost.startup 0
            :eval_cost.per_tuple 0.0025
            :norm_selec 0.0023148148148148147
            :outer_selec -1
            :mergeopfamilies (o 1989)
            :left_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
               :em_relids (b 1)
               :em_is_const false
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :right_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               :em_relids (b)
               :em_is_const true
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :outer_is_left false
            :hashjoinoperator 0
            :left_bucketsize -1
            :right_bucketsize -1
            :left_mcvfreq -1
            :right_mcvfreq -1
            :left_hasheqoperator 0
            :right_hasheqoperator 0
            }
         )
         :predOK false
         :unique true
         :immediate true
         :hypothetical false
         :amcanorderbyop false
         :amoptionalkey true
         :amsearcharray true
         :amsearchnulls true
         :amhasgettuple true
         :amhasgetbitmap true
         :amcanparallel true
         :amcanmarkpos true
         }
      :indexclauses (
         {INDEXCLAUSE
         :rinfo
            {RESTRICTINFO
            :clause
               {OPEXPR
               :opno 607
               :opfuncid 184
               :opresulttype 16
               :opretset false
               :opcollid 0
               :inputcollid 0
               :args (
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               )
               :location 32
               }
            :is_pushed_down true
            :can_join false
            :pseudoconstant false
            :has_clone false
            :is_clone false
            :leakproof false
            :has_volatile 2
            :security_level 0
            :num_base_rels 1
            :clause_relids (b 1)
            :required_relids (b 1)
            :incompatible_relids (b)
            :outer_relids (b)
            :left_relids (b 1)
            :right_relids (b)
            :orclause <>
            :rinfo_serial 1
            :eval_cost.startup 0
            :eval_cost.per_tuple 0.0025
            :norm_selec 0.0023148148148148147
            :outer_selec -1
            :mergeopfamilies (o 1989)
            :left_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
               :em_relids (b 1)
               :em_is_const false
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :right_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               :em_relids (b)
               :em_is_const true
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :outer_is_left false
            :hashjoinoperator 0
            :left_bucketsize -1
            :right_bucketsize -1
            :left_mcvfreq -1
            :right_mcvfreq -1
            :left_hasheqoperator 0
            :right_hasheqoperator 0
            }
         :indexquals (
            {RESTRICTINFO
            :clause
               {OPEXPR
               :opno 607
               :opfuncid 184
               :opresulttype 16
               :opretset false
               :opcollid 0
               :inputcollid 0
               :args (
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               )
               :location 32
               }
            :is_pushed_down true
            :can_join false
            :pseudoconstant false
            :has_clone false
            :is_clone false
            :leakproof false
            :has_volatile 2
            :security_level 0
            :num_base_rels 1
            :clause_relids (b 1)
            :required_relids (b 1)
            :incompatible_relids (b)
            :outer_relids (b)
            :left_relids (b 1)
            :right_relids (b)
            :orclause <>
            :rinfo_serial 1
            :eval_cost.startup 0
            :eval_cost.per_tuple 0.0025
            :norm_selec 0.0023148148148148147
            :outer_selec -1
            :mergeopfamilies (o 1989)
            :left_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {VAR
                  :varno 1
                  :varattno 1
                  :vartype 26
                  :vartypmod -1
                  :varcollid 0
                  :varnullingrels (b)
                  :varlevelsup 0
                  :varnosyn 1
                  :varattnosyn 1
                  :location 29
                  }
               :em_relids (b 1)
               :em_is_const false
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :right_em
               {EQUIVALENCEMEMBER
               :em_expr
                  {CONST
                  :consttype 26
                  :consttypmod -1
                  :constcollid 0
                  :constlen 4
                  :constbyval true
                  :constisnull false
                  :location 33
                  :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
                  }
               :em_relids (b)
               :em_is_const true
               :em_is_child false
               :em_datatype 26
               :em_jdomain
                  {JOINDOMAIN
                  :jd_relids (b 1)
                  }
               }
            :outer_is_left false
            :hashjoinoperator 0
            :left_bucketsize -1
            :right_bucketsize -1
            :left_mcvfreq -1
            :right_mcvfreq -1
            :left_hasheqoperator 0
            :right_hasheqoperator 0
            }
         )
         :lossy false
         :indexcol 0
         :indexcols <>
         }
      )
      :indexorderbys <>
      :indexorderbycols <>
      :indexscandir 1
      :indextotalcost 4.28
      :indexselectivity 0.0023148148148148147
      }
   )
   :direct_lateral_relids (b)
   :lateral_relids (b)
   :relid 1
   :reltablespace 0
   :rtekind 0
   :min_attr -6
   :max_attr 33
   :nulling_relids (b)
   :lateral_vars <>
   :lateral_referencers (b)
   :indexlist (
      {INDEXOPTINFO
      :indexoid 3455
      :reltablespace 0
      :pages 2
      :tuples 432
      :tree_height 0
      :ncolumns 2
      :nkeycolumns 2
      :indexkeys ( 9 8)
      :indexcollations ( 0 0)
      :opfamily ( 1989 1989)
      :opcintype ( 26 26)
      :sortopfamily ( 1989 1989)
      :reverse_sort ( false false)
      :nulls_first ( false false)
      :canreturn ( true true)
      :relam 403
      :indpred <>
      :indextlist (
         {TARGETENTRY
         :expr
            {VAR
            :varno 1
            :varattno 9
            :vartype 26
            :vartypmod -1
            :varcollid 0
            :varnullingrels (b)
            :varlevelsup 0
            :varnosyn 1
            :varattnosyn 9
            :location -1
            }
         :resno 1
         :resname <>
         :ressortgroupref 0
         :resorigtbl 0
         :resorigcol 0
         :resjunk false
         }
         {TARGETENTRY
         :expr
            {VAR
            :varno 1
            :varattno 8
            :vartype 26
            :vartypmod -1
            :varcollid 0
            :varnullingrels (b)
            :varlevelsup 0
            :varnosyn 1
            :varattnosyn 8
            :location -1
            }
         :resno 2
         :resname <>
         :ressortgroupref 0
         :resorigtbl 0
         :resorigcol 0
         :resjunk false
         }
      )
      :indrestrictinfo (
         {RESTRICTINFO
         :clause
            {OPEXPR
            :opno 607
            :opfuncid 184
            :opresulttype 16
            :opretset false
            :opcollid 0
            :inputcollid 0
            :args (
               {VAR
               :varno 1
               :varattno 1
               :vartype 26
               :vartypmod -1
               :varcollid 0
               :varnullingrels (b)
               :varlevelsup 0
               :varnosyn 1
               :varattnosyn 1
               :location 29
               }
               {CONST
               :consttype 26
               :consttypmod -1
               :constcollid 0
               :constlen 4
               :constbyval true
               :constisnull false
               :location 33
               :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
               }
            )
            :location 32
            }
         :is_pushed_down true
         :can_join false
         :pseudoconstant false
         :has_clone false
         :is_clone false
         :leakproof false
         :has_volatile 2
         :security_level 0
         :num_base_rels 1
         :clause_relids (b 1)
         :required_relids (b 1)
         :incompatible_relids (b)
         :outer_relids (b)
         :left_relids (b 1)
         :right_relids (b)
         :orclause <>
         :rinfo_serial 1
         :eval_cost.startup 0
         :eval_cost.per_tuple 0.0025
         :norm_selec 0.0023148148148148147
         :outer_selec -1
         :mergeopfamilies (o 1989)
         :left_em
            {EQUIVALENCEMEMBER
            :em_expr
               {VAR
               :varno 1
               :varattno 1
               :vartype 26
               :vartypmod -1
               :varcollid 0
               :varnullingrels (b)
               :varlevelsup 0
               :varnosyn 1
               :varattnosyn 1
               :location 29
               }
            :em_relids (b 1)
            :em_is_const false
            :em_is_child false
            :em_datatype 26
            :em_jdomain
               {JOINDOMAIN
               :jd_relids (b 1)
               }
            }
         :right_em
            {EQUIVALENCEMEMBER
            :em_expr
               {CONST
               :consttype 26
               :consttypmod -1
               :constcollid 0
               :constlen 4
               :constbyval true
               :constisnull false
               :location 33
               :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
               }
            :em_relids (b)
            :em_is_const true
            :em_is_child false
            :em_datatype 26
            :em_jdomain
               {JOINDOMAIN
               :jd_relids (b 1)
               }
            }
         :outer_is_left false
         :hashjoinoperator 0
         :left_bucketsize -1
         :right_bucketsize -1
         :left_mcvfreq -1
         :right_mcvfreq -1
         :left_hasheqoperator 0
         :right_hasheqoperator 0
         }
      )
      :predOK false
      :unique false
      :immediate true
      :hypothetical false
      :amcanorderbyop false
      :amoptionalkey true
      :amsearcharray true
      :amsearchnulls true
      :amhasgettuple true
      :amhasgetbitmap true
      :amcanparallel true
      :amcanmarkpos true
      }
      {INDEXOPTINFO
      :indexoid 2663
      :reltablespace 0
      :pages 5
      :tuples 432
      :tree_height 1
      :ncolumns 2
      :nkeycolumns 2
      :indexkeys ( 2 3)
      :indexcollations ( 950 0)
      :opfamily ( 1994 1989)
      :opcintype ( 19 26)
      :sortopfamily ( 1994 1989)
      :reverse_sort ( false false)
      :nulls_first ( false false)
      :canreturn ( true true)
      :relam 403
      :indpred <>
      :indextlist (
         {TARGETENTRY
         :expr
            {VAR
            :varno 1
            :varattno 2
            :vartype 19
            :vartypmod -1
            :varcollid 950
            :varnullingrels (b)
            :varlevelsup 0
            :varnosyn 1
            :varattnosyn 2
            :location -1
            }
         :resno 1
         :resname <>
         :ressortgroupref 0
         :resorigtbl 0
         :resorigcol 0
         :resjunk false
         }
         {TARGETENTRY
         :expr
            {VAR
            :varno 1
            :varattno 3
            :vartype 26
            :vartypmod -1
            :varcollid 0
            :varnullingrels (b)
            :varlevelsup 0
            :varnosyn 1
            :varattnosyn 3
            :location -1
            }
         :resno 2
         :resname <>
         :ressortgroupref 0
         :resorigtbl 0
         :resorigcol 0
         :resjunk false
         }
      )
      :indrestrictinfo (
         {RESTRICTINFO
         :clause
            {OPEXPR
            :opno 607
            :opfuncid 184
            :opresulttype 16
            :opretset false
            :opcollid 0
            :inputcollid 0
            :args (
               {VAR
               :varno 1
               :varattno 1
               :vartype 26
               :vartypmod -1
               :varcollid 0
               :varnullingrels (b)
               :varlevelsup 0
               :varnosyn 1
               :varattnosyn 1
               :location 29
               }
               {CONST
               :consttype 26
               :consttypmod -1
               :constcollid 0
               :constlen 4
               :constbyval true
               :constisnull false
               :location 33
               :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
               }
            )
            :location 32
            }
         :is_pushed_down true
         :can_join false
         :pseudoconstant false
         :has_clone false
         :is_clone false
         :leakproof false
         :has_volatile 2
         :security_level 0
         :num_base_rels 1
         :clause_relids (b 1)
         :required_relids (b 1)
         :incompatible_relids (b)
         :outer_relids (b)
         :left_relids (b 1)
         :right_relids (b)
         :orclause <>
         :rinfo_serial 1
         :eval_cost.startup 0
         :eval_cost.per_tuple 0.0025
         :norm_selec 0.0023148148148148147
         :outer_selec -1
         :mergeopfamilies (o 1989)
         :left_em
            {EQUIVALENCEMEMBER
            :em_expr
               {VAR
               :varno 1
               :varattno 1
               :vartype 26
               :vartypmod -1
               :varcollid 0
               :varnullingrels (b)
               :varlevelsup 0
               :varnosyn 1
               :varattnosyn 1
               :location 29
               }
            :em_relids (b 1)
            :em_is_const false
            :em_is_child false
            :em_datatype 26
            :em_jdomain
               {JOINDOMAIN
               :jd_relids (b 1)
               }
            }
         :right_em
            {EQUIVALENCEMEMBER
            :em_expr
               {CONST
               :consttype 26
               :consttypmod -1
               :constcollid 0
               :constlen 4
               :constbyval true
               :constisnull false
               :location 33
               :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
               }
            :em_relids (b)
            :em_is_const true
            :em_is_child false
            :em_datatype 26
            :em_jdomain
               {JOINDOMAIN
               :jd_relids (b 1)
               }
            }
         :outer_is_left false
         :hashjoinoperator 0
         :left_bucketsize -1
         :right_bucketsize -1
         :left_mcvfreq -1
         :right_mcvfreq -1
         :left_hasheqoperator 0
         :right_hasheqoperator 0
         }
      )
      :predOK false
      :unique true
      :immediate true
      :hypothetical false
      :amcanorderbyop false
      :amoptionalkey true
      :amsearcharray true
      :amsearchnulls true
      :amhasgettuple true
      :amhasgetbitmap true
      :amcanparallel true
      :amcanmarkpos true
      }
      {INDEXOPTINFO
      :indexoid 2662
      :reltablespace 0
      :pages 4
      :tuples 432
      :tree_height 1
      :ncolumns 1
      :nkeycolumns 1
      :indexkeys ( 1)
      :indexcollations ( 0)
      :opfamily ( 1989)
      :opcintype ( 26)
      :sortopfamily ( 1989)
      :reverse_sort ( false)
      :nulls_first ( false)
      :canreturn ( true)
      :relam 403
      :indpred <>
      :indextlist (
         {TARGETENTRY
         :expr
            {VAR
            :varno 1
            :varattno 1
            :vartype 26
            :vartypmod -1
            :varcollid 0
            :varnullingrels (b)
            :varlevelsup 0
            :varnosyn 1
            :varattnosyn 1
            :location -1
            }
         :resno 1
         :resname <>
         :ressortgroupref 0
         :resorigtbl 0
         :resorigcol 0
         :resjunk false
         }
      )
      :indrestrictinfo (
         {RESTRICTINFO
         :clause
            {OPEXPR
            :opno 607
            :opfuncid 184
            :opresulttype 16
            :opretset false
            :opcollid 0
            :inputcollid 0
            :args (
               {VAR
               :varno 1
               :varattno 1
               :vartype 26
               :vartypmod -1
               :varcollid 0
               :varnullingrels (b)
               :varlevelsup 0
               :varnosyn 1
               :varattnosyn 1
               :location 29
               }
               {CONST
               :consttype 26
               :consttypmod -1
               :constcollid 0
               :constlen 4
               :constbyval true
               :constisnull false
               :location 33
               :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
               }
            )
            :location 32
            }
         :is_pushed_down true
         :can_join false
         :pseudoconstant false
         :has_clone false
         :is_clone false
         :leakproof false
         :has_volatile 2
         :security_level 0
         :num_base_rels 1
         :clause_relids (b 1)
         :required_relids (b 1)
         :incompatible_relids (b)
         :outer_relids (b)
         :left_relids (b 1)
         :right_relids (b)
         :orclause <>
         :rinfo_serial 1
         :eval_cost.startup 0
         :eval_cost.per_tuple 0.0025
         :norm_selec 0.0023148148148148147
         :outer_selec -1
         :mergeopfamilies (o 1989)
         :left_em
            {EQUIVALENCEMEMBER
            :em_expr
               {VAR
               :varno 1
               :varattno 1
               :vartype 26
               :vartypmod -1
               :varcollid 0
               :varnullingrels (b)
               :varlevelsup 0
               :varnosyn 1
               :varattnosyn 1
               :location 29
               }
            :em_relids (b 1)
            :em_is_const false
            :em_is_child false
            :em_datatype 26
            :em_jdomain
               {JOINDOMAIN
               :jd_relids (b 1)
               }
            }
         :right_em
            {EQUIVALENCEMEMBER
            :em_expr
               {CONST
               :consttype 26
               :consttypmod -1
               :constcollid 0
               :constlen 4
               :constbyval true
               :constisnull false
               :location 33
               :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
               }
            :em_relids (b)
            :em_is_const true
            :em_is_child false
            :em_datatype 26
            :em_jdomain
               {JOINDOMAIN
               :jd_relids (b 1)
               }
            }
         :outer_is_left false
         :hashjoinoperator 0
         :left_bucketsize -1
         :right_bucketsize -1
         :left_mcvfreq -1
         :right_mcvfreq -1
         :left_hasheqoperator 0
         :right_hasheqoperator 0
         }
      )
      :predOK false
      :unique true
      :immediate true
      :hypothetical false
      :amcanorderbyop false
      :amoptionalkey true
      :amsearcharray true
      :amsearchnulls true
      :amhasgettuple true
      :amhasgetbitmap true
      :amcanparallel true
      :amcanmarkpos true
      }
   )
   :statlist <>
   :pages 13
   :tuples 432
   :allvisfrac 0.8461538461538461
   :eclass_indexes (b 0)
   :subroot <>
   :subplan_params <>
   :rel_parallel_workers -1
   :amflags 1
   :serverid 0
   :userid 0
   :useridiscurrent false
   :unique_for_rels <>
   :non_unique_for_rels <>
   :baserestrictinfo (
      {RESTRICTINFO
      :clause
         {OPEXPR
         :opno 607
         :opfuncid 184
         :opresulttype 16
         :opretset false
         :opcollid 0
         :inputcollid 0
         :args (
            {VAR
            :varno 1
            :varattno 1
            :vartype 26
            :vartypmod -1
            :varcollid 0
            :varnullingrels (b)
            :varlevelsup 0
            :varnosyn 1
            :varattnosyn 1
            :location 29
            }
            {CONST
            :consttype 26
            :consttypmod -1
            :constcollid 0
            :constlen 4
            :constbyval true
            :constisnull false
            :location 33
            :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
            }
         )
         :location 32
         }
      :is_pushed_down true
      :can_join false
      :pseudoconstant false
      :has_clone false
      :is_clone false
      :leakproof false
      :has_volatile 2
      :security_level 0
      :num_base_rels 1
      :clause_relids (b 1)
      :required_relids (b 1)
      :incompatible_relids (b)
      :outer_relids (b)
      :left_relids (b 1)
      :right_relids (b)
      :orclause <>
      :rinfo_serial 1
      :eval_cost.startup 0
      :eval_cost.per_tuple 0.0025
      :norm_selec 0.0023148148148148147
      :outer_selec -1
      :mergeopfamilies (o 1989)
      :left_em
         {EQUIVALENCEMEMBER
         :em_expr
            {VAR
            :varno 1
            :varattno 1
            :vartype 26
            :vartypmod -1
            :varcollid 0
            :varnullingrels (b)
            :varlevelsup 0
            :varnosyn 1
            :varattnosyn 1
            :location 29
            }
         :em_relids (b 1)
         :em_is_const false
         :em_is_child false
         :em_datatype 26
         :em_jdomain
            {JOINDOMAIN
            :jd_relids (b 1)
            }
         }
      :right_em
         {EQUIVALENCEMEMBER
         :em_expr
            {CONST
            :consttype 26
            :consttypmod -1
            :constcollid 0
            :constlen 4
            :constbyval true
            :constisnull false
            :location 33
            :constvalue 4 [ -46 4 0 0 0 0 0 0 ]
            }
         :em_relids (b)
         :em_is_const true
         :em_is_child false
         :em_datatype 26
         :em_jdomain
            {JOINDOMAIN
            :jd_relids (b 1)
            }
         }
      :outer_is_left false
      :hashjoinoperator 0
      :left_bucketsize -1
      :right_bucketsize -1
      :left_mcvfreq -1
      :right_mcvfreq -1
      :left_hasheqoperator 0
      :right_hasheqoperator 0
      }
   )
   :baserestrictcost.startup 0
   :baserestrictcost.per_tuple 0.0025
   :baserestrict_min_security 0
   :joininfo <>
   :has_eclass_joins false
   :consider_partitionwise_join false
   :top_parent_relids (b)
   :nparts -1
   :partbounds_merged false
   :partition_qual <>
   :live_parts (b)
   :all_partrels (b)
   }

Attachment: replace_debug_print_rel_with_pprint.patch
Description: Binary data

Reply via email to