Giter Club home page Giter Club logo

gporca's People

Contributors

addisonhuddy avatar armenatzoglou avatar ashuka24 avatar asubramanya avatar atris avatar bhuvnesh2703 avatar chrishajas avatar craig-chasseur avatar cramja avatar d avatar dgkimura avatar dhanashreek89 avatar entong avatar hlinnaka avatar hsyuan avatar iyerr3 avatar japinli avatar jemishp avatar karthijrk avatar khannaekta avatar l-wang avatar lpetrov-pivotal avatar melanieplageman avatar ryantang avatar sambitesh avatar soumyadeep2007 avatar terry-chelsea avatar vraghavan78 avatar xinzweb avatar zaksoup avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gporca's Issues

Update readme about dependencies (Orca relies on xerces-c for macOS )

Context, on GPDB we removed the installation of gpxerces prior to the installation of gporca. The person removing gpxerces did not realize that we now need to install xerces-c.

The simplest thing to do is to update Orca's readme by removing gpxerces and replacing it with xerces-c.

I wonder if we need a check (conan / autoconf) to verify that dependencies are present prior to installation.

macOS Sierra does not ship with xerces-x. The user needs to do a brew install xerces-c on a machine prior to its use.

See greenplum-db/gpdb#3211 for error messages.

AddJoinOrder time complexity is O(N*K)

In function AddJoinOrder, we want to store the top K cheapest join order out of N alternatives. We use linear search to find the target to evict if the number of alternatives N is greater than K, the time complexity is O(N*K).

But in fact we should use max heap, with which the time complexity is O(N*log(K)).

// we have stored K expressions, evict worst expression
for (ULONG ul = 0; !fAddJoinOrder && ul < ulResults; ul++)
{
	CExpression *pexpr = (*m_pdrgpexprTopKOrders)[ul];
	CDouble *pd = m_phmexprcost->PtLookup(pexpr);
	GPOS_ASSERT(NULL != pd);

	if (dCost < *pd)
	{
		// found a worse expression
		fAddJoinOrder = true;
		iReplacePos = ul;
	}
}

What's worse, the code doesn't guarantee we can get the top K cheapest join order. Let K be 5, and the current 5 join order costs are:
2, 3, 4, 5, 6

If we have another join order with cost of 2, the above code will evict 3. But in fact we should evict 6.

Orca generates redundant motion for left outer join with multiple distribution keys

Repro:

create table foo(a varchar, b int, c int) distributed by(a,b);
create table bar(a varchar, b int, c int) distributed by(a,b);
create table zoo(a varchar, b int, c int) with(appendonly=true) distributed by(a,b);

explain select * from foo left join bar on foo.a = bar.a and foo.b = bar.b
left join zoo on zoo.a=foo.a and zoo.b=bar.b;

 Gather Motion 3:1  (slice4; segments: 3)  (cost=0.00..1293.00 rows=3 width=48)
   ->  Hash Left Join  (cost=0.00..1293.00 rows=1 width=48)
         Hash Cond: foo.a::text = zoo.a::text AND bar.b = zoo.b
         ->  Hash Left Join  (cost=0.00..862.00 rows=1 width=32)
               Hash Cond: foo.a::text = bar.a::text AND foo.b = bar.b
               ->  Redistribute Motion 3:3  (slice1; segments: 3)  (cost=0.00..431.00 rows=1 width=16)
                     Hash Key: foo.a
                     ->  Table Scan on foo  (cost=0.00..431.00 rows=1 width=16)
               ->  Hash  (cost=431.00..431.00 rows=1 width=16)
                     ->  Redistribute Motion 3:3  (slice2; segments: 3)  (cost=0.00..431.00 rows=1 width=16)
                           Hash Key: bar.a::text
                           ->  Table Scan on bar  (cost=0.00..431.00 rows=1 width=16)
         ->  Hash  (cost=431.00..431.00 rows=1 width=16)
               ->  Redistribute Motion 3:3  (slice3; segments: 3)  (cost=0.00..431.00 rows=1 width=16)
                     Hash Key: zoo.a::text
                     ->  Table Scan on zoo  (cost=0.00..431.00 rows=1 width=16)
 Settings:  enable_nestloop=on; optimizer=on
 Optimizer status: PQO version 2.53.11
(18 rows)

But if we change the last condition from zoo.b=bar.b to zoo.b=foo.b (same effect), it generates the following plan without redistribute motion:

explain select * from foo left join bar on foo.a = bar.a and foo.b = bar.b
left join zoo on zoo.a=foo.a and zoo.b=foo.b;

 Gather Motion 3:1  (slice1; segments: 3)  (cost=0.00..1293.00 rows=3 width=48)
   ->  Hash Left Join  (cost=0.00..1293.00 rows=1 width=48)
         Hash Cond: foo.a::text = zoo.a::text AND foo.b = zoo.b
         ->  Hash Left Join  (cost=0.00..862.00 rows=1 width=32)
               Hash Cond: foo.a::text = bar.a::text AND foo.b = bar.b
               ->  Table Scan on foo  (cost=0.00..431.00 rows=1 width=16)
               ->  Hash  (cost=431.00..431.00 rows=1 width=16)
                     ->  Table Scan on bar  (cost=0.00..431.00 rows=1 width=16)
         ->  Hash  (cost=431.00..431.00 rows=1 width=16)
               ->  Table Scan on zoo  (cost=0.00..431.00 rows=1 width=16)
 Settings:  enable_nestloop=on; optimizer=on
 Optimizer status: PQO version 2.53.11
(12 rows)

Subquery that has outer reference over constant table falls back to planner

create table foo (a int) distributed by (a);
create table bar (b int) distributed by (b);
create table x (x1 int) distributed by (x1);

insert into foo select i from generate_series(1, 1000) i;
insert into bar select i from generate_series(1, 1000) i;

set optimizer=on;

explain SELECT *  FROM foo, bar  WHERE foo.a = (select bar.b from x limit 1) ;
explain SELECT *  FROM foo, bar  WHERE foo.a = (select bar.b limit 1 offset 10) ;

Fall back happens in the Expr->DXL translator.

error while running sudo make on gbdb-master

In file included from include/reader.h:4:0,
from include/gpreader.h:4,
from src/gpcloud.cpp:25:
include/s3common_headers.h:8:26: fatal error: openssl/hmac.h: No such file or directory

CBitVector::FEqual logic is wrong

Given

CBitSet *A = new CBitSet(pmp, 1024);
CBitSet *B = new CBitSet(pmp, 256);

If both set the first bit, they are actually the same, theoretically.
But if we do compare, A->FEqual(B), in debug mode, it will assert error, because the vector size if different. If release build, it will just compare memory with the length of 1024/64 = 16 bytes. But bitset B only have 4 bytes. We may return wrong result, or bad memory access.

What we should do is first compare the first 256 bit, if they are same, check the bits 257~1024 of set A are all clear or not.

CXformExpandNAryJoin generates 2 duplicate alternatives

Given the query explain select * from t1, t2,t3 where t1.a = t2.a and t2.b = t3.b;, CXformExpandNAryJoin generates 2 duplicate alternatives:

2017-11-25 12:13:48:163839 CST,THD000,TRACE,"Xform: CXformExpandNAryJoin
Input:
+--CLogicalNAryJoin   origin: [Grp:10, GrpExpr:0]
   |--CLogicalGet "t1" ("t1"), Columns: ["a" (0), "b" (1), "ctid" (2), "xmin" (3), "cmin" (4), "xmax" (5), "cmax" (6), "tableoid" (7), "gp_segment_id" (8)] Key sets: {[2,8]}   origin: [Grp:0, GrpExpr:0]
   |--CLogicalGet "t2" ("t2"), Columns: ["a" (9), "b" (10), "ctid" (11), "xmin" (12), "cmin" (13), "xmax" (14), "cmax" (15), "tableoid" (16), "gp_segment_id" (17)] Key sets: {[2,8]}   origin: [Grp:1, GrpExpr:0]
   |--CLogicalGet "t3" ("t3"), Columns: ["a" (18), "b" (19), "ctid" (20), "xmin" (21), "cmin" (22), "xmax" (23), "cmax" (24), "tableoid" (25), "gp_segment_id" (26)] Key sets: {[2,8]}   origin: [Grp:2, GrpExpr:0]
   +--CScalarBoolOp (EboolopAnd)   origin: [Grp:9, GrpExpr:0]
      |--CScalarCmp (=)   origin: [Grp:5, GrpExpr:0]
      |  |--CScalarIdent "a" (0)   origin: [Grp:3, GrpExpr:0]
      |  +--CScalarIdent "a" (9)   origin: [Grp:4, GrpExpr:0]
      +--CScalarCmp (=)   origin: [Grp:8, GrpExpr:0]
         |--CScalarIdent "b" (10)   origin: [Grp:6, GrpExpr:0]
         +--CScalarIdent "b" (19)   origin: [Grp:7, GrpExpr:0]
Output:
Alternatives:
0:
+--CLogicalInnerJoin
   |--CLogicalInnerJoin
   |  |--CLogicalGet "t1" ("t1"), Columns: ["a" (0), "b" (1), "ctid" (2), "xmin" (3), "cmin" (4), "xmax" (5), "cmax" (6), "tableoid" (7), "gp_segment_id" (8)] Key sets: {[2,8]}   origin: [Grp:0, GrpExpr:0]
   |  |--CLogicalGet "t2" ("t2"), Columns: ["a" (9), "b" (10), "ctid" (11), "xmin" (12), "cmin" (13), "xmax" (14), "cmax" (15), "tableoid" (16), "gp_segment_id" (17)] Key sets: {[2,8]}   origin: [Grp:1, GrpExpr:0]
   |  +--CScalarCmp (=)   origin: [Grp:5, GrpExpr:0] -----> this is the only diff
   |     |--CScalarIdent "a" (0)   origin: [Grp:3, GrpExpr:0]
   |     +--CScalarIdent "a" (9)   origin: [Grp:4, GrpExpr:0]
   |--CLogicalGet "t3" ("t3"), Columns: ["a" (18), "b" (19), "ctid" (20), "xmin" (21), "cmin" (22), "xmax" (23), "cmax" (24), "tableoid" (25), "gp_segment_id" (26)] Key sets: {[2,8]}   origin: [Grp:2, GrpExpr:0]
   +--CScalarCmp (=)
      |--CScalarIdent "b" (10)   origin: [Grp:6, GrpExpr:0]
      +--CScalarIdent "b" (19)   origin: [Grp:7, GrpExpr:0]
1:
+--CLogicalInnerJoin
   |--CLogicalInnerJoin
   |  |--CLogicalGet "t1" ("t1"), Columns: ["a" (0), "b" (1), "ctid" (2), "xmin" (3), "cmin" (4), "xmax" (5), "cmax" (6), "tableoid" (7), "gp_segment_id" (8)] Key sets: {[2,8]}   origin: [Grp:0, GrpExpr:0]
   |  |--CLogicalGet "t2" ("t2"), Columns: ["a" (9), "b" (10), "ctid" (11), "xmin" (12), "cmin" (13), "xmax" (14), "cmax" (15), "tableoid" (16), "gp_segment_id" (17)] Key sets: {[2,8]}   origin: [Grp:1, GrpExpr:0]
   |  +--CScalarCmp (=)
   |     |--CScalarIdent "a" (0)   origin: [Grp:3, GrpExpr:0]
   |     +--CScalarIdent "a" (9)   origin: [Grp:4, GrpExpr:0]
   |--CLogicalGet "t3" ("t3"), Columns: ["a" (18), "b" (19), "ctid" (20), "xmin" (21), "cmin" (22), "xmax" (23), "cmax" (24), "tableoid" (25), "gp_segment_id" (26)] Key sets: {[2,8]}   origin: [Grp:2, GrpExpr:0]
   +--CScalarCmp (=)
      |--CScalarIdent "b" (10)   origin: [Grp:6, GrpExpr:0]
      +--CScalarIdent "b" (19)   origin: [Grp:7, GrpExpr:0]
",

Query to trigger CXformPushGbBelowJoin

I am wondering what kind of query can trigger transform rule CXformPushGbBelowJoin. The description in the code is obscure and there is no minidump test case covering this xform. Can someone show me the query that can trigger the rule?

Executing 'make' command

Hello,

I was trying to execute the 'make' command having done the following commands successfully after download the GPORCA files from GitHub:

mkdir build
cd build
cmake -D CMAKE_INSTALL_PREFIX=/usr/local/gpdb -D XERCES_INCLUDE_DIR=/usr/local/gpdb/include -D XERCES_LIBRARY=/usr/local/gpdb/lib/libxerces-c.so -D GPOS_INCLUDE_DIR=/usr/local/gpdb/include -D GPOS_LIBRARY=/usr/local/gpdb/lib/libgpos.so ../

Unfortunately make results in the following error(s):

[root@mdw build]# make
[ 0%] Building CXX object libgpos/CMakeFiles/gpos.dir/src/common/CStackDescriptor.cpp.o
In file included from /usr/local/gpdb/include/gpos/types.h:28:0,
from /usr/local/gpdb/include/gpos/utils.h:18,
from /root/gporca/libgpos/src/common/CStackDescriptor.cpp:12:
/root/gporca/libgpos/src/common/CStackDescriptor.cpp: In member function โ€˜void gpos::CStackDescriptor::BackTrace(gpos::ULONG)โ€™:
/usr/local/gpdb/include/gpos/assert.h:46:67: error: size of array โ€˜assert_arrayโ€™ is negative
#define GPOS_CPL_ASSERT(x) extern int assert_array[ (x) ? 1 : -1 ]
^
/root/gporca/libgpos/src/common/CStackDescriptor.cpp:167:2: note: in expansion of macro โ€˜GPOS_CPL_ASSERTโ€™
GPOS_CPL_ASSERT(!"Backtrace is not supported for this platform");
^
/usr/local/gpdb/include/gpos/assert.h:46:40: error: unused variable โ€˜gpos::assert_arrayโ€™ [-Werror=unused-variable]
#define GPOS_CPL_ASSERT(x) extern int assert_array[ (x) ? 1 : -1 ]
^
/root/gporca/libgpos/src/common/CStackDescriptor.cpp:167:2: note: in expansion of macro โ€˜GPOS_CPL_ASSERTโ€™
GPOS_CPL_ASSERT(!"Backtrace is not supported for this platform");
^
At global scope:
cc1plus: error: unrecognized command line option "-Wno-tautological-undefined-compare" [-Werror]
cc1plus: all warnings being treated as errors
make[2]: *** [libgpos/CMakeFiles/gpos.dir/src/common/CStackDescriptor.cpp.o] Error 1
make[1]: *** [libgpos/CMakeFiles/gpos.dir/all] Error 2
make: *** [all] Error 2
[root@mdw build]#
[root@mdw build]#
[root@mdw build]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
[root@mdw build]#
[root@mdw build]#
[root@mdw build]# uname -r
4.9.7-1.el7.elrepo.x86_64

Any help on this would be appreciated.

Regards,
Vinny.

README fails to disclose required minimum version of CMake

On a fresh clone of gporca, following the README instructions results in the following problem:

CMake Error at CMakeLists.txt:3 (cmake_minimum_required):
  CMake 3.0 or higher is required.  You are running version 2.8.12.2

-- Configuring incomplete, errors occurred!
[WARNING] Build command cmake -GNinja ../ exited with code 1. Please verify that the build completed successfully.
[WARNING] No files were emitted. This may be due to a problem with your configuration
or because no files were actually compiled by your build command.
Please make sure you have configured the compilers actually used in the compilation.
 For more details, please look at: 
    /vagrant/gporca/build/cov-int/build-log.txt

This means a user (me) wasted time installing the wrong version of CMake. That's no fun.

P.S. secondary issue: instead of requiring a "mkdir build" why not just include an empty build folder with .gitkeep?

Orca doesn't pick up index with expression

Repro:

create table R(a int, b int);
create table S(a int, b int);
create index s_idx_afun on S(sqrt(a));
set optimizer_enable_hashjoin=off;
set enable_hashjoin=off; -- for planner

explain select * from R join S on R.a=sqrt(S.a) ;
                                         QUERY PLAN
---------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice2; segments: 3)  (cost=0.00..1324032.79 rows=1 width=16)
   ->  Nested Loop  (cost=0.00..1324032.79 rows=1 width=16)
         Join Filter: r.a::double precision = sqrt(s.a::double precision)
         ->  Broadcast Motion 3:3  (slice1; segments: 3)  (cost=0.00..431.00 rows=1 width=8)
               ->  Table Scan on r  (cost=0.00..431.00 rows=1 width=8)
         ->  Table Scan on s  (cost=0.00..431.00 rows=1 width=8)
 Settings:  enable_hashjoin=off; optimizer=on
 Optimizer status: PQO version 2.53.11
(8 rows)

But planner picked the index:

explain select * from R join S on R.a=sqrt(S.a) ;
                                            QUERY PLAN
--------------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice2; segments: 3)  (cost=0.01..990539.65 rows=7413210 width=16)
   ->  Nested Loop  (cost=0.01..990539.65 rows=2471070 width=16)
         ->  Broadcast Motion 3:3  (slice1; segments: 3)  (cost=0.00..4405.00 rows=86100 width=8)
               ->  Seq Scan on r  (cost=0.00..961.00 rows=28700 width=8)
         ->  Index Scan using s_idx_afun on s  (cost=0.01..2.10 rows=29 width=8)
               Index Cond: sqrt(s.a::double precision) = r.a::double precision
 Settings:  enable_hashjoin=off; optimizer=off
 Optimizer status: legacy query optimizer
(8 rows)

memory threshold for hash join spilling should be dynamic

In function CCostModelGPDB::CostHashJoin, it uses if (dRowsInner * dWidthInner <= dHJSpillingMemThreshold) to determine whether the hash table can fit into memory or not, but it looks like the threshold CCostModelParamsGPDB::DHJSpillingMemThresholdVal is fixed to 50MB. Should it be dynamic and accept value from GPDB?

error: unknown type name 'char16_t'

I'm compiling on mac OS X 10.11.6 El Capitan.
I'm using xerces-c version 3.2.1

I'm following the steps listed here: https://github.com/greenplum-db/gpdb

I'm seeing two types of error:

In file included from /usr/local/include/xercesc/util/XercesDefs.hpp:46:
/usr/local/include/xercesc/util/Xerces_autoconf_config.hpp:122:9: error: unknown type name 'char16_t'
typedef XERCES_XMLCH_T                          XMLCh;
        ^
/usr/local/include/xercesc/util/Xerces_autoconf_config.hpp:66:24: note: expanded from macro 'XERCES_XMLCH_T'
#define XERCES_XMLCH_T char16_t
In file included from /usr/local/include/xercesc/internal/XSerializable.hpp:25:
/usr/local/include/xercesc/internal/XSerializeEngine.hpp:486:30: error: class member cannot be redeclared
           XSerializeEngine& operator<<(int);
                             ^
/usr/local/include/xercesc/internal/XSerializeEngine.hpp:482:30: note: previous declaration is here
           XSerializeEngine& operator<<(XMLCh);
                             ^
/usr/local/include/xercesc/internal/XSerializeEngine.hpp:514:30: error: class member cannot be redeclared
           XSerializeEngine& operator>>(int&);
                             ^
/usr/local/include/xercesc/internal/XSerializeEngine.hpp:510:30: note: previous declaration is here
           XSerializeEngine& operator>>(XMLCh&);
                             ^

This is for v2.55.5

I'll try this on a brand new machine soon.

Conan installation of ORCA fails: Unable to connect to conan-center=https://conan.bintray.com

Greenplum version or build

master

OS version and uname -a

macOX Sierra

autoconf options used ( config.status --config )

N/A

Installation information ( pg_config )

N/A

Expected behavior

orca installs with conan

Actual behavior

ONAN_USER_HOME=/Users/pivotal/workspace/gpdb/depends conan remote add gpdb-oss https://api.bintray.com/conan/greenplum-db/gpdb-oss;
WARN: Remotes registry file missing, creating default one in /Users/pivotal/workspace/gpdb/depends/.conan/registry.txt
CONAN_USER_HOME=/Users/pivotal/workspace/gpdb/depends conan install --build=missing conanfile_orca.txt
Auto detecting your dev setup to initialize the default profile (/Users/pivotal/workspace/gpdb/depends/.conan/profiles/default)
Found apple-clang 9.0
Default settings
	os=Macos
	os_build=Macos
	arch=x86_64
	arch_build=x86_64
	compiler=apple-clang
	compiler.version=9.0
	compiler.libcxx=libc++
	build_type=Release
*** You can change them in /Users/pivotal/workspace/gpdb/depends/.conan/profiles/default ***
*** Or override with -s compiler='other' -s ...s***


orca/v2.57.0@gpdb/stable: Not found in local cache, looking in remotes...
orca/v2.57.0@gpdb/stable: Trying with 'conan-center'...
orca/v2.57.0@gpdb/stable: Trying with 'gpdb-oss'...
Downloading conanmanifest.txt
[==================================================] 227.7KB/227.7KB
Downloading conanfile.py
[==================================================] 1.7KB/1.7KB
PROJECT: Installing /Users/pivotal/workspace/gpdb/depends/conanfile_orca.txt
Requirements
    orca/v2.57.0@gpdb/stable from 'gpdb-oss'
Packages
    orca/v2.57.0@gpdb/stable:3cfade032d90e40671f831047a4b021865f8396f

ERROR: orca/v2.57.0@gpdb/stable: Error in build_requirements() method, line 35
	if int(vers.split(".")[0]) < 3:
	TypeError: a bytes-like object is required, not 'str'
make: *** [orca] Error 1

  pivotals-Mac in ~/workspace/gpdb/depends
ยฑ  |master ?:3 โœ—| โ†’ make install_local
CONAN_USER_HOME=/Users/pivotal/workspace/gpdb/depends conan install --build=missing conanfile_orca.txt
PROJECT: Installing /Users/pivotal/workspace/gpdb/depends/conanfile_orca.txt
Requirements
    orca/v2.57.0@gpdb/stable from 'gpdb-oss'
Packages
    orca/v2.57.0@gpdb/stable:3cfade032d90e40671f831047a4b021865f8396f

orca/v2.57.0@gpdb/stable: WARN: Package is corrupted, removing folder: /Users/pivotal/workspace/gpdb/depends/.conan/data/orca/v2.57.0/gpdb/stable/package/3cfade032d90e40671f831047a4b021865f8396f
ERROR: orca/v2.57.0@gpdb/stable: Error in build_requirements() method, line 35
	if int(vers.split(".")[0]) < 3:
	TypeError: a bytes-like object is required, not 'str'
make: *** [orca] Error 1

Step to reproduce the behavior

cd depends
./configure
make
make install_local
cd ..

Orca generates inferior plan for uncorrelated exists subquery

Repro:

create table bar(c int);
create table t1(a int);
explain select * from bar where exists (select a from t1);
                                         QUERY PLAN
--------------------------------------------------------------------------------------------
 Result  (cost=0.00..1324032.08 rows=1 width=4)
   Filter: (SubPlan 1)
   ->  Gather Motion 3:1  (slice1; segments: 3)  (cost=0.00..431.00 rows=1 width=4)
         ->  Table Scan on bar  (cost=0.00..431.00 rows=1 width=4)
   SubPlan 1
     ->  Materialize  (cost=0.00..431.00 rows=1 width=4)
           ->  Gather Motion 3:1  (slice2; segments: 3)  (cost=0.00..431.00 rows=1 width=4)
                 ->  Table Scan on t1  (cost=0.00..431.00 rows=1 width=4)
 Settings:  optimizer=on
 Optimizer status: PQO version 2.48.2
(10 rows)

Should generate initplan or join.

WIP: An aggregate named "max" shouldn't be considered so special

CREATE TYPE int42;

CREATE FUNCTION int42_in(cstring)
   RETURNS int42
   AS 'int4in'
   LANGUAGE internal IMMUTABLE STRICT;

CREATE FUNCTION int42_out(int42)
   RETURNS cstring
   AS 'int4out'
   LANGUAGE internal IMMUTABLE STRICT;

CREATE TYPE int42 (
   internallength = 4,
   input = int42_in,
   output = int42_out,
   alignment = int4,
   passedbyvalue
);

CREATE TYPE avg_state AS (
   sum int8,
   count int8
);

CREATE FUNCTION int42_eq(int42, int42)
   RETURNS bool
   LANGUAGE internal IMMUTABLE STRICT
   AS 'int4eq';

CREATE OPERATOR = (
  PROCEDURE = int42_eq,
  LEFTARG = int42, RIGHTARG = int42
);

CREATE FUNCTION int42_lt(int42, int42)
   RETURNS bool
   LANGUAGE internal IMMUTABLE STRICT
   AS 'int4lt';

CREATE OPERATOR < (
  PROCEDURE = int42_lt,
  LEFTARG = int42, RIGHTARG = int42
);

CREATE FUNCTION int42_cmp(int42, int42)
   RETURNS int
   LANGUAGE internal IMMUTABLE STRICT
   AS 'btint4cmp';

CREATE OPERATOR CLASS int42_ops DEFAULT FOR TYPE int42
   USING btree AS
   OPERATOR 1 <,
   OPERATOR 3 =,
   FUNCTION 1 int42_cmp(int42, int42)
;

CREATE FUNCTION int42_hash(int42)
   RETURNS int
   LANGUAGE internal IMMUTABLE STRICT
   AS 'hashint4';

CREATE OPERATOR CLASS int42_ops DEFAULT FOR TYPE int42
   USING hash AS
   OPERATOR 1 =,
   FUNCTION 1 int42_hash(int42)
;

CREATE FUNCTION int42_avg_combine(avg_state, avg_state)
   RETURNS avg_state
   LANGUAGE SQL IMMUTABLE STRICT AS
$fn$
   SELECT ($1.sum + $2.sum, $1.count + $1.count)::avg_state;
$fn$;

CREATE FUNCTION int42_avg_accum(avg_state, int42)
   RETURNS avg_state
   LANGUAGE SQL IMMUTABLE STRICT AS
$fn$
   SELECT ($1.sum + $2::text::int4, $1.count + 1)::avg_state;
$fn$;

CREATE FUNCTION int42_avg_finalize(avg_state)
   RETURNS int42
   LANGUAGE SQL IMMUTABLE STRICT AS
$fn$
   SELECT CASE WHEN $1.count <> 0 THEN ($1.sum / $1.count)::text::int42 ELSE NULL END;
$fn$;

CREATE AGGREGATE max(int42) (
   sfunc = int42_avg_accum,
   finalfunc = int42_avg_finalize,
   stype = avg_state,
   initcond = '(0,0)',
   combinefunc = int42_avg_combine
);

CREATE TABLE foo (a int, b int42);

SELECT max(DISTINCT b) FROM foo;

example minidump:

<?xml version="1.0" encoding="UTF-8"?>
<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
  <dxl:Comment><![CDATA[
CREATE TABLE foo (a int, b int42);

SELECT max(DISTINCT b) FROM foo;

  ]]></dxl:Comment>
  <dxl:Thread Id="0">
    <dxl:OptimizerConfig>
      <dxl:EnumeratorConfig Id="0" PlanSamples="0" CostThreshold="0"/>
      <dxl:StatisticsConfig DampingFactorFilter="0.750000" DampingFactorJoin="0.010000" DampingFactorGroupBy="0.750000"/>
      <dxl:CTEConfig CTEInliningCutoff="0"/>
      <dxl:WindowOids RowNumber="3100" Rank="3101"/>
      <dxl:CostModelConfig CostModelType="1" SegmentsForCosting="3">
        <dxl:CostParams>
          <dxl:CostParam Name="NLJFactor" Value="1024.000000" LowerBound="1023.500000" UpperBound="1024.500000"/>
        </dxl:CostParams>
      </dxl:CostModelConfig>
      <dxl:Hint MinNumOfPartsToRequireSortOnInsert="2147483647" JoinArityForAssociativityCommutativity="18" ArrayExpansionThreshold="100" JoinOrderDynamicProgThreshold="10" BroadcastThreshold="100000" EnforceConstraintsOnDML="false"/>
      <dxl:TraceFlags Value="102074,102120,103001,103014,103015,103022,103027,103029,104003,104004,104005,105000,106000"/>
    </dxl:OptimizerConfig>
    <dxl:Metadata SystemIds="0.GPDB">
      <dxl:Type Mdid="0.16.1.0" Name="bool" IsRedistributable="true" IsHashable="true" IsComposite="false" IsFixedLength="true" Length="1" PassByValue="true">
        <dxl:EqualityOp Mdid="0.91.1.0"/>
        <dxl:InequalityOp Mdid="0.85.1.0"/>
        <dxl:LessThanOp Mdid="0.58.1.0"/>
        <dxl:LessThanEqualsOp Mdid="0.1694.1.0"/>
        <dxl:GreaterThanOp Mdid="0.59.1.0"/>
        <dxl:GreaterThanEqualsOp Mdid="0.1695.1.0"/>
        <dxl:ComparisonOp Mdid="0.1693.1.0"/>
        <dxl:ArrayType Mdid="0.1000.1.0"/>
        <dxl:MinAgg Mdid="0.0.0.0"/>
        <dxl:MaxAgg Mdid="0.0.0.0"/>
        <dxl:AvgAgg Mdid="0.0.0.0"/>
        <dxl:SumAgg Mdid="0.0.0.0"/>
        <dxl:CountAgg Mdid="0.2147.1.0"/>
      </dxl:Type>
      <dxl:Type Mdid="0.23.1.0" Name="int4" IsRedistributable="true" IsHashable="true" IsComposite="false" IsFixedLength="true" Length="4" PassByValue="true">
        <dxl:EqualityOp Mdid="0.96.1.0"/>
        <dxl:InequalityOp Mdid="0.518.1.0"/>
        <dxl:LessThanOp Mdid="0.97.1.0"/>
        <dxl:LessThanEqualsOp Mdid="0.523.1.0"/>
        <dxl:GreaterThanOp Mdid="0.521.1.0"/>
        <dxl:GreaterThanEqualsOp Mdid="0.525.1.0"/>
        <dxl:ComparisonOp Mdid="0.351.1.0"/>
        <dxl:ArrayType Mdid="0.1007.1.0"/>
        <dxl:MinAgg Mdid="0.2132.1.0"/>
        <dxl:MaxAgg Mdid="0.2116.1.0"/>
        <dxl:AvgAgg Mdid="0.2101.1.0"/>
        <dxl:SumAgg Mdid="0.2108.1.0"/>
        <dxl:CountAgg Mdid="0.2147.1.0"/>
      </dxl:Type>
      <dxl:Type Mdid="0.26.1.0" Name="oid" IsRedistributable="true" IsHashable="true" IsComposite="false" IsFixedLength="true" Length="4" PassByValue="true">
        <dxl:EqualityOp Mdid="0.607.1.0"/>
        <dxl:InequalityOp Mdid="0.608.1.0"/>
        <dxl:LessThanOp Mdid="0.609.1.0"/>
        <dxl:LessThanEqualsOp Mdid="0.611.1.0"/>
        <dxl:GreaterThanOp Mdid="0.610.1.0"/>
        <dxl:GreaterThanEqualsOp Mdid="0.612.1.0"/>
        <dxl:ComparisonOp Mdid="0.356.1.0"/>
        <dxl:ArrayType Mdid="0.1028.1.0"/>
        <dxl:MinAgg Mdid="0.2118.1.0"/>
        <dxl:MaxAgg Mdid="0.2134.1.0"/>
        <dxl:AvgAgg Mdid="0.0.0.0"/>
        <dxl:SumAgg Mdid="0.0.0.0"/>
        <dxl:CountAgg Mdid="0.2147.1.0"/>
      </dxl:Type>
      <dxl:Type Mdid="0.27.1.0" Name="tid" IsRedistributable="true" IsHashable="true" IsComposite="false" IsFixedLength="true" Length="6" PassByValue="false">
        <dxl:EqualityOp Mdid="0.387.1.0"/>
        <dxl:InequalityOp Mdid="0.402.1.0"/>
        <dxl:LessThanOp Mdid="0.2799.1.0"/>
        <dxl:LessThanEqualsOp Mdid="0.2801.1.0"/>
        <dxl:GreaterThanOp Mdid="0.2800.1.0"/>
        <dxl:GreaterThanEqualsOp Mdid="0.2802.1.0"/>
        <dxl:ComparisonOp Mdid="0.2794.1.0"/>
        <dxl:ArrayType Mdid="0.1010.1.0"/>
        <dxl:MinAgg Mdid="0.2798.1.0"/>
        <dxl:MaxAgg Mdid="0.2797.1.0"/>
        <dxl:AvgAgg Mdid="0.0.0.0"/>
        <dxl:SumAgg Mdid="0.0.0.0"/>
        <dxl:CountAgg Mdid="0.2147.1.0"/>
      </dxl:Type>
      <dxl:Type Mdid="0.29.1.0" Name="cid" IsRedistributable="true" IsHashable="true" IsComposite="false" IsFixedLength="true" Length="4" PassByValue="true">
        <dxl:EqualityOp Mdid="0.385.1.0"/>
        <dxl:InequalityOp Mdid="0.0.0.0"/>
        <dxl:LessThanOp Mdid="0.0.0.0"/>
        <dxl:LessThanEqualsOp Mdid="0.0.0.0"/>
        <dxl:GreaterThanOp Mdid="0.0.0.0"/>
        <dxl:GreaterThanEqualsOp Mdid="0.0.0.0"/>
        <dxl:ComparisonOp Mdid="0.0.0.0"/>
        <dxl:ArrayType Mdid="0.1012.1.0"/>
        <dxl:MinAgg Mdid="0.0.0.0"/>
        <dxl:MaxAgg Mdid="0.0.0.0"/>
        <dxl:AvgAgg Mdid="0.0.0.0"/>
        <dxl:SumAgg Mdid="0.0.0.0"/>
        <dxl:CountAgg Mdid="0.2147.1.0"/>
      </dxl:Type>
      <dxl:Type Mdid="0.28.1.0" Name="xid" IsRedistributable="true" IsHashable="true" IsComposite="false" IsFixedLength="true" Length="4" PassByValue="true">
        <dxl:EqualityOp Mdid="0.352.1.0"/>
        <dxl:InequalityOp Mdid="0.0.0.0"/>
        <dxl:LessThanOp Mdid="0.0.0.0"/>
        <dxl:LessThanEqualsOp Mdid="0.0.0.0"/>
        <dxl:GreaterThanOp Mdid="0.0.0.0"/>
        <dxl:GreaterThanEqualsOp Mdid="0.0.0.0"/>
        <dxl:ComparisonOp Mdid="0.0.0.0"/>
        <dxl:ArrayType Mdid="0.1011.1.0"/>
        <dxl:MinAgg Mdid="0.0.0.0"/>
        <dxl:MaxAgg Mdid="0.0.0.0"/>
        <dxl:AvgAgg Mdid="0.0.0.0"/>
        <dxl:SumAgg Mdid="0.0.0.0"/>
        <dxl:CountAgg Mdid="0.2147.1.0"/>
      </dxl:Type>
      <dxl:Type Mdid="0.16801.1.0" Name="int42" IsRedistributable="true" IsHashable="false" IsComposite="false" IsFixedLength="true" Length="4" PassByValue="true">
        <dxl:EqualityOp Mdid="0.16809.1.0"/>
        <dxl:InequalityOp Mdid="0.0.0.0"/>
        <dxl:LessThanOp Mdid="0.16811.1.0"/>
        <dxl:LessThanEqualsOp Mdid="0.0.0.0"/>
        <dxl:GreaterThanOp Mdid="0.0.0.0"/>
        <dxl:GreaterThanEqualsOp Mdid="0.0.0.0"/>
        <dxl:ComparisonOp Mdid="0.16812.1.0"/>
        <dxl:ArrayType Mdid="0.16804.1.0"/>
        <dxl:MinAgg Mdid="0.0.0.0"/>
        <dxl:MaxAgg Mdid="0.16826.1.0"/>
        <dxl:AvgAgg Mdid="0.0.0.0"/>
        <dxl:SumAgg Mdid="0.0.0.0"/>
        <dxl:CountAgg Mdid="0.2147.1.0"/>
      </dxl:Type>
      <dxl:Type Mdid="0.16807.1.0" Name="avg_state" IsRedistributable="false" IsHashable="false" IsComposite="true" BaseRelationMdid="0.16805.1.0" IsFixedLength="false" PassByValue="false">
        <dxl:EqualityOp Mdid="0.2988.1.0"/>
        <dxl:InequalityOp Mdid="0.2989.1.0"/>
        <dxl:LessThanOp Mdid="0.2990.1.0"/>
        <dxl:LessThanEqualsOp Mdid="0.2992.1.0"/>
        <dxl:GreaterThanOp Mdid="0.2991.1.0"/>
        <dxl:GreaterThanEqualsOp Mdid="0.2993.1.0"/>
        <dxl:ComparisonOp Mdid="0.2987.1.0"/>
        <dxl:ArrayType Mdid="0.16806.1.0"/>
        <dxl:MinAgg Mdid="0.0.0.0"/>
        <dxl:MaxAgg Mdid="0.0.0.0"/>
        <dxl:AvgAgg Mdid="0.0.0.0"/>
        <dxl:SumAgg Mdid="0.0.0.0"/>
        <dxl:CountAgg Mdid="0.2147.1.0"/>
      </dxl:Type>
      <dxl:RelationStatistics Mdid="2.16827.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
      <dxl:GPDBAgg Mdid="0.16826.1.0" Name="max" IsSplittable="true" HashAggCapable="true">
        <dxl:ResultType Mdid="0.16801.1.0"/>
        <dxl:IntermediateResultType Mdid="0.16807.1.0"/>
      </dxl:GPDBAgg>
      <dxl:Relation Mdid="0.16827.1.0" Name="foo" IsTemporary="false" HasOids="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" NumberLeafPartitions="0">
        <dxl:Columns>
          <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
            <dxl:DefaultValue/>
          </dxl:Column>
          <dxl:Column Name="b" Attno="2" Mdid="0.16801.1.0" Nullable="true" ColWidth="4">
            <dxl:DefaultValue/>
          </dxl:Column>
          <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
            <dxl:DefaultValue/>
          </dxl:Column>
          <dxl:Column Name="xmin" Attno="-3" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
            <dxl:DefaultValue/>
          </dxl:Column>
          <dxl:Column Name="cmin" Attno="-4" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
            <dxl:DefaultValue/>
          </dxl:Column>
          <dxl:Column Name="xmax" Attno="-5" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
            <dxl:DefaultValue/>
          </dxl:Column>
          <dxl:Column Name="cmax" Attno="-6" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
            <dxl:DefaultValue/>
          </dxl:Column>
          <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
            <dxl:DefaultValue/>
          </dxl:Column>
          <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
            <dxl:DefaultValue/>
          </dxl:Column>
        </dxl:Columns>
        <dxl:IndexInfoList/>
        <dxl:Triggers/>
        <dxl:CheckConstraints/>
      </dxl:Relation>
      <dxl:ColumnStatistics Mdid="1.16827.1.0.1" Name="b" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
      <dxl:ColumnStatistics Mdid="1.16827.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
    </dxl:Metadata>
    <dxl:Query>
      <dxl:OutputColumns>
        <dxl:Ident ColId="10" ColName="max" TypeMdid="0.16801.1.0"/>
      </dxl:OutputColumns>
      <dxl:CTEList/>
      <dxl:LogicalGroupBy>
        <dxl:GroupingColumns/>
        <dxl:ProjList>
          <dxl:ProjElem ColId="10" Alias="max">
            <dxl:AggFunc AggMdid="0.16826.1.0" AggDistinct="true" AggStage="Normal">
              <dxl:Ident ColId="2" ColName="b" TypeMdid="0.16801.1.0"/>
            </dxl:AggFunc>
          </dxl:ProjElem>
        </dxl:ProjList>
        <dxl:LogicalGet>
          <dxl:TableDescriptor Mdid="0.16827.1.0" TableName="foo">
            <dxl:Columns>
              <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
              <dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.16801.1.0" ColWidth="4"/>
              <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
              <dxl:Column ColId="4" Attno="-3" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
              <dxl:Column ColId="5" Attno="-4" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
              <dxl:Column ColId="6" Attno="-5" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
              <dxl:Column ColId="7" Attno="-6" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
              <dxl:Column ColId="8" Attno="-7" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
              <dxl:Column ColId="9" Attno="-8" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
            </dxl:Columns>
          </dxl:TableDescriptor>
        </dxl:LogicalGet>
      </dxl:LogicalGroupBy>
    </dxl:Query>
    <dxl:Plan Id="0" SpaceSize="0">
      <dxl:Aggregate AggregationStrategy="Plain" StreamSafe="false">
        <dxl:Properties>
          <dxl:Cost StartupCost="0" TotalCost="431.000040" Rows="1.000000" Width="4"/>
        </dxl:Properties>
        <dxl:GroupingColumns/>
        <dxl:ProjList>
          <dxl:ProjElem ColId="9" Alias="max">
            <dxl:AggFunc AggMdid="0.16826.1.0" AggDistinct="false" AggStage="Final">
              <dxl:Ident ColId="10" ColName="ColRef_0010" TypeMdid="0.16807.1.0"/>
            </dxl:AggFunc>
          </dxl:ProjElem>
        </dxl:ProjList>
        <dxl:Filter/>
        <dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
          <dxl:Properties>
            <dxl:Cost StartupCost="0" TotalCost="431.000039" Rows="1.000000" Width="8"/>
          </dxl:Properties>
          <dxl:ProjList>
            <dxl:ProjElem ColId="10" Alias="ColRef_0010">
              <dxl:Ident ColId="10" ColName="ColRef_0010" TypeMdid="0.16807.1.0"/>
            </dxl:ProjElem>
          </dxl:ProjList>
          <dxl:Filter/>
          <dxl:SortingColumnList/>
          <dxl:Aggregate AggregationStrategy="Plain" StreamSafe="false">
            <dxl:Properties>
              <dxl:Cost StartupCost="0" TotalCost="431.000010" Rows="1.000000" Width="8"/>
            </dxl:Properties>
            <dxl:GroupingColumns/>
            <dxl:ProjList>
              <dxl:ProjElem ColId="10" Alias="ColRef_0010">
                <dxl:AggFunc AggMdid="0.16826.1.0" AggDistinct="false" AggStage="Partial">
                  <dxl:Ident ColId="1" ColName="b" TypeMdid="0.16801.1.0"/>
                </dxl:AggFunc>
              </dxl:ProjElem>
            </dxl:ProjList>
            <dxl:Filter/>
            <dxl:TableScan>
              <dxl:Properties>
                <dxl:Cost StartupCost="0" TotalCost="431.000007" Rows="1.000000" Width="4"/>
              </dxl:Properties>
              <dxl:ProjList>
                <dxl:ProjElem ColId="1" Alias="b">
                  <dxl:Ident ColId="1" ColName="b" TypeMdid="0.16801.1.0"/>
                </dxl:ProjElem>
              </dxl:ProjList>
              <dxl:Filter/>
              <dxl:TableDescriptor Mdid="0.16827.1.0" TableName="foo">
                <dxl:Columns>
                  <dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
                  <dxl:Column ColId="1" Attno="2" ColName="b" TypeMdid="0.16801.1.0" ColWidth="4"/>
                  <dxl:Column ColId="2" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
                  <dxl:Column ColId="3" Attno="-3" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
                  <dxl:Column ColId="4" Attno="-4" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
                  <dxl:Column ColId="5" Attno="-5" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
                  <dxl:Column ColId="6" Attno="-6" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
                  <dxl:Column ColId="7" Attno="-7" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
                  <dxl:Column ColId="8" Attno="-8" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
                </dxl:Columns>
              </dxl:TableDescriptor>
            </dxl:TableScan>
          </dxl:Aggregate>
        </dxl:GatherMotion>
      </dxl:Aggregate>
    </dxl:Plan>
  </dxl:Thread>
</dxl:DXLMessage>

Unexpected "Broadcast Motion" in plan where two tables are joined on distributed keys

With the new optimizer, I have got a plan of a two table join as follows:

postgres=> set optimizer = on;
SET
postgres=> explain select * from jcj_jjxx_r join jcj_cjxx_r on jcj_jjxx_r.jjbh= jcj_cjxx_r.jjbh where jjdw >= '230769548' and jjdw < '230769549' limit 100;;
                                              QUERY PLAN
------------------------------------------------------------------------------------------------------
 Limit  (cost=0.00..432.55 rows=1 width=1512)
   ->  Gather Motion 4:1  (slice2; segments: 4)  (cost=0.00..432.55 rows=1 width=1512)
         ->  Nested Loop  (cost=0.00..432.54 rows=1 width=1512)
               Join Filter: true
               ->  Broadcast Motion 4:4  (slice1; segments: 4)  (cost=0.00..431.04 rows=1 width=712)
                     ->  Table Scan on jcj_cjxx_r  (cost=0.00..431.00 rows=1 width=712)
               ->  Index Scan using jcj_jjxx_r_pkey on jcj_jjxx_r  (cost=0.00..1.50 rows=1 width=800)
                     Index Cond: jcj_jjxx_r.jjbh::text = jcj_cjxx_r.jjbh::text
                     Filter: jjdw >= '230769548'::bpchar AND jjdw < '230769549'::bpchar
 Settings:  effective_cache_size=8GB; gp_statistics_use_fkeys=on; optimizer=on
 Optimizer status: PQO version 1.609
(11 rows)

Problem is both of the two tables jcj_jjxx_r and jcj_cjxx_r are distributed and joined by their jjbh column respectively, why there is a Broacast Motion ? The tables are distributed with jjbh, so when they get joined, no Motion is needed, correct?

Definition of the two tables is as follows. To reproduce the plan, just run the DDL and the query.

Note, I didn't populate data in the tables for the mentioned plan. But I have seen the query with more than 10GB data in each of tables having a similar plan.

create table jcj_jjxx_r (
  jjbh varchar(20) not null,
  jjdbh varchar(30) default null,
  pjdbh varchar(30) default null,
  gljjdbh varchar(30) default null,
  jjlyh varchar(14) default null,
  pjlyh varchar(14) default null,
  ldgbh varchar(20) default null,
  jjyxm varchar(30) default null,
  pjyxm varchar(30) default null,
  lhlbdm char(2) default null,
  bjdhsj varchar(14) default null,
  bjdh varchar(20) default null,
  bjdhhm varchar(200) default null,
  bjdhdz varchar(200) default null,
  thsc varchar(4) default null,
  bjr varchar(30) default null,
  bjrxb char(1) default null,
  lxdh varchar(50) default null,
  bjxs char(2) not null,
  bjlx char(6) default null,
  sfdd varchar(200) default null,
  bjnr varchar(2000) not null,
  bcjjnr varchar(400) default null,
  sjcph varchar(100) default null,
  cllx char(2) default null,
  syqx varchar(100) default null,
  clqx varchar(100) default null,
  hzdj char(2) default null,
  sfzddw char(1) default null,
  zddwbm varchar(11) default null,
  jzlb char(2) default null,
  jzjg char(2) default null,
  qhcs char(4) default null,
  bzwqk varchar(100) default null,
  blqk varchar(100) default null,
  sfbw varchar(100) default null,
  rswxz varchar(100) default null,
  yfwxwz char(1) default null,
  ywbzxl char(1) default null,
  yfty char(1) default null,
  ywbkry char(1) default null,
  gis_x varchar(12) default null,
  gis_y varchar(12) default null,
  sfzxxs char(1) default null,
  bjtdyy varchar(400) default null,
  pjsj varchar(14) default null,
  bjcjyj varchar(2000) default null,
  ejddsj varchar(14) default null,
  ejjssj varchar(14) default null,
  ejxfsj varchar(14) default null,
  ejjsr char(6) default null,
  ejjsrxm varchar(30) default null,
  ejjsdw char(12) default null,
  ejjsdwmc varchar(100) default null,
  sjddsj varchar(14) default null,
  sjjssj varchar(14) default null,
  sjjsr char(6) default null,
  sjjsrxm varchar(30) default null,
  sjjsd char(12) default null,
  sjjsdwmc varchar(100) default null,
  cjbs char(1) default null,
  djdw char(12) default null,
  djr char(6) default null,
  djsj varchar(14) not null,
  xgr char(6) default null,
  xgsj varchar(14) not null,
  xgdw char(12) default null,
  djrxm varchar(30) default null,
  djdwmc varchar(100) default null,
  xgrxm varchar(30) default null,
  xgdwmc varchar(100) default null,
  jjrqsj varchar(14) default null,
  jjdw char(12) default null,
  jjdwmc varchar(100) default null,
  jjr char(6) default null,
  jjrxm varchar(30) default null,
  yjdw varchar(100) default null,
  yjsj varchar(14) default null,
  yjsm varchar(400) default null,
  yjr varchar(30) default null,
  jjxzqh char(6) default null,
  jjgxdw varchar(12) default null,
  fkyq varchar(2) default null,
  sfyfdx varchar(1) default null,
  jjdxnr varchar(2000) default null,
  jjdxsj varchar(14) default null,
  sbsj varchar(14) default null,
  sbnr varchar(2000) default null,
  cdclbm varchar(400) default null,
  jjlx varchar(1) default null,
  zdyjr varchar(30) default null,
  zdyjdw varchar(100) default null,
  zdyjsj varchar(14) default null,
  zdyjsm varchar(400) default null,
  sfbddh varchar(1) default null,
  zhddjjy varchar(6) default null,
  zhddjjdw varchar(12) default null,
  zhddjjsj varchar(14) default null,
  zhddgis_x varchar(12) default null,
  zhddgis_y varchar(12) default null,
  primary key (jjbh)
);


create table jcj_cjxx_r (
  cjbh varchar(20) not null,
  jjbh varchar(20) not null,
  jjdbh varchar(30) default null,
  pjdbh varchar(30) default null,
  fklyh varchar(14) default null,
  cjlb char(6) not null,
  cjsj varchar(14) not null,
  ddxcsj varchar(14) default null,
  cjxzqh char(6) default null,
  cjjlx varchar(25) default null,
  cjmlph varchar(20) default null,
  cjmphz char(1) default null,
  cjxz varchar(60) default null,
  sfcs char(3) default null,
  fsyy char(4) default null,
  tqqk char(1) default null,
  jqsx varchar(16) not null,
  cjr char(34) not null,
  cjrhzxs varchar(100) default null,
  cjrlxfs varchar(30) default null,
  sfxq varchar(30) default null,
  sfsjsx varchar(14) default null,
  sfsjxx varchar(14) default null,
  cljgnr varchar(255) not null,
  bccljg varchar(255) default null,
  ssxxqk varchar(255) default null,
  cjfksj varchar(14) default null,
  spsj varchar(14) default null,
  zbld char(6) default null,
  zbldxm varchar(30) default null,
  ldclsj varchar(30) default null,
  cjjg char(2) not null,
  cjysjsdw varchar(60) default null,
  cjysjsr varchar(30) default null,
  cjysjssj varchar(14) default null,
  cdjl varchar(3) default null,
  cdjdc varchar(3) default null,
  cdcz varchar(3) default null,
  jjfns varchar(3) default null,
  jjets varchar(3) default null,
  jjrzs varchar(3) default null,
  jzqz varchar(3) default null,
  jzsy varchar(3) default null,
  rysss varchar(3) default null,
  rysws varchar(3) default null,
  lzscrs varchar(3) default null,
  phxxaj varchar(3) default null,
  phxsaj varchar(3) default null,
  phzaaj varchar(3) default null,
  tprf varchar(3) default null,
  zhzacy varchar(3) default null,
  zjjjss bigint default null,
  whss bigint default null,
  ajslr char(13) default null,
  ajsldw char(12) default null,
  glajbh varchar(23) default null,
  glajzt char(2) default null,
  djdw char(12) default null,
  djr char(6) default null,
  djsj varchar(14) not null,
  xgr char(6) default null,
  xgsj varchar(14) not null,
  xgdw char(12) default null,
  djrxm varchar(30) default null,
  djdwmc varchar(100) default null,
  xgrxm varchar(30) default null,
  xgdwmc varchar(100) default null,
  cjdw char(12) not null,
  cjdwmc varchar(30) default null,
  cjxxdd varchar(100) default null,
  zblddw varchar(30) default null,
  zblddwmc varchar(100) default null,
  spxgsj varchar(14) default null,
  yzb text,
  xzb text,
  bzsj varchar(14) default null,
  bzdw varchar(12) default null,
  bzr varchar(6) default null,
  bzrxm varchar(30) default null,
  bzdwmc varchar(100) default null,
  gxsj varchar(14) default null,
  gxrxm varchar(30) default null,
  gxr varchar(6) default null,
  gxdwmc varchar(100) default null,
  gxdw varchar(12) default null,
  gis_x varchar(12) default null,
  gis_y varchar(12) default null,
  ssxq varchar(12) default null,
  ysjsnbdw varchar(12) default null,
  primary key (jjbh)
);


make error on Ubuntu 18.04 with gcc 7.3

Ubuntu 18.04 with gcc 7.3
meet the error again.

-- Build files have been written to: /root/gpdb-5.10.0/gporca/build
ninja: Entering directory `build'
[1/1073] Building CXX object libgpos/CMakeFiles/gpos.dir/src/common/CHeapObject.cpp.o
[2/1073] Building CXX object libgpos/CMakeFiles/gpos.dir/src/common/CStackDescriptor.cpp.o
FAILED: libgpos/CMakeFiles/gpos.dir/src/common/CStackDescriptor.cpp.o
/usr/bin/c++ -Dgpos_EXPORTS -I../libgpos/include -Ilibgpos/include -g -O2 -fdebug-prefix-map=/root/gpdb-5.10.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -Wextra -pedantic-errors -Wno-variadic-macros -fno-omit-frame-pointer -O2 -g -DNDEBUG -g3 -fPIC -std=gnu++98 -MD -MT libgpos/CMakeFiles/gpos.dir/src/common/CStackDescriptor.cpp.o -MF libgpos/CMakeFiles/gpos.dir/src/common/CStackDescriptor.cpp.o.d -o libgpos/CMakeFiles/gpos.dir/src/common/CStackDescriptor.cpp.o -c ../libgpos/src/common/CStackDescriptor.cpp
In file included from ../libgpos/include/gpos/types.h:28:0,
from ../libgpos/include/gpos/utils.h:18,
from ../libgpos/src/common/CStackDescriptor.cpp:12:
../libgpos/src/common/CStackDescriptor.cpp: In member function โ€˜void gpos::CStackDescriptor::BackTrace(gpos::ULONG)โ€™:
../libgpos/include/gpos/assert.h:47:67: error: size of array โ€˜assert_arrayโ€™ is negative
#define GPOS_CPL_ASSERT(x) extern int assert_array[ (x) ? 1 : -1 ]
^
../libgpos/src/common/CStackDescriptor.cpp:167:2: note: in expansion of macro โ€˜GPOS_CPL_ASSERTโ€™
GPOS_CPL_ASSERT(!"Backtrace is not supported for this platform");
^~~~~~~~~~~~~~~
../libgpos/include/gpos/assert.h:47:40: warning: unused variable โ€˜gpos::assert_arrayโ€™ [-Wunused-variable]
#define GPOS_CPL_ASSERT(x) extern int assert_array[ (x) ? 1 : -1 ]
^
../libgpos/src/common/CStackDescriptor.cpp:167:2: note: in expansion of macro โ€˜GPOS_CPL_ASSERTโ€™
GPOS_CPL_ASSERT(!"Backtrace is not supported for this platform");

Orca nestloop join should not broadcast co-located tables

Repro:

create table R(a int, b int) distributed by(a);
create table S(a int, b int) distributed by(a);
create index s_idx_b on S(b);
set optimizer_enable_hashjoin=off;

explain select * from R, S where R.a=S.a;
                                         QUERY PLAN
---------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice2; segments: 3)  (cost=0.00..1324032.79 rows=1 width=16)
   ->  Nested Loop  (cost=0.00..1324032.79 rows=1 width=16)
         Join Filter: r.a = s.a
         ->  Broadcast Motion 3:3  (slice1; segments: 3)  (cost=0.00..431.00 rows=1 width=8)
               ->  Table Scan on r  (cost=0.00..431.00 rows=1 width=8)
         ->  Table Scan on s  (cost=0.00..431.00 rows=1 width=8)
 Settings:  optimizer=on
 Optimizer status: PQO version 2.53.9
(8 rows)

explain select * from R join S on R.a=S.a and R.b=S.b;
                                         QUERY PLAN
---------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice2; segments: 3)  (cost=0.00..437.00 rows=1 width=16)
   ->  Nested Loop  (cost=0.00..437.00 rows=1 width=16)
         Join Filter: true
         ->  Broadcast Motion 3:3  (slice1; segments: 3)  (cost=0.00..431.00 rows=1 width=8)
               ->  Table Scan on r  (cost=0.00..431.00 rows=1 width=8)
         ->  Index Scan using s_idx_b on s  (cost=0.00..6.00 rows=1 width=8)
               Index Cond: s.b = r.b
               Filter: r.a = s.a
 Settings:  optimizer=on
 Optimizer status: PQO version 2.53.9
(10 rows)

We should not broadcast table R in both queries, because R and S are co-located.

Orca generate bad plan that has duplicate Stream Aggregate nodes

The query is extracted from issue #354.

I don't see the necessity of having 2 aggregates in 1 slice.

create table sale(sales_id int, product_id int, quantity int);
create table product (product_id int primary key, description text);   => add PK constraint
insert into sale select i, i, i  from generate_series(1,1000)i;
insert into product select i, 'abc'|| i from generate_series(1,1000)i;

set optimizer_enumerate_plans=on;
set optimizer_plan_id=2;

EXPLAIN SELECT sum(s.product_id) FROM sale s, product p 
WHERE p.product_id = s.product_id GROUP BY s.product_id;
                                                                   QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------
 Hash Join  (cost=0.00..863.00 rows=334 width=8)
   Hash Cond: product.product_id = sale.product_id
   ->  Gather Motion 3:1  (slice1; segments: 3)  (cost=0.00..431.02 rows=1000 width=4)
         ->  Table Scan on product  (cost=0.00..431.01 rows=334 width=4)
   ->  Hash  (cost=431.40..431.40 rows=334 width=12)
         ->  Gather Motion 3:1  (slice3; segments: 3)  (cost=0.00..431.40 rows=1000 width=12)
               ->  Result  (cost=0.00..431.36 rows=334 width=12)
                     ->  GroupAggregate  (cost=0.00..431.36 rows=334 width=12)
                           Group Key: sale.product_id
                           ->  Sort  (cost=0.00..431.35 rows=334 width=12)
                                 Sort Key: sale.product_id
                                 ->  Result  (cost=0.00..431.16 rows=334 width=12)
                                       ->  Result  (cost=0.00..431.15 rows=1000 width=12)
                                             ->  GroupAggregate  (cost=0.00..431.15 rows=1000 width=12)
                                                   Group Key: sale.product_id
                                                   ->  Sort  (cost=0.00..431.15 rows=1000 width=4)
                                                         Sort Key: sale.product_id
                                                         ->  Broadcast Motion 3:3  (slice2; segments: 3)  (cost=0.00..431.08 rows=1000 width=4)
                                                               ->  Table Scan on sale  (cost=0.00..431.01 rows=334 width=4)
 Optimizer: PQO version 2.55.13
(20 rows)

ERROR: bogus varattno for OUTER var: 4 (ruleutils.c:3636)

On gpdb master with Orca on.
Repro:

create table foo(a int, b int);
create table bar(a int, b int);
create table pt(a int, b int) distributed by (a)
partition by range(b) (start(1) end(5) every(2));

explain select * from foo, pt where foo.a = pt.a and pt.b = (select max(b) from bar);
ERROR:  bogus varattno for OUTER var: 4 (ruleutils.c:3636)

If I insert some data into foo, run the query, got a different error message:

insert into foo select i, i from generate_series(1,100) i;
explain select * from foo, pt where foo.a = pt.a and pt.b = (select max(b) from bar);
ERROR:  bogus varno: 65000 (ruleutils.c:3720)

explain select * from foo, pt, bar where bar.a=pt.b and foo.a > pt.b;
ERROR:  bogus varno: 65000 (ruleutils.c:3720)

Enable Orca to generate bitmap table scan for b-tree index

Currently, Orca only generates bitmap table scan for bitmap index, even a AO table has a b-tree index on it, Orca translator will blindly translate it into bitmap index, leading bitmap table scan plan. But for AO tables with b-tree index, for queries like ORDER BY key LIMIT 10, it is still better to just use b-tree index scan, because b-tree index is already ordered, we don't need to fetch all the tuples and sort them (at least inside segment).

Orca generates subplan for uncorrelated subquery

Repro:

create table foo(a int, b int);
create table bar(a int, b int);

explain select * from foo where a >= (select avg(b) from bar);
                                            QUERY PLAN
--------------------------------------------------------------------------------------------------
 Result  (cost=0.00..1324033.45 rows=1 width=8)
   Filter: foo.a::numeric >= ((SubPlan 1))
   ->  Gather Motion 3:1  (slice1; segments: 3)  (cost=0.00..431.00 rows=1 width=8)
         ->  Table Scan on foo  (cost=0.00..431.00 rows=1 width=8)
   SubPlan 1
     ->  Aggregate  (cost=0.00..431.00 rows=1 width=8)
           ->  Materialize  (cost=0.00..431.00 rows=1 width=8)
                 ->  Gather Motion 3:1  (slice2; segments: 3)  (cost=0.00..431.00 rows=1 width=8)
                       ->  Aggregate  (cost=0.00..431.00 rows=1 width=8)
                             ->  Table Scan on bar  (cost=0.00..431.00 rows=34 width=4)
 Settings:  optimizer=on
 Optimizer status: PQO version 2.54.1
(12 rows)

Planner generates initplan, which is better:

explain select * from foo where a >= (select avg(b) from bar);
                                           QUERY PLAN
-------------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice2; segments: 3)  (cost=4.58..1396.09 rows=28700 width=8)
   ->  Seq Scan on foo  (cost=4.58..1396.09 rows=9567 width=8)
         Filter: a::numeric >= $0
         InitPlan 1 (returns $0)  (slice3)
           ->  Aggregate  (cost=4.57..4.58 rows=1 width=32)
                 ->  Gather Motion 3:1  (slice1; segments: 3)  (cost=4.50..4.55 rows=1 width=32)
                       ->  Aggregate  (cost=4.50..4.51 rows=1 width=32)
                             ->  Seq Scan on bar  (cost=0.00..4.00 rows=34 width=4)
 Settings:  optimizer=off
 Optimizer status: legacy query optimizer
(10 rows)

Orca should generates plan with either initplan or nestloop join.

Orca failed to decorrelate subquery

repro:

create table foo(a int, b int);
create table bar(a int, b int);
insert into foo select i,i from generate_series(1,1000) i;
insert into bar select i,i from generate_series(1,1000) i;

explain select * from foo where foo.b in (select foo.a+bar.b from bar );
                                                  QUERY PLAN
--------------------------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice2; segments: 3)  (cost=0.00..1370761.76 rows=2002 width=8)
   ->  Table Scan on foo  (cost=0.00..1370761.70 rows=668 width=8)
         Filter: (SubPlan 1)
         SubPlan 1
           ->  Result  (cost=0.00..431.09 rows=1000 width=4)
                 ->  Materialize  (cost=0.00..431.09 rows=1000 width=4)
                       ->  Broadcast Motion 3:3  (slice1; segments: 3)  (cost=0.00..431.08 rows=1000 width=4)
                             ->  Table Scan on bar  (cost=0.00..431.01 rows=334 width=4)
 Settings:  optimizer=on
 Optimizer status: PQO version 2.51.4
(10 rows)

But planner successfully decorrelates it.

explain select * from foo where foo.b in (select foo.a+bar.b from bar );
                                             QUERY PLAN
-----------------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice2; segments: 3)  (cost=56.00..150229.02 rows=2002 width=8)
   ->  Nested Loop Semi Join  (cost=56.00..150229.02 rows=668 width=8)
         Join Filter: (foo.a + bar.b) = foo.b
         ->  Seq Scan on foo  (cost=0.00..23.02 rows=668 width=8)
         ->  Materialize  (cost=56.00..86.00 rows=1000 width=4)
               ->  Broadcast Motion 3:3  (slice1; segments: 3)  (cost=0.00..53.00 rows=1000 width=4)
                     ->  Seq Scan on bar  (cost=0.00..13.00 rows=334 width=4)
 Settings:  optimizer=off
 Optimizer status: legacy query optimizer
(9 rows)

On debian install error : unrecognized comand line option '-Wno-tautological-undefined-compare'

I try compile gporca on debian stretch and after ninja install or make install /I tried both install commands from gpdb and gporca readme/ I got cc1plus error : : unrecognized comand line option '-Wno-tautological-undefined-compare' [-Werror]

feew lines befour this scope error is compile error:

/home/vric/gporca-master/libnaucrates/src/md/CMDIdGPDB.ccp:337:22: error nonull argument 'this' compared to NULL [-Werrorr-nonull-compare]

return NULL != this && !FEquals (&CMDIdGPDB::m_mdidInvalidKey);
^

So is no possible to compile gporca.

Please help and fix the error.

Orca generated inferior plan for query with cross product

Repro:

create table t1(a int, b int) distributed by (a);
create table t2(a int, b int) distributed by (a);
create table t3(a int, b int) distributed by (a);

insert into t1 select i,i from generate_series(1,1000) i;
insert into t2 select i,i from generate_series(1,1000) i;
insert into t3 select i,i from generate_series(800,2000) i;

explain select * from t1, t2,t3 where t1.a = t2.a;
                                              QUERY PLAN
------------------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice3; segments: 3)  (cost=0.00..1355716.85 rows=1201000 width=24)
   ->  Hash Join  (cost=0.00..1355609.43 rows=400334 width=24)
         Hash Cond: t1.a = t2.a
         ->  Nested Loop  (cost=0.00..1355070.89 rows=400334 width=16)
               Join Filter: true
               ->  Broadcast Motion 3:3  (slice1; segments: 3)  (cost=0.00..431.16 rows=1000 width=8)
                     ->  Table Scan on t1  (cost=0.00..431.01 rows=334 width=8)
               ->  Table Scan on t3  (cost=0.00..431.01 rows=401 width=8)
         ->  Hash  (cost=431.16..431.16 rows=1000 width=8)
               ->  Broadcast Motion 3:3  (slice2; segments: 3)  (cost=0.00..431.16 rows=1000 width=8)
                     ->  Table Scan on t2  (cost=0.00..431.01 rows=334 width=8)
 Settings:  optimizer=on
 Optimizer status: PQO version 2.50.1

But with planner we generate better plan:

explain select * from t1, t2,t3 where t1.a = t2.a;
                                          QUERY PLAN
-----------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice2; segments: 3)  (cost=54.50..72177.55 rows=1201000 width=24)
   ->  Nested Loop  (cost=54.50..72177.55 rows=400334 width=24)
         ->  Broadcast Motion 3:3  (slice1; segments: 3)  (cost=0.00..63.05 rows=1201 width=8)
               ->  Seq Scan on t3  (cost=0.00..15.01 rows=401 width=8)
         ->  Materialize  (cost=54.50..64.50 rows=334 width=16)
               ->  Hash Join  (cost=25.50..53.50 rows=334 width=16)
                     Hash Cond: t1.a = t2.a
                     ->  Seq Scan on t1  (cost=0.00..13.00 rows=334 width=8)
                     ->  Hash  (cost=13.00..13.00 rows=334 width=8)
                           ->  Seq Scan on t2  (cost=0.00..13.00 rows=334 width=8)
 Settings:  optimizer=off
 Optimizer status: legacy query optimizer
(12 rows)

Orca failed to generate plan for correlated scalar subquery

Repro:

create table foo(a int, b int);
create table bar(a int, b int);
explain select * from bar left join foo on foo.a = (
select foo.a from foo where foo.b = bar.b order by 1 limit 1);

Output:

+--CLogicalLeftOuterJoin
   |--CLogicalGet "bar" ("bar"), Columns: ["a" (0), "b" (1), "ctid" (2), "xmin" (3), "cmin" (4), "xmax" (5), "cmax" (6), "tableoid" (7), "gp_segment_id" (8)] Key sets: {[0], [2,8]}
   |--CLogicalGet "foo" ("foo"), Columns: ["a" (9), "b" (10), "ctid" (11), "xmin" (12), "cmin" (13), "xmax" (14), "cmax" (15), "tableoid" (16), "gp_segment_id" (17)] Key sets: {[0], [2,8]}
   +--CScalarCmp (=)
      |--CScalarIdent "a" (9)
      +--CScalarSubquery["a" (18)]
         +--CLogicalLimit ( (521,1.0), "a" (18), NULLsFirst )  global
            |--CLogicalSelect
            |  |--CLogicalGet "foo" ("foo"), Columns: ["a" (18), "b" (19), "ctid" (20), "xmin" (21), "cmin" (22), "xmax" (23), "cmax" (24), "tableoid" (25), "gp_segment_id" (26)] Key sets: {[0], [2,8]}
            |  +--CScalarCmp (=)
            |     |--CScalarIdent "b" (19)
            |     +--CScalarIdent "b" (1)
            |--CScalarConst (0)
            +--CScalarConst (1)
",
2018-01-05 09:53:15:401111 CST,THD000,ERROR,"No plan has been computed for required properties",
2018-01-05 09:53:15:406242 CST,THD000,ERROR,"No plan has been computed for required properties",
LOG:  Planner produced plan :1
                                                              QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice3; segments: 3)  (cost=1.01..2.59 rows=4 width=16)
   ->  Hash Left Join  (cost=1.01..2.59 rows=2 width=16)
         Hash Cond: ((SubPlan 1)) = public.foo.a
         ->  Redistribute Motion 3:3  (slice2; segments: 3)  (cost=0.00..1.02 rows=1 width=8)
               Hash Key: ((SubPlan 1))
               ->  Seq Scan on bar  (cost=0.00..1.00 rows=1 width=8)
                     SubPlan 1
                       ->  Limit  (cost=1.01..1.03 rows=1 width=4)
                             ->  Limit  (cost=1.01..1.01 rows=1 width=4)
                                   ->  Sort  (cost=1.01..1.01 rows=1 width=4)
                                         Sort Key: public.foo.a
                                         ->  Result  (cost=1.00..1.01 rows=1 width=4)
                                               Filter: public.foo.b = $0
                                               ->  Materialize  (cost=1.00..1.01 rows=1 width=4)
                                                     ->  Broadcast Motion 3:3  (slice1; segments: 3)  (cost=0.00..1.00 rows=1 width=4)
                                                           ->  Seq Scan on foo  (cost=0.00..1.00 rows=1 width=4)
         ->  Hash  (cost=1.00..1.00 rows=1 width=8)
               ->  Seq Scan on foo  (cost=0.00..1.00 rows=1 width=8)
 Settings:  optimizer=on
 Optimizer status: legacy query optimizer
(20 rows)

BTW, why would the error message be output twice?

ORCA falls back to planner when an inverse operator is missing

This is an issue we ran into while working on issue greenplum-db/gpdb#6633. When we process a quantified ALL subquery, ORCA tries to look up the inverse operator of the one used in the subquery, and in the example below that lookup fails. This causes an exception. We could probably try using NOT (a op b) as the inverse operator.

create domain nulltext as text;
create or replace function texteq (nulltext, nulltext) returns bool as $$ select $1 || $2 IS NOT DISTINCT FROM ''; $$ language sql immutable;
create operator = (PROCEDURE = texteq, leftarg=nulltext, rightarg=nulltext);
create table t1t (
    c1 text
);
create table t1nt (
    c1n text
);
insert into t1t values ('a'), ('b');
insert into t1nt values ('a'), (null);

explain select c1 from t1t where c1::nulltext not in (select c1n::nulltext from t1nt);
-- falls back to planner, we run into an exception trying to find the inverse operator of texteq operator =

See method CSubqueryHandler::FRemoveAllSubquery(), this is where we could handle a failure of the lookup.

GPOS clobbers standard integer macros INT_MIN, INT_MAX, ULONG_MAX, ULLONG_MAX, etc

Issue

The C programming language standard 1 and POSIX standard (SUS v1 onward, 1995) 2 3 defines the standard header <limits.h> (or <climits> for C++) where various standard integral type limits are defined.

GPOS, however, deliberately clobbers at least 4 of those standard integral limit macros (using #undef). This causes several problems:

  1. While working on issue #356 the pair discovered that including Xerces C++ headers after GPOS headers would lead to a compilation failure:

    /usr/local/include/xercesc/validators/common/Grammar.hpp:68: error: 'INT' was not declared in this scope
    /usr/local/include/xercesc/validators/common/Grammar.hpp:68: error: 'ULONG' was not declared in this scope
    /usr/local/include/xercesc/validators/common/Grammar.hpp:68: error: a function call cannot appear in a constant-expression
    /usr/local/include/xercesc/validators/common/Grammar.hpp:69: error: 'INT' was not declared in this scope
    /usr/local/include/xercesc/validators/common/Grammar.hpp:69: error: 'ULONG' was not declared in this scope
    /usr/local/include/xercesc/validators/common/Grammar.hpp:69: error: a function call cannot appear in a constant-expression
    
  2. The worse thing that can happen than a compilation failure is a successful compilation: we only get surprised at runtime. Libraries we use (e.g. Xerces C++) may use these standard macros in their headers. The libraries we link to will be compiled with the actual standard values of those macros. By overriding INT_MAX and ULONG_MAX, for example, ORCA may assume one "orca value" of UINT_MAX (which in many implementations is defined in terms in INT_MAX) from Xerces, but will link to Xerces library code that uses a different value of UINT_MAX.

  3. Longer feedback loop: this sort of falls into the bucket of "bad practice", which means that you don't necessarily get a failure on the platform and toolchain that you develop (say, Clang on Darwin), but will fail when you run a "more serious" test (say GCC on Linux).

  4. This also impedes the best-practice that header files are conventionally re-orderable (with judicious exceptions)

Question for the team

  1. Is this problem worth solving?
  2. We have two ways to solve this problem:
    1. Either we rename all the integral macros to avoid the name collision with C and POSIX standards;
    2. Or better: we replace the use of macros with enums.
  3. Will a pull request be welcome?

References:

Footnotes

  1. International Standard ISO/IEC 9899:1999, ยง5.2.4.2.1 "Sizes of integer types <limits.h>" pp. 21-22, http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf โ†ฉ

  2. The Single UNIX ยฎ Specification, Version 2 http://pubs.opengroup.org/onlinepubs/7908799/xsh/limits.h.html โ†ฉ

  3. The Open Group Base Specifications Issue 6 http://pubs.opengroup.org/onlinepubs/009695399/basedefs/limits.h.html โ†ฉ

CXformSimplifySelectWithSubquery generates 3 identical alternatives

Orca version: 2.50.4

Repro:

CREATE TABLE bitmap_test as SELECT * FROM generate_series(1,100) as a distributed randomly;
CREATE INDEX bitmap_index ON bitmap_test USING BITMAP(a);
EXPLAIN SELECT * FROM bitmap_test WHERE a in (select 1);
2017-12-01 14:42:38:933351 CST,THD000,TRACE,"Xform: CXformSimplifySelectWithSubquery
Input:
+--CLogicalSelect   origin: [Grp:9, GrpExpr:0]
   |--CLogicalGet "bitmap_test" ("bitmap_test"), Columns: ["a" (0), "ctid" (1), "xmin" (2), "cmin" (3), "xmax" (4), "cmax" (5), "tableoid" (6), "gp_segment_id" (7)] Key sets: {[1,7]}   origin: [Grp:0, GrpExpr:0]
   +--CScalarCmp (=)   origin: [Grp:8, GrpExpr:0]
      |--CScalarIdent "a" (0)   origin: [Grp:1, GrpExpr:0]
      +--CScalarSubquery["?column?" (9)] generated by Quantified SQ   origin: [Grp:7, GrpExpr:0]
         +--CLogicalProject   origin: [Grp:6, GrpExpr:0]
            |--CLogicalConstTableGet Columns: ["" (8)] Values: [(1)]   origin: [Grp:2, GrpExpr:0]
            +--CScalarProjectList   origin: [Grp:5, GrpExpr:0]
               +--CScalarProjectElement "?column?" (9)   origin: [Grp:4, GrpExpr:0]
                  +--CScalarConst (1)   origin: [Grp:3, GrpExpr:0]
Output:
Alternatives:
0:
+--CLogicalSelect
   |--CLogicalGet "bitmap_test" ("bitmap_test"), Columns: ["a" (0), "ctid" (1), "xmin" (2), "cmin" (3), "xmax" (4), "cmax" (5), "tableoid" (6), "gp_segment_id" (7)] Key sets: {[1,7]}   origin: [Grp:0, GrpExpr:0]
   +--CScalarCmp (=)
      |--CScalarIdent "a" (0)   origin: [Grp:1, GrpExpr:0]
      +--CScalarSubquery["?column?" (9)] generated by Quantified SQ
         +--CLogicalProject
            |--CLogicalConstTableGet Columns: ["" (8)] Values: [(1)]   origin: [Grp:2, GrpExpr:0]
            +--CScalarProjectList
               +--CScalarProjectElement "?column?" (9)
                  +--CScalarConst (1)   origin: [Grp:3, GrpExpr:0]
1:
+--CLogicalSelect
   |--CLogicalGet "bitmap_test" ("bitmap_test"), Columns: ["a" (0), "ctid" (1), "xmin" (2), "cmin" (3), "xmax" (4), "cmax" (5), "tableoid" (6), "gp_segment_id" (7)] Key sets: {[1,7]}   origin: [Grp:0, GrpExpr:0]
   +--CScalarCmp (=)
      |--CScalarIdent "a" (0)   origin: [Grp:1, GrpExpr:0]
      +--CScalarSubquery["?column?" (9)] generated by Quantified SQ
         +--CLogicalProject
            |--CLogicalConstTableGet Columns: ["" (8)] Values: [(1)]   origin: [Grp:2, GrpExpr:0]
            +--CScalarProjectList
               +--CScalarProjectElement "?column?" (9)
                  +--CScalarConst (1)   origin: [Grp:3, GrpExpr:0]
2:
+--CLogicalSelect
   |--CLogicalGet "bitmap_test" ("bitmap_test"), Columns: ["a" (0), "ctid" (1), "xmin" (2), "cmin" (3), "xmax" (4), "cmax" (5), "tableoid" (6), "gp_segment_id" (7)] Key sets: {[1,7]}   origin: [Grp:0, GrpExpr:0]
   +--CScalarCmp (=)
      |--CScalarIdent "a" (0)   origin: [Grp:1, GrpExpr:0]
      +--CScalarSubquery["?column?" (9)] generated by Quantified SQ
         +--CLogicalProject
            |--CLogicalConstTableGet Columns: ["" (8)] Values: [(1)]   origin: [Grp:2, GrpExpr:0]
            +--CScalarProjectList
               +--CScalarProjectElement "?column?" (9)
                  +--CScalarConst (1)   origin: [Grp:3, GrpExpr:0]

If they are the same, it should store only 1 alternative, instead of 3.

Nestloop join should materialize inner as much as possible

For query shown below or similar, NL Join doesn't materialize inner child:

create table foo(a int, b int);
create table bar(a int, b int);
create table pt (a int, b int) distributed by (a) partition by range(b) (start(1) end(5) every(2));
insert into pt select i, i%4+1 from generate_series(1,1000) i;
set optimizer_enable_hashjoin=off;
set optimizer_join_order=query;

explain select * from foo, (select * from bar, pt where bar.b = pt.b) a;
                                                        QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice3; segments: 3)  (cost=0.00..1603006467.42 rows=1000 width=24)
   ->  Nested Loop  (cost=0.00..1603006467.33 rows=334 width=24)
         Join Filter: true
         ->  Broadcast Motion 3:3  (slice2; segments: 3)  (cost=0.00..431.00 rows=1 width=8)
               ->  Table Scan on foo  (cost=0.00..431.00 rows=1 width=8)
         ->  Nested Loop  (cost=0.00..1564573.96 rows=334 width=16)
               Join Filter: bar.b = pt.b
               ->  Table Scan on bar  (cost=0.00..431.07 rows=3334 width=8)
               ->  Materialize  (cost=0.00..431.17 rows=1000 width=8)
                     ->  Broadcast Motion 3:3  (slice1; segments: 3)  (cost=0.00..431.16 rows=1000 width=8)
                           ->  Sequence  (cost=0.00..431.01 rows=334 width=8)
                                 ->  Partition Selector for pt (dynamic scan id: 1)  (cost=10.00..100.00 rows=34 width=4)
                                       Partitions selected: 2 (out of 2)
                                 ->  Dynamic Table Scan on pt (dynamic scan id: 1)  (cost=0.00..431.01 rows=334 width=8)
 Settings:  optimizer=on; optimizer_join_order=query
 Optimizer status: PQO version 2.54.0
(16 rows)

There should be a materialize node on top of inner Nested Loop node. Or even better decide whether to put a materialize node based on the cost, but it is a different issue, let's not consider this for the issue.

Orca choosing a hashjoin when subtype lacks a hash function errors out

For this query added as part of a test added in 9.4_STABLE,

create type cashrange as range (subtype = money);
select '(2,5)'::cashrange except select '(5,6)'::cashrange;

because money doesn't have a hash function, a hashjoin plan should not be used, however orca picks this plan

postgres=# explain select '(2,5)'::cashrange except select '(5,6)'::cashrange;
                                             QUERY PLAN
-----------------------------------------------------------------------------------------------------
 GroupAggregate  (cost=0.00..0.00 rows=1 width=8)
   Group Key: cashrange
   ->  GroupAggregate  (cost=0.00..0.00 rows=1 width=8)
         Group Key: cashrange
         ->  Sort  (cost=0.00..0.00 rows=1 width=8)
               Sort Key: cashrange
               ->  Hash Anti Join  (cost=0.00..0.00 rows=1 width=8)
                     Hash Cond: (NOT ((cashrange)::anyrange IS DISTINCT FROM (cashrange)::anyrange))
                     ->  Result  (cost=0.00..0.00 rows=1 width=8)
                           ->  Result  (cost=0.00..0.00 rows=1 width=1)
                     ->  Hash  (cost=0.00..0.00 rows=1 width=8)
                           ->  Result  (cost=0.00..0.00 rows=1 width=8)
                                 ->  Result  (cost=0.00..0.00 rows=1 width=1)
 Optimizer: PQO version 3.18.0
(14 rows)

And it produces this error upon attempted execution

ERROR:  could not identify a hash function for type money

However, if I disable hashjoin, Orca picks a plan

postgres=# set optimizer_enable_hashjoin to off;
SET
postgres=# explain select '(2,5)'::cashrange except select '(5,6)'::cashrange;
                                           QUERY PLAN
-------------------------------------------------------------------------------------------------
 GroupAggregate  (cost=0.00..441344.32 rows=1 width=8)
   Group Key: cashrange
   ->  GroupAggregate  (cost=0.00..441344.32 rows=1 width=8)
         Group Key: cashrange
         ->  Nested Loop Anti Join  (cost=0.00..441344.32 rows=1 width=8)
               Join Filter: (NOT ((cashrange)::anyrange IS DISTINCT FROM (cashrange)::anyrange))
               ->  Sort  (cost=0.00..0.00 rows=1 width=8)
                     Sort Key: cashrange
                     ->  Result  (cost=0.00..0.00 rows=1 width=8)
                           ->  Result  (cost=0.00..0.00 rows=1 width=1)
               ->  Result  (cost=0.00..0.00 rows=1 width=8)
                     ->  Result  (cost=0.00..0.00 rows=1 width=1)
 Optimizer: PQO version 3.18.0
(13 rows)

which executes successfully

postgres=# select '(2,5)'::cashrange except select '(5,6)'::cashrange;
   cashrange
---------------
 ($2.00,$5.00)
(1 row)

Orca falls back to planner due to cache lookup failure

Repro:

create table foo(a varchar, b oid);
explain select * from foo t1, foo t2 where t1.a::int = t2.b::int;

Output messages:

LOG:  2018-01-16 21:03:23:574312 CST,THD000,ERROR,"Lookup of object 3.26.1.0;23.1.0 in cache failed",
2018-01-16 21:03:23:574598 CST,THD000,ERROR,"Lookup of object 3.26.1.0;23.1.0 in cache failed",
LOG:  Planner produced plan :1
                                               QUERY PLAN
---------------------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice2; segments: 3)  (cost=4440.00..2797441.60 rows=2460160 width=72)
   ->  Hash Join  (cost=4440.00..2797441.60 rows=820054 width=72)
         Hash Cond: t1.a::integer = t2.b::integer
         ->  Seq Scan on foo t1  (cost=0.00..596.00 rows=16534 width=36)
         ->  Hash  (cost=2580.00..2580.00 rows=49600 width=36)
               ->  Broadcast Motion 3:3  (slice1; segments: 3)  (cost=0.00..2580.00 rows=49600 width=36)
                     ->  Seq Scan on foo t2  (cost=0.00..596.00 rows=16534 width=36)
 Settings:  optimizer=on
 Optimizer status: legacy query optimizer
(9 rows)

Update Readme to tell me what gporca does and how its "modular"

I'm interested in modular optimizations and came across this. But I'm not familiar with Orca, and this readme doesn't seem to explain to me what the motivation behind gporca is or how it works. It seems like the readme focuses on how to contribute to it, but I want to know how to use it. Can someone please update the readme to be clearer about what gporca is and how its used (example use cases)?

Is this a system where users of gporca can write individual query optimizers and chain them to create an optimization suite that optimizes their queries?

cmake gporca error

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/digoal/gporca_work
-D XERCES_INCLUDE_DIR=/home/digoal/gp_xerces/include -D XERCES_LIBRARY=/home/digoal/gp_xerces/lib/libxerces-c.so
-D GPOS_INCLUDE_DIR=/home/digoal/gpos_work/include/gpos -D GPOS_LIBRARY=/home/digoal/gpos_work/lib/libgpos.so.1.135
../

CMake Warning at cmake/FindGPOS.cmake:20 (message):
Unable to detect GPOS version.
Call Stack (most recent call first):
CMakeLists.txt:128 (find_package)

CMake Error at /home/digoal/cmake/share/cmake-3.4/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
Could NOT find GPOS: Found unsuitable version "0.0", but required is at
least "1.135" (found /home/digoal/gpos_work/lib/libgpos.so)
Call Stack (most recent call first):
/home/digoal/cmake/share/cmake-3.4/Modules/FindPackageHandleStandardArgs.cmake:386 (_FPHSA_FAILURE_MESSAGE)
cmake/FindGPOS.cmake:26 (find_package_handle_standard_args)
CMakeLists.txt:128 (find_package)

Orca should eliminate redundant distinct

Repro:

create table bar(c int);
create table t1(a int);
explain select * from bar where c in (select distinct a from t1);
                                     QUERY PLAN
------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice1; segments: 3)  (cost=0.00..862.01 rows=1 width=8)
   ->  Hash EXISTS Join  (cost=0.00..862.01 rows=1 width=8)
         Hash Cond: bar.c = t1.a
         ->  Table Scan on bar  (cost=0.00..431.00 rows=34 width=8)
         ->  Hash  (cost=431.00..431.00 rows=1 width=4)
               ->  GroupAggregate  (cost=0.00..431.00 rows=1 width=4)
                     Group By: t1.a
                     ->  Sort  (cost=0.00..431.00 rows=1 width=4)
                           Sort Key: t1.a
                           ->  Table Scan on t1  (cost=0.00..431.00 rows=1 width=4)
 Settings:  gp_cte_sharing=on; gp_enable_multiphase_agg=off; optimizer=on
 Optimizer status: PQO version 2.32.0
(12 rows)

But GPDB planner successfully eliminate the distinct:

set optimizer=off;
explain select * from bar where c in (select distinct a from t1);
                                 QUERY PLAN
----------------------------------------------------------------------------
 Gather Motion 3:1  (slice1; segments: 3)  (cost=1.01..5.33 rows=7 width=8)
   ->  Hash EXISTS Join  (cost=1.01..5.33 rows=3 width=8)
         Hash Cond: bar.c = t1.a
         ->  Seq Scan on bar  (cost=0.00..4.00 rows=34 width=8)
         ->  Hash  (cost=1.00..1.00 rows=1 width=4)
               ->  Seq Scan on t1  (cost=0.00..1.00 rows=1 width=4)
 Settings:  gp_cte_sharing=on; gp_enable_multiphase_agg=off; optimizer=off
 Optimizer status: legacy query optimizer
(8 rows)

Orca generated redundant motion for hash distributed table

Repro:

create table foo(a int, b int) distributed by (a);
create table bar(c int, d int) distributed by (c);

explain select * from foo where a in (select count(c) from bar);
                                              QUERY PLAN
------------------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice4; segments: 3)  (cost=0.00..862.00 rows=1 width=8)
   ->  Hash Join  (cost=0.00..862.00 rows=1 width=8)
         Hash Cond: (count((count(bar.c)))) = foo.a::bigint
         ->  Redistribute Motion 1:3  (slice2)  (cost=0.00..431.00 rows=1 width=8)
               Hash Key: (count((count(bar.c))))
               ->  Aggregate  (cost=0.00..431.00 rows=1 width=8)
                     ->  Gather Motion 3:1  (slice1; segments: 3)  (cost=0.00..431.00 rows=1 width=8)
                           ->  Aggregate  (cost=0.00..431.00 rows=1 width=8)
                                 ->  Table Scan on bar  (cost=0.00..431.00 rows=1 width=4)
         ->  Hash  (cost=431.00..431.00 rows=1 width=8)
               ->  Redistribute Motion 3:3  (slice3; segments: 3)  (cost=0.00..431.00 rows=1 width=8)
                     Hash Key: foo.a::bigint
                     ->  Table Scan on foo  (cost=0.00..431.00 rows=1 width=8)
 Settings:  optimizer=on
 Optimizer status: PQO version 2.51.0
(15 rows)

But with planner, foo doesn't have motion:

                                                QUERY PLAN
----------------------------------------------------------------------------------------------------------
 Gather Motion 3:1  (slice3; segments: 3)  (cost=1.14..2.19 rows=4 width=8)
   ->  Hash Semi Join  (cost=1.14..2.19 rows=2 width=8)
         Hash Cond: foo.a = (count((count(bar.c))))
         ->  Seq Scan on foo  (cost=0.00..1.01 rows=1 width=8)
         ->  Hash  (cost=1.13..1.13 rows=1 width=8)
               ->  Redistribute Motion 1:3  (slice2; segments: 1)  (cost=1.09..1.13 rows=1 width=8)
                     Hash Key: (count((count(bar.c))))
                     ->  Aggregate  (cost=1.09..1.10 rows=1 width=8)
                           ->  Gather Motion 3:1  (slice1; segments: 3)  (cost=1.02..1.07 rows=1 width=8)
                                 ->  Aggregate  (cost=1.02..1.03 rows=1 width=8)
                                       ->  Seq Scan on bar  (cost=0.00..1.01 rows=1 width=4)
 Settings:  optimizer=off
 Optimizer status: legacy query optimizer
(13 rows)

My GPDB reset from time to time by upgrade to orca 2.53.2

Hi,

I upgraded my orca to 99171f6 (2.53.2) and compiled, installed. Then gpdb master always crash with following backtrace.

  • The cluster was ok when I was on 2.51.2
  • I saw gpdb_master pipeline is all green, I'm not sure if it is my own environment problem.
  • By set optimizer=off, the cluster no more crashes.
3491 2017-12-29 15:09:17.581657 CST,"gpmon","gpperfmon",p28141,th-1673189312,"[local]",,2017-12-29 15:09:17 CST,0,con237,cmd1,seg-1,,dx26,,sx1,"LOG","00000","statement: SELECT distinct hostname, address, case when content < 0 then 1 else 0 end as is_master, MAX(fselocation) as datadir FROM pg_filespace_entr     y JOIN gp_segment_configuration on (dbid = fsedbid) WHERE fsefsoid = (select oid from pg_filespace where fsname='pg_system') GROUP BY (hostname, address, is_master) order by hostname",,,,,,"SELECT distinct hostname, address, case when content < 0 then 1 else 0 end as is_master, MAX(fselocation) as data     dir FROM pg_filespace_entry JOIN gp_segment_configuration on (dbid = fsedbid) WHERE fsefsoid = (select oid from pg_filespace where fsname='pg_system') GROUP BY (hostname, address, is_master) order by hostname",0,,"postgres.c",1612,
3492 2017-12-29 15:09:17.634766 CST,,,p28141,th0,,,2017-12-29 15:09:17 CST,0,con237,cmd1,seg-1,,,,,"PANIC","XX000","Unexpected internal error: Master process received signal SIGSEGV",,,,,,,0,,,,"1    0xa8e46f postgres StandardHandlerForSigillSigsegvSigbus_OnMainThread (elog.c:4608)
3493 2    0x952fea postgres <symbol not found> (postgres.c:3589)
3494 3    0x7f1899237130 libpthread.so.0 <symbol not found> + 0x99237130
3495 4    0x80803f postgres <symbol not found> (discriminator 1)
3496 5    0x8117f8 postgres copyObject (copyfuncs.c:5574)
3497 6    0x80ffeb postgres <symbol not found> (copyfuncs.c:4668)
3498 7    0x810a6f postgres copyObject (copyfuncs.c:5072)
3499 8    0x809c13 postgres <symbol not found> (copyfuncs.c:2866)
3500 9    0x810a99 postgres copyObject (copyfuncs.c:5088)
3501 10   0xc4da69 postgres _ZN4gpdb12PvCopyObjectEPv (gpdbwrappers.cpp:442)
3502 11   0xc03d1a postgres _ZN5gpdxl14CQueryMutators24PqueryNormalizeWindowPrLEPN4gpos11IMemoryPoolEPN5gpopt11CMDAccessorEPK5Query (CQueryMutators.cpp:1621)
3503 12   0xc032f7 postgres _ZN5gpdxl14CQueryMutators15PqueryNormalizeEPN4gpos11IMemoryPoolEPN5gpopt11CMDAccessorEPK5Queryj (CQueryMutators.cpp:1321)
3504 13   0xc23310 postgres _ZN5gpdxl21CTranslatorQueryToDXLC2EPN4gpos11IMemoryPoolEPN5gpopt11CMDAccessorEPNS_12CIdGeneratorES8_PNS_16CMappingVarColIdEP5QueryjbPNS1_8CHashMapIjNS_13CCTEListEntryEXadL_ZNS1_6UlHashIjEEjPKT_EEXadL_ZNS1_6FEqualIjEEbSI_SI_EEXadL_ZNS1_13CleanupDeleteIjEEvPSG_EEXadL_ZNS1_14Cleanup     ReleaseISE_EEvSL_EEEE (CTranslatorQueryToDXL.cpp:208)
3505 14   0xc2351c postgres _ZN5gpdxl21CTranslatorQueryToDXL21PtrquerytodxlInstanceEPN4gpos11IMemoryPoolEPN5gpopt11CMDAccessorEPNS_12CIdGeneratorES8_PNS_16CMappingVarColIdEP5QueryjPNS1_8CHashMapIjNS_13CCTEListEntryEXadL_ZNS1_6UlHashIjEEjPKT_EEXadL_ZNS1_6FEqualIjEEbSI_SI_EEXadL_ZNS1_13CleanupDeleteIjEEvPSG_E     EXadL_ZNS1_14CleanupReleaseISE_EEvSL_EEEE (discriminator 1)
3506 15   0xc4600b postgres _ZN9COptTasks14PvOptimizeTaskEPv (COptTasks.cpp:1017)
3507 16   0x7f189aff50e0 libgpos.so.3 _ZN4gpos5CTask7ExecuteEv + 0x40
3508 17   0x7f189aff7438 libgpos.so.3 _ZN4gpos7CWorker7ExecuteEPNS_5CTaskE + 0x18
3509 18   0x7f189aff440d libgpos.so.3 _ZN4gpos14CAutoTaskProxy7ExecuteEPNS_5CTaskE + 0x4d
3510 19   0x7f189afe5f91 libgpos.so.3 gpos_exec + 0x251
3511 20   0xc449dd postgres _ZN9COptTasks7ExecuteEPFPvS0_ES0_ (COptTasks.cpp:529)
3512 21   0xc481d2 postgres _ZN9COptTasks15PplstmtOptimizeEP5QueryP11SOptContextPb (COptTasks.cpp:1673)
3513 22   0xc4bd63 postgres _ZN12CGPOptimizer15PplstmtOptimizeEP5QueryPb (CGPOptimizer.cpp:49)
3514 23   0xc4c1da postgres PplstmtOptimize (CGPOptimizer.cpp:178)
3515 24   0x8acdc5 postgres optimize_query (orca.c:135)
3516 25   0x8930f8 postgres standard_planner (planner.c:206)
3517 26   0x893048 postgres planner (planner.c:167)
3518 27   0x94e830 postgres pg_plan_query (postgres.c:912)
3519 28   0x94e8e3 postgres pg_plan_queries (postgres.c:971)
3520 29   0x950048 postgres <symbol not found> (postgres.c:1719)

checking Checking ORCA version... configure: error: Your ORCA version is expected to be 3.14.XXX

Dear ALL:
When I configure greenplum-db useing the command "./configure --with-perl --with-python --with-libxml --with-gssapi --prefix=/usr/local/gpdb", I got an error "Your ORCA version is expected to be 3.14.XXX" , but I think I have already installed the gporca v3.14. Are there something I omitted? Or how can I solve this problem. Thanks.

[root@spa-42-185-112 gporca-3.14.0]# rm -rf /usr/local/include/naucrates
[root@spa-42-185-112 gporca-3.14.0]# rm -rf /usr/local/include/gpdbcost
[root@spa-42-185-112 gporca-3.14.0]# rm -rf /usr/local/include/gpopt
[root@spa-42-185-112 gporca-3.14.0]# rm -rf /usr/local/include/gpos
[root@spa-42-185-112 gporca-3.14.0]# rm -rf /usr/local/lib/libnaucrates.so*
[root@spa-42-185-112 gporca-3.14.0]# rm -rf /usr/local/lib/libgpdbcost.so*
[root@spa-42-185-112 gporca-3.14.0]# rm -rf /usr/local/lib/libgpopt.so*
[root@spa-42-185-112 gporca-3.14.0]# rm -rf /usr/local/lib/libgpos.so*
[root@spa-42-185-112 gporca-3.14.0]# cmake -GNinja -H. -Bbuild
-- Build type: RelWithDebInfo
-- Configuring done
-- Generating done
-- Build files have been written to: /root/work/gporca-3.14.0/build
[root@spa-42-185-112 gporca-3.14.0]# ninja install -C build
ninja: Entering directory `build'
[0/1] Install the project...
-- Install configuration: "RelWithDebInfo"
-- Installing: /usr/local/lib/libgpos.so.3.14.0
-- Installing: /usr/local/lib/libgpos.so.3
-- Installing: /usr/local/lib/libgpos.so
-- Installing: /usr/local/include/gpos
-- Installing: /usr/local/include/gpos/error
-- Installing: /usr/local/include/gpos/error/CAutoLogger.h
-- Installing: /usr/local/include/gpos/error/CErrorHandlerStandard.h
-- Installing: /usr/local/include/gpos/error/CException.h
-- Installing: /usr/local/include/gpos/error/CErrorContext.h
-- Installing: /usr/local/include/gpos/error/CAutoExceptionStack.h
-- Installing: /usr/local/include/gpos/error/CMessageRepository.h
-- Installing: /usr/local/include/gpos/error/CLogger.h
-- Installing: /usr/local/include/gpos/error/CMessage.h
-- Installing: /usr/local/include/gpos/error/IErrorContext.h
-- Installing: /usr/local/include/gpos/error/CErrorHandler.h
-- Installing: /usr/local/include/gpos/error/ILogger.h
-- Installing: /usr/local/include/gpos/error/CMessageTable.h
-- Installing: /usr/local/include/gpos/error/CMiniDumper.h
-- Installing: /usr/local/include/gpos/error/CSerializable.h
-- Installing: /usr/local/include/gpos/error/CAutoTrace.h
-- Installing: /usr/local/include/gpos/error/CFSimulator.h
-- Installing: /usr/local/include/gpos/error/CLoggerSyslog.h
-- Installing: /usr/local/include/gpos/error/CLoggerStream.h
-- Installing: /usr/local/include/gpos/base.h
-- Installing: /usr/local/include/gpos/utils.h
-- Installing: /usr/local/include/gpos/types.h
-- Installing: /usr/local/include/gpos/io
-- Installing: /usr/local/include/gpos/io/IOstream.h
-- Installing: /usr/local/include/gpos/io/iotypes.h
-- Installing: /usr/local/include/gpos/io/COstreamFile.h
-- Installing: /usr/local/include/gpos/io/CFileDescriptor.h
-- Installing: /usr/local/include/gpos/io/CFileWriter.h
-- Installing: /usr/local/include/gpos/io/CFileReader.h
-- Installing: /usr/local/include/gpos/io/COstreamBasic.h
-- Installing: /usr/local/include/gpos/io/COstream.h
-- Installing: /usr/local/include/gpos/io/COstreamString.h
-- Installing: /usr/local/include/gpos/io/ioutils.h
-- Installing: /usr/local/include/gpos/test
-- Installing: /usr/local/include/gpos/test/CTimeSliceTest.h
-- Installing: /usr/local/include/gpos/test/CUnittest.h
-- Installing: /usr/local/include/gpos/test/CFSimulatorTestExt.h
-- Installing: /usr/local/include/gpos/sync
-- Installing: /usr/local/include/gpos/sync/CEvent.h
-- Installing: /usr/local/include/gpos/sync/CAutoMutex.h
-- Installing: /usr/local/include/gpos/sync/CAutoSpinlock.h
-- Installing: /usr/local/include/gpos/sync/CAtomicCounter.h
-- Installing: /usr/local/include/gpos/sync/CMutex.h
-- Installing: /usr/local/include/gpos/sync/CSpinlock.h
-- Installing: /usr/local/include/gpos/sync/atomic.h
-- Installing: /usr/local/include/gpos/string
-- Installing: /usr/local/include/gpos/string/CStringStatic.h
-- Installing: /usr/local/include/gpos/string/CWStringConst.h
-- Installing: /usr/local/include/gpos/string/CWString.h
-- Installing: /usr/local/include/gpos/string/CWStringStatic.h
-- Installing: /usr/local/include/gpos/string/CWStringDynamic.h
-- Installing: /usr/local/include/gpos/string/CWStringBase.h
-- Installing: /usr/local/include/gpos/memory
-- Installing: /usr/local/include/gpos/memory/IMemoryPool.h
-- Installing: /usr/local/include/gpos/memory/ICache.h
-- Installing: /usr/local/include/gpos/memory/CCache.h
-- Installing: /usr/local/include/gpos/memory/CMemoryVisitorPrint.h
-- Installing: /usr/local/include/gpos/memory/CMemoryPoolManager.h
-- Installing: /usr/local/include/gpos/memory/CMemoryPoolStatistics.h
-- Installing: /usr/local/include/gpos/memory/CMemoryPoolStack.h
-- Installing: /usr/local/include/gpos/memory/README.md
-- Installing: /usr/local/include/gpos/memory/CCacheFactory.h
-- Installing: /usr/local/include/gpos/memory/IMemoryVisitor.h
-- Installing: /usr/local/include/gpos/memory/CAutoMemoryPool.h
-- Installing: /usr/local/include/gpos/memory/CMemoryPoolInjectFault.h
-- Installing: /usr/local/include/gpos/memory/CMemoryPool.h
-- Installing: /usr/local/include/gpos/memory/CMemoryPoolAlloc.h
-- Installing: /usr/local/include/gpos/memory/CMemoryPoolTracker.h
-- Installing: /usr/local/include/gpos/memory/CCacheAccessor.h
-- Installing: /usr/local/include/gpos/memory/CCacheEntry.h
-- Installing: /usr/local/include/gpos/assert.h
-- Installing: /usr/local/include/gpos/task
-- Installing: /usr/local/include/gpos/task/CTraceFlagIter.h
-- Installing: /usr/local/include/gpos/task/CTask.h
-- Installing: /usr/local/include/gpos/task/CThreadManager.h
-- Installing: /usr/local/include/gpos/task/CAutoSuspendAbort.h
-- Installing: /usr/local/include/gpos/task/traceflags.h
-- Installing: /usr/local/include/gpos/task/CTaskSchedulerFifo.h
-- Installing: /usr/local/include/gpos/task/ITaskScheduler.h
-- Installing: /usr/local/include/gpos/task/CTaskId.h
-- Installing: /usr/local/include/gpos/task/IWorker.h
-- Installing: /usr/local/include/gpos/task/CTaskContext.h
-- Installing: /usr/local/include/gpos/task/CWorkerId.h
-- Installing: /usr/local/include/gpos/task/CTaskLocalStorageObject.h
-- Installing: /usr/local/include/gpos/task/CWorkerPoolManager.h
-- Installing: /usr/local/include/gpos/task/CAutoTaskProxy.h
-- Installing: /usr/local/include/gpos/task/CTaskLocalStorage.h
-- Installing: /usr/local/include/gpos/task/CAutoTraceFlag.h
-- Installing: /usr/local/include/gpos/task/ITask.h
-- Installing: /usr/local/include/gpos/task/CWorker.h
-- Installing: /usr/local/include/gpos/_api.h
-- Installing: /usr/local/include/gpos/common
-- Installing: /usr/local/include/gpos/common/CRandom.h
-- Installing: /usr/local/include/gpos/common/CBitSetIter.h
-- Installing: /usr/local/include/gpos/common/CAutoRg.h
-- Installing: /usr/local/include/gpos/common/CSyncHashtableIter.h
-- Installing: /usr/local/include/gpos/common/CSyncHashtableAccessByKey.h
-- Installing: /usr/local/include/gpos/common/CWallClock.h
-- Installing: /usr/local/include/gpos/common/CSyncPool.h
-- Installing: /usr/local/include/gpos/common/CDouble.h
-- Installing: /usr/local/include/gpos/common/CDynamicPtrArray.h
-- Installing: /usr/local/include/gpos/common/CBitVector.h
-- Installing: /usr/local/include/gpos/common/CSyncHashtable.h
-- Installing: /usr/local/include/gpos/common/pthreadwrapper.h
-- Installing: /usr/local/include/gpos/common/CStackDescriptor.h
-- Installing: /usr/local/include/gpos/common/pthreadtypes.h
-- Installing: /usr/local/include/gpos/common/CHashMap.h
-- Installing: /usr/local/include/gpos/common/CAutoP.h
-- Installing: /usr/local/include/gpos/common/CHashSetIter.h
-- Installing: /usr/local/include/gpos/common/CList.h
-- Installing: /usr/local/include/gpos/common/CSyncList.h
-- Installing: /usr/local/include/gpos/common/CHeapObject.h
-- Installing: /usr/local/include/gpos/common/CMainArgs.h
-- Installing: /usr/local/include/gpos/common/CStackObject.h
-- Installing: /usr/local/include/gpos/common/CBitSet.h
-- Installing: /usr/local/include/gpos/common/clibwrapper.h
-- Installing: /usr/local/include/gpos/common/clibtypes.h
-- Installing: /usr/local/include/gpos/common/CTimerUser.h
-- Installing: /usr/local/include/gpos/common/ITimer.h
-- Installing: /usr/local/include/gpos/common/syslibwrapper.h
-- Installing: /usr/local/include/gpos/common/CSyncHashtableAccessorBase.h
-- Installing: /usr/local/include/gpos/common/CPrintablePointer.h
-- Installing: /usr/local/include/gpos/common/CEnumSetIter.h
-- Installing: /usr/local/include/gpos/common/CSyncHashtableAccessByIter.h
-- Installing: /usr/local/include/gpos/common/CStack.h
-- Installing: /usr/local/include/gpos/common/CAutoTimer.h
-- Installing: /usr/local/include/gpos/common/CRefCount.h
-- Installing: /usr/local/include/gpos/common/CEnumSet.h
-- Installing: /usr/local/include/gpos/common/CAutoRef.h
-- Installing: /usr/local/include/gpos/common/CHashMapIter.h
-- Installing: /usr/local/include/gpos/common/CHashSet.h
-- Installing: /usr/local/include/gpos/config.h
-- Installing: /usr/local/lib/libnaucrates.so.3.14.0
-- Installing: /usr/local/lib/libnaucrates.so.3
-- Set runtime path of "/usr/local/lib/libnaucrates.so.3.14.0" to ""
-- Installing: /usr/local/lib/libnaucrates.so
-- Installing: /usr/local/include/naucrates
-- Installing: /usr/local/include/naucrates/statistics
-- Installing: /usr/local/include/naucrates/statistics/CStatsPredUtils.h
-- Installing: /usr/local/include/naucrates/statistics/CHistogram.h
-- Installing: /usr/local/include/naucrates/statistics/CPoint.h
-- Installing: /usr/local/include/naucrates/statistics/IBucket.h
-- Installing: /usr/local/include/naucrates/statistics/CBucket.h
-- Installing: /usr/local/include/naucrates/statistics/CProjectStatsProcessor.h
-- Installing: /usr/local/include/naucrates/statistics/CLimitStatsProcessor.h
-- Installing: /usr/local/include/naucrates/statistics/CScaleFactorUtils.h
-- Installing: /usr/local/include/naucrates/statistics/CStatsPredPoint.h
-- Installing: /usr/local/include/naucrates/statistics/CStatsPredJoin.h
-- Installing: /usr/local/include/naucrates/statistics/CStatsPredDisj.h
-- Installing: /usr/local/include/naucrates/statistics/CStatsPredConj.h
-- Installing: /usr/local/include/naucrates/statistics/CStatsPredLike.h
-- Installing: /usr/local/include/naucrates/statistics/CStatsPred.h
-- Installing: /usr/local/include/naucrates/statistics/CStatisticsUtils.h
-- Installing: /usr/local/include/naucrates/statistics/IStatistics.h
-- Installing: /usr/local/include/naucrates/statistics/CStatsPredUnsupported.h
-- Installing: /usr/local/include/naucrates/statistics/CLeftAntiSemiJoinStatsProcessor.h
-- Installing: /usr/local/include/naucrates/statistics/CFilterStatsProcessor.h
-- Installing: /usr/local/include/naucrates/statistics/CLeftSemiJoinStatsProcessor.h
-- Installing: /usr/local/include/naucrates/statistics/CLeftOuterJoinStatsProcessor.h
-- Installing: /usr/local/include/naucrates/statistics/CUpperBoundNDVs.h
-- Installing: /usr/local/include/naucrates/statistics/CStatistics.h
-- Installing: /usr/local/include/naucrates/statistics/CInnerJoinStatsProcessor.h
-- Installing: /usr/local/include/naucrates/statistics/CUnionAllStatsProcessor.h
-- Installing: /usr/local/include/naucrates/statistics/CJoinStatsProcessor.h
-- Installing: /usr/local/include/naucrates/statistics/CGroupByStatsProcessor.h
-- Installing: /usr/local/include/naucrates/dxl
-- Installing: /usr/local/include/naucrates/dxl/CDXLUtils.h
-- Installing: /usr/local/include/naucrates/dxl/operators
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalCTEAnchor.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalCTEProducer.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLDatumInt4.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarArrayComp.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarPartListValues.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarSortCol.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalResult.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarSwitch.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarPartBound.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalCTEConsumer.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalRowTrigger.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalConstTable.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarPartOid.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarSubquery.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarHashExprList.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLColDescr.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLOperator.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarRecheckCondFilter.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarOneTimeFilter.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarPartDefault.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarSubqueryQuantified.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarSwitchCase.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalJoin.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogical.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalUpdate.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalAbstractBitmapScan.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarMinMax.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalIndexScan.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarBitmapBoolOp.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalExternalScan.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLDatumBool.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLNode.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarCast.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarAggref.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalCTEProducer.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarOpExpr.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalJoin.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalCTAS.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarMergeCondList.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarNullTest.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarDMLAction.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarConstValue.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarBitmapIndexProbe.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLDatumGeneric.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalRedistributeMotion.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarAssertConstraintList.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalGatherMotion.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarCoalesce.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarWindowRef.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarArray.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalBitmapTableScan.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarFilter.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalRoutedDistributeMotion.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarSubqueryAll.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalLimit.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarWindowFrameEdge.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarDistinctComp.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLOperatorFactory.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLDatumStatsLintMappable.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarOpList.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalDynamicTableScan.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLDatumOid.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLDatumInt8.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLWindowKey.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarAssertConstraint.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLOperatorCost.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalAgg.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalWindow.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarFuncExpr.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalAppend.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalSelect.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalWindow.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarBooleanTest.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalGroupBy.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLWindowSpec.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalMergeJoin.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalTVF.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalTableScan.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalPartitionSelector.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarBoolExpr.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLDirectDispatchInfo.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarLimitOffset.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarCoerceToDomain.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLDatumInt2.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarSortColList.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalSplit.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarSubqueryNotExists.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarIndexCondList.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLIndexDescr.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalProject.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysical.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarNullIf.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarHashCondList.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalBroadcastMotion.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLCtasStorageOptions.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalDelete.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarComp.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalAssert.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalIndexOnlyScan.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalGet.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalRandomMotion.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarLimitCount.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarSubqueryExists.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarCaseTest.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalDynamicBitmapTableScan.h
-- Installing: /usr/local/include/naucrates/dxl/operators/dxlops.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarJoinFilter.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalTVF.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarArrayCoerceExpr.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLWindowFrame.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLTableDescr.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalHashJoin.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarPartBoundOpen.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalProperties.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLColRef.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarHashExpr.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarPartListNullTest.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarPartBoundInclusion.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalExternalGet.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalSubqueryScan.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarArrayRef.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarCoerceBase.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalDynamicIndexScan.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarSubPlan.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalCTAS.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalLimit.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalMaterialize.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarCoerceViaIO.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarValuesList.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarProjList.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarIdent.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalMotion.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalCTEConsumer.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarProjElem.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalNLJoin.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLDatum.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalInsert.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarIfStmt.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalSort.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLProperties.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarArrayRefIndexList.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalDML.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLSpoolInfo.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLDatumStatsDoubleMappable.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLLogicalSetOp.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalValuesScan.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalarSubqueryAny.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLScalar.h
-- Installing: /usr/local/include/naucrates/dxl/operators/CDXLPhysicalSequence.h
-- Installing: /usr/local/include/naucrates/dxl/parser
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerPhysicalDynamicBitmapTableScan.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalConstTable.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMDGPDBCheckConstraint.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerUtils.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerQueryOutput.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMDGPDBScalarOp.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerDirectDispatchInfo.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerIndexScan.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerCondList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerPhysicalBitmapTableScan.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerPhysicalCTEProducer.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerSortCol.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarWindowRef.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalGroupBy.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerProperties.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerPhysicalSplit.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLimit.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerArray.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMetadata.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarArrayRef.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarComp.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarFuncExpr.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerPhysicalWindow.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarDMLAction.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalProject.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerStatsBound.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarArrayComp.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerIndexDescr.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerWindowKeyList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalGet.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalSelect.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMergeJoin.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerIndexCondList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerWindowKey.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalExternalGet.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarExpr.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMDRequest.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarCast.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerAssert.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarNullTest.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerOp.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarCaseTest.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerCostModel.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerTableDescr.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerXform.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerRelStats.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerCtasStorageOptions.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarSubqueryExists.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerPlan.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerSubqueryScan.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerCTEConfig.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMetadataColumns.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMaterialize.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMDIndexInfoList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarSwitch.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerNLJIndexParamList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerManager.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalCTEProducer.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarOpList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerCost.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerDistinctComp.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerHashExprList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarNullIf.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalCTEConsumer.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMetadataColumn.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarSubPlanParam.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarSwitchCase.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerAppend.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerValuesScan.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalWindow.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerHashJoin.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarLimitOffset.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMDGPDBFunc.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerDynamicTableScan.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarPartListValues.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerIndexOnlyScan.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarAssertConstraintList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarMinMax.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerPhysicalTVF.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerColStatsBucket.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalTVF.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarSubqueryQuantified.h
-- Installing: /usr/local/include/naucrates/dxl/parser/parsehandlers.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMetadataObject.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalInsert.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerBase.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerColStats.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerFilter.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarArrayCoerceExpr.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarIfStmt.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerGatherMotion.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerRedistributeMotion.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerCostParam.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalCTEAnchor.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerSort.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarAggref.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerPhysicalRowTrigger.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerPhysicalDML.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarPartBoundInclusion.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerCTEList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMDType.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerPartitionSelector.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMDRelation.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarCoalesce.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerPhysicalCTEConsumer.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerResult.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerDXL.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerSortColList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerStatsDerivedColumn.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMDScCmp.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerColDescr.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerNLJoin.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerStatsDerivedRelation.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarPartBound.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarLimitCount.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMDGPDBAgg.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerAgg.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerDynamicIndexScan.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarSubquery.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerFactory.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerOptimizerConfig.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarSubPlanTestExpr.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarBitmapIndexProbe.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalUpdate.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerEnumeratorConfig.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerHint.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerWindowOids.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarBooleanTest.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarCoerceViaIO.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarSubPlan.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarPartOid.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerWindowFrame.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalJoin.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarValuesList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerSequence.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarSubPlanParamList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMetadataIdList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerTraceFlags.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarCoerceToDomain.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarBoolExpr.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarPartListNullTest.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarIdent.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerGroupingColList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalLimit.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMDIndex.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerExternalScan.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMDArrayCoerceCast.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerSearchStage.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerDummy.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarArrayRefIndexList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarOp.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerHashExpr.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerDefaultValueExpr.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerWindowSpec.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalOp.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerRandomMotion.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerNLJIndexParam.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerStatistics.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerQuery.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerPhysicalAbstractBitmapScan.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMDRelationCtas.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarPartBoundOpen.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalSetOp.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerStacktrace.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerRoutedMotion.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerProjElem.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarWindowFrameEdge.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerTableScan.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarBitmapBoolOp.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerStatisticsConfig.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerSearchStrategy.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarOpExpr.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerWindowSpecList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerCostParams.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMDRelationExternal.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerPhysicalOp.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalDelete.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarPartDefault.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerProjList.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMDGPDBTrigger.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerMDCast.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerBroadcastMotion.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerScalarConstValue.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerLogicalCTAS.h
-- Installing: /usr/local/include/naucrates/dxl/parser/CParseHandlerPhysicalCTAS.h
-- Installing: /usr/local/include/naucrates/dxl/gpdb_types.h
-- Installing: /usr/local/include/naucrates/dxl/xml
-- Installing: /usr/local/include/naucrates/dxl/xml/dxltokens.h
-- Installing: /usr/local/include/naucrates/dxl/xml/CDXLSections.h
-- Installing: /usr/local/include/naucrates/dxl/xml/CDXLMemoryManager.h
-- Installing: /usr/local/include/naucrates/dxl/xml/CXMLSerializer.h
-- Installing: /usr/local/include/naucrates/dxl/errorcodes.h
-- Installing: /usr/local/include/naucrates/dxl/CCostModelConfigSerializer.h
-- Installing: /usr/local/include/naucrates/dxl/CIdGenerator.h
-- Installing: /usr/local/include/naucrates/traceflags
-- Installing: /usr/local/include/naucrates/traceflags/traceflags.h
-- Installing: /usr/local/include/naucrates/init.h
-- Installing: /usr/local/include/naucrates/base
-- Installing: /usr/local/include/naucrates/base/IDatumOid.h
-- Installing: /usr/local/include/naucrates/base/IDatumStatisticsMappable.h
-- Installing: /usr/local/include/naucrates/base/CDatumInt8GPDB.h
-- Installing: /usr/local/include/naucrates/base/CQueryToDXLResult.h
-- Installing: /usr/local/include/naucrates/base/IDatumInt8.h
-- Installing: /usr/local/include/naucrates/base/IDatumInt2.h
-- Installing: /usr/local/include/naucrates/base/IDatumInt4.h
-- Installing: /usr/local/include/naucrates/base/CDatumInt2GPDB.h
-- Installing: /usr/local/include/naucrates/base/CDatumGenericGPDB.h
-- Installing: /usr/local/include/naucrates/base/IDatum.h
-- Installing: /usr/local/include/naucrates/base/CDatumBoolGPDB.h
-- Installing: /usr/local/include/naucrates/base/CDatumOidGPDB.h
-- Installing: /usr/local/include/naucrates/base/IDatumGeneric.h
-- Installing: /usr/local/include/naucrates/base/IDatumBool.h
-- Installing: /usr/local/include/naucrates/base/CDatumInt4GPDB.h
-- Installing: /usr/local/include/naucrates/exception.h
-- Installing: /usr/local/include/naucrates/md
-- Installing: /usr/local/include/naucrates/md/CDXLRelStats.h
-- Installing: /usr/local/include/naucrates/md/CMDTypeGenericGPDB.h
-- Installing: /usr/local/include/naucrates/md/CDXLStatsDerivedColumn.h
-- Installing: /usr/local/include/naucrates/md/IMDScCmp.h
-- Installing: /usr/local/include/naucrates/md/CMDRelationExternalGPDB.h
-- Installing: /usr/local/include/naucrates/md/IMDTypeGeneric.h
-- Installing: /usr/local/include/naucrates/md/IMDCast.h
-- Installing: /usr/local/include/naucrates/md/IMDId.h
-- Installing: /usr/local/include/naucrates/md/CMDIdCast.h
-- Installing: /usr/local/include/naucrates/md/IMDProvider.h
-- Installing: /usr/local/include/naucrates/md/CMDCastGPDB.h
-- Installing: /usr/local/include/naucrates/md/CMDFunctionGPDB.h
-- Installing: /usr/local/include/naucrates/md/CMDScCmpGPDB.h
-- Installing: /usr/local/include/naucrates/md/IMDCheckConstraint.h
-- Installing: /usr/local/include/naucrates/md/IMDRelation.h
-- Installing: /usr/local/include/naucrates/md/IMDRelStats.h
-- Installing: /usr/local/include/naucrates/md/CMDIdRelStats.h
-- Installing: /usr/local/include/naucrates/md/CMDTypeInt4GPDB.h
-- Installing: /usr/local/include/naucrates/md/CMDIdColStats.h
-- Installing: /usr/local/include/naucrates/md/CDXLBucket.h
-- Installing: /usr/local/include/naucrates/md/CMDProviderMemory.h
-- Installing: /usr/local/include/naucrates/md/CMDArrayCoerceCastGPDB.h
-- Installing: /usr/local/include/naucrates/md/CMDProviderGeneric.h
-- Installing: /usr/local/include/naucrates/md/CMDTypeInt2GPDB.h
-- Installing: /usr/local/include/naucrates/md/IMDType.h
-- Installing: /usr/local/include/naucrates/md/CMDIdGPDBCtas.h
-- Installing: /usr/local/include/naucrates/md/IMDTypeInt4.h
-- Installing: /usr/local/include/naucrates/md/CMDAggregateGPDB.h
-- Installing: /usr/local/include/naucrates/md/CMDRequest.h
-- Installing: /usr/local/include/naucrates/md/CMDRelationCtasGPDB.h
-- Installing: /usr/local/include/naucrates/md/IMDInterface.h
-- Installing: /usr/local/include/naucrates/md/CMDCheckConstraintGPDB.h
-- Installing: /usr/local/include/naucrates/md/IMDTrigger.h
-- Installing: /usr/local/include/naucrates/md/CMDIndexInfo.h
-- Installing: /usr/local/include/naucrates/md/CMDTypeInt8GPDB.h
-- Installing: /usr/local/include/naucrates/md/CSystemId.h
-- Installing: /usr/local/include/naucrates/md/CMDPartConstraintGPDB.h
-- Installing: /usr/local/include/naucrates/md/IMDColumn.h
-- Installing: /usr/local/include/naucrates/md/CGPDBTypeHelper.h
-- Installing: /usr/local/include/naucrates/md/IMDTypeBool.h
-- Installing: /usr/local/include/naucrates/md/CMDTypeOidGPDB.h
-- Installing: /usr/local/include/naucrates/md/IMDColStats.h
-- Installing: /usr/local/include/naucrates/md/IMDAggregate.h
-- Installing: /usr/local/include/naucrates/md/CMDColumn.h
-- Installing: /usr/local/include/naucrates/md/CDXLStatsDerivedRelation.h
-- Installing: /usr/local/include/naucrates/md/IMDPartConstraint.h
-- Installing: /usr/local/include/naucrates/md/IMDRelationCtas.h
-- Installing: /usr/local/include/naucrates/md/IMDTypeInt2.h
-- Installing: /usr/local/include/naucrates/md/CMDName.h
-- Installing: /usr/local/include/naucrates/md/CMDScalarOpGPDB.h
-- Installing: /usr/local/include/naucrates/md/CMDIdScCmp.h
-- Installing: /usr/local/include/naucrates/md/CMDIdGPDB.h
-- Installing: /usr/local/include/naucrates/md/CMDTypeBoolGPDB.h
-- Installing: /usr/local/include/naucrates/md/CMDTriggerGPDB.h
-- Installing: /usr/local/include/naucrates/md/CMDRelationGPDB.h
-- Installing: /usr/local/include/naucrates/md/IMDIndex.h
-- Installing: /usr/local/include/naucrates/md/IMDTypeOid.h
-- Installing: /usr/local/include/naucrates/md/IMDTypeInt8.h
-- Installing: /usr/local/include/naucrates/md/IMDScalarOp.h
-- Installing: /usr/local/include/naucrates/md/IMDCacheObject.h
-- Installing: /usr/local/include/naucrates/md/IMDFunction.h
-- Installing: /usr/local/include/naucrates/md/CDXLColStats.h
-- Installing: /usr/local/include/naucrates/md/IMDRelationExternal.h
-- Installing: /usr/local/include/naucrates/md/CMDIndexGPDB.h
-- Installing: /usr/local/lib/libgpdbcost.so.3.14.0
-- Installing: /usr/local/lib/libgpdbcost.so.3
-- Set runtime path of "/usr/local/lib/libgpdbcost.so.3.14.0" to ""
-- Installing: /usr/local/lib/libgpdbcost.so
-- Installing: /usr/local/include/gpdbcost
-- Installing: /usr/local/include/gpdbcost/CCostModelGPDB.h
-- Installing: /usr/local/include/gpdbcost/CCostModelGPDBLegacy.h
-- Installing: /usr/local/include/gpdbcost/CCostModelParamsGPDB.h
-- Installing: /usr/local/include/gpdbcost/CCostModelParamsGPDBLegacy.h
-- Installing: /usr/local/lib/libgpopt.so.3.14.0
-- Installing: /usr/local/lib/libgpopt.so.3
-- Set runtime path of "/usr/local/lib/libgpopt.so.3.14.0" to ""
-- Installing: /usr/local/lib/libgpopt.so
-- Installing: /usr/local/include/gpopt
-- Installing: /usr/local/include/gpopt/operators
-- Installing: /usr/local/include/gpopt/operators/CLogicalIndexGet.h
-- Installing: /usr/local/include/gpopt/operators/CPattern.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalCTEAnchor.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalSequenceProject.h
-- Installing: /usr/local/include/gpopt/operators/CScalarCoalesce.h
-- Installing: /usr/local/include/gpopt/operators/CScalarBitmapIndexProbe.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalLeftSemiNLJoin.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalFilter.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalPartitionSelectorDML.h
-- Installing: /usr/local/include/gpopt/operators/CWindowPreprocessor.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalLimit.h
-- Installing: /usr/local/include/gpopt/operators/CScalarIsDistinctFrom.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalCTEProducer.h
-- Installing: /usr/local/include/gpopt/operators/CPatternTree.h
-- Installing: /usr/local/include/gpopt/operators/CScalarAssertConstraintList.h
-- Installing: /usr/local/include/gpopt/operators/CScalarIf.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalLeftAntiSemiApply.h
-- Installing: /usr/local/include/gpopt/operators/CScalarSwitch.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalIntersect.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalMaxOneRow.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalSequence.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalSetOp.h
-- Installing: /usr/local/include/gpopt/operators/CScalarFunc.h
-- Installing: /usr/local/include/gpopt/operators/CScalarNullIf.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalLeftAntiSemiCorrelatedApply.h
-- Installing: /usr/local/include/gpopt/operators/CScalarBooleanTest.h
-- Installing: /usr/local/include/gpopt/operators/CScalarSubqueryNotExists.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalLeftSemiCorrelatedApplyIn.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalDynamicTableScan.h
-- Installing: /usr/local/include/gpopt/operators/CScalarProjectElement.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalAssert.h
-- Installing: /usr/local/include/gpopt/operators/CScalarSubqueryAny.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalLimit.h
-- Installing: /usr/local/include/gpopt/operators/CLogical.h
-- Installing: /usr/local/include/gpopt/operators/CScalarCmp.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalSplit.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalSort.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalJoin.h
-- Installing: /usr/local/include/gpopt/operators/CScalarSubqueryExists.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalExternalScan.h
-- Installing: /usr/local/include/gpopt/operators/CScalarArrayRefIndexList.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalCorrelatedInLeftSemiNLJoin.h
-- Installing: /usr/local/include/gpopt/operators/CScalarOp.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalGet.h
-- Installing: /usr/local/include/gpopt/operators/CScalar.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalApply.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalDifferenceAll.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalRowTrigger.h
-- Installing: /usr/local/include/gpopt/operators/CScalarCoerceToDomain.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalPartitionSelector.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalCorrelatedLeftSemiNLJoin.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalUnionAll.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalTableScan.h
-- Installing: /usr/local/include/gpopt/operators/CScalarIdent.h
-- Installing: /usr/local/include/gpopt/operators/CPhysical.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalDelete.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalLeftOuterCorrelatedApply.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalGbAgg.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalParallelUnionAll.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalIndexScan.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalDynamicIndexGet.h
-- Installing: /usr/local/include/gpopt/operators/CHashedDistributions.h
-- Installing: /usr/local/include/gpopt/operators/CExpressionFactorizer.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalConstTableGet.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalLeftOuterNLJoin.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalMotionGather.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalProject.h
-- Installing: /usr/local/include/gpopt/operators/COperator.h
-- Installing: /usr/local/include/gpopt/operators/CScalarSubqueryExistential.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalMotionHashDistribute.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalDifference.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalMotion.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalCorrelatedNotInLeftAntiSemiNLJoin.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalSerialUnionAll.h
-- Installing: /usr/local/include/gpopt/operators/CScalarCast.h
-- Installing: /usr/local/include/gpopt/operators/CExpression.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalCTEProducer.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalTVF.h
-- Installing: /usr/local/include/gpopt/operators/CScalarAggFunc.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalSelect.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalExternalGet.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalNAryJoin.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalLeftAntiSemiNLJoin.h
-- Installing: /usr/local/include/gpopt/operators/CExpressionUtils.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalLeftAntiSemiCorrelatedApplyNotIn.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalMotionRandom.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalUnionAllFactory.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalLeftOuterJoin.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalStreamAggDeduplicate.h
-- Installing: /usr/local/include/gpopt/operators/CScalarSubquery.h
-- Installing: /usr/local/include/gpopt/operators/CScalarWindowFunc.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalCorrelatedInnerNLJoin.h
-- Installing: /usr/local/include/gpopt/operators/CScalarConst.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalLeftSemiJoin.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalInnerIndexNLJoin.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalCorrelatedLeftAntiSemiNLJoin.h
-- Installing: /usr/local/include/gpopt/operators/CScalarCoerceViaIO.h
-- Installing: /usr/local/include/gpopt/operators/CScalarArrayCoerceExpr.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalDynamicIndexScan.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalPartitionSelector.h
-- Installing: /usr/local/include/gpopt/operators/CScalarMinMax.h
-- Installing: /usr/local/include/gpopt/operators/ops.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalLeftOuterApply.h
-- Installing: /usr/local/include/gpopt/operators/CPatternMultiTree.h
-- Installing: /usr/local/include/gpopt/operators/CScalarSwitchCase.h
-- Installing: /usr/local/include/gpopt/operators/CScalarSubqueryAll.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalLeftOuterHashJoin.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalComputeScalar.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalInnerCorrelatedApply.h
-- Installing: /usr/local/include/gpopt/operators/CExpressionPreprocessor.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalInnerHashJoin.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalLeftOuterIndexNLJoin.h
-- Installing: /usr/local/include/gpopt/operators/CScalarArray.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalLeftAntiSemiApplyNotIn.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalDynamicScan.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalLeftSemiApplyIn.h
-- Installing: /usr/local/include/gpopt/operators/CNormalizer.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalJoin.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalStreamAgg.h
-- Installing: /usr/local/include/gpopt/operators/CScalarBoolOp.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalDML.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalLeftAntiSemiJoinNotIn.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalBitmapTableGet.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalDynamicBitmapTableGet.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalInnerApply.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalLeftSemiApply.h
-- Installing: /usr/local/include/gpopt/operators/CPredicateUtils.h
-- Installing: /usr/local/include/gpopt/operators/CPatternLeaf.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalAssert.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalUnion.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalNLJoin.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalSequenceProject.h
-- Installing: /usr/local/include/gpopt/operators/CScalarSubqueryQuantified.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalDML.h
-- Installing: /usr/local/include/gpopt/operators/CExpressionHandle.h
-- Installing: /usr/local/include/gpopt/operators/CScalarArrayRef.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalRowTrigger.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalCorrelatedLeftOuterNLJoin.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalDynamicGetBase.h
-- Installing: /usr/local/include/gpopt/operators/CScalarCoerceBase.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalHashJoin.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalDynamicGet.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalLeftAntiSemiNLJoinNotIn.h
-- Installing: /usr/local/include/gpopt/operators/CScalarArrayCmp.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalHashAgg.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalScalarAgg.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalSequence.h
-- Installing: /usr/local/include/gpopt/operators/CPatternMultiLeaf.h
-- Installing: /usr/local/include/gpopt/operators/CScalarBitmapBoolOp.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalInnerJoin.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalLeftSemiHashJoin.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalDynamicBitmapTableScan.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalSpool.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalGbAggDeduplicate.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalBitmapTableScan.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalInsert.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalCTEConsumer.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalMotionBroadcast.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalTVF.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalAgg.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalScan.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalLeftAntiSemiHashJoinNotIn.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalFullOuterJoin.h
-- Installing: /usr/local/include/gpopt/operators/CScalarProjectList.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalLeftAntiSemiHashJoin.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalSplit.h
-- Installing: /usr/local/include/gpopt/operators/CStrictHashedDistributions.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalIndexApply.h
-- Installing: /usr/local/include/gpopt/operators/CScalarNullTest.h
-- Installing: /usr/local/include/gpopt/operators/CScalarDMLAction.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalUnary.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalUpdate.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalCTEConsumer.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalUnionAll.h
-- Installing: /usr/local/include/gpopt/operators/CScalarAssertConstraint.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalMotionRoutedDistribute.h
-- Installing: /usr/local/include/gpopt/operators/CScalarCaseTest.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalConstTableGet.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalHashAggDeduplicate.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalIntersectAll.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalLeftAntiSemiJoin.h
-- Installing: /usr/local/include/gpopt/operators/CLogicalLeftSemiCorrelatedApply.h
-- Installing: /usr/local/include/gpopt/operators/CPhysicalInnerNLJoin.h
-- Installing: /usr/local/include/gpopt/metadata
-- Installing: /usr/local/include/gpopt/metadata/CColumnDescriptor.h
-- Installing: /usr/local/include/gpopt/metadata/CTableDescriptor.h
-- Installing: /usr/local/include/gpopt/metadata/CIndexDescriptor.h
-- Installing: /usr/local/include/gpopt/metadata/CPartConstraint.h
-- Installing: /usr/local/include/gpopt/metadata/CName.h
-- Installing: /usr/local/include/gpopt/minidump
-- Installing: /usr/local/include/gpopt/minidump/CDXLMinidump.h
-- Installing: /usr/local/include/gpopt/minidump/CMetadataAccessorFactory.h
-- Installing: /usr/local/include/gpopt/minidump/CSerializableOptimizerConfig.h
-- Installing: /usr/local/include/gpopt/minidump/CSerializablePlan.h
-- Installing: /usr/local/include/gpopt/minidump/CMiniDumperDXL.h
-- Installing: /usr/local/include/gpopt/minidump/CSerializableStackTrace.h
-- Installing: /usr/local/include/gpopt/minidump/CMinidumperUtils.h
-- Installing: /usr/local/include/gpopt/minidump/CSerializableQuery.h
-- Installing: /usr/local/include/gpopt/minidump/CSerializableMDAccessor.h
-- Installing: /usr/local/include/gpopt/init.h
-- Installing: /usr/local/include/gpopt/eval
-- Installing: /usr/local/include/gpopt/eval/IConstExprEvaluator.h
-- Installing: /usr/local/include/gpopt/eval/CConstExprEvaluatorDXL.h
-- Installing: /usr/local/include/gpopt/eval/IConstDXLNodeEvaluator.h
-- Installing: /usr/local/include/gpopt/eval/CConstExprEvaluatorDefault.h
-- Installing: /usr/local/include/gpopt/search
-- Installing: /usr/local/include/gpopt/search/CJobQueue.h
-- Installing: /usr/local/include/gpopt/search/CJobFactory.h
-- Installing: /usr/local/include/gpopt/search/CJob.h
-- Installing: /usr/local/include/gpopt/search/CJobGroupExpression.h
-- Installing: /usr/local/include/gpopt/search/CJobGroup.h
-- Installing: /usr/local/include/gpopt/search/CSchedulerContext.h
-- Installing: /usr/local/include/gpopt/search/CJobTransformation.h
-- Installing: /usr/local/include/gpopt/search/CMemo.h
-- Installing: /usr/local/include/gpopt/search/CJobGroupExploration.h
-- Installing: /usr/local/include/gpopt/search/CGroupExpression.h
-- Installing: /usr/local/include/gpopt/search/CBinding.h
-- Installing: /usr/local/include/gpopt/search/CJobStateMachine.h
-- Installing: /usr/local/include/gpopt/search/CSearchStage.h
-- Installing: /usr/local/include/gpopt/search/CGroupProxy.h
-- Installing: /usr/local/include/gpopt/search/CTreeMap.h
-- Installing: /usr/local/include/gpopt/search/CGroup.h
-- Installing: /usr/local/include/gpopt/search/CScheduler.h
-- Installing: /usr/local/include/gpopt/search/CJobGroupExpressionExploration.h
-- Installing: /usr/local/include/gpopt/search/CJobTest.h
-- Installing: /usr/local/include/gpopt/search/CJobGroupImplementation.h
-- Installing: /usr/local/include/gpopt/search/CJobGroupOptimization.h
-- Installing: /usr/local/include/gpopt/search/CJobGroupExpressionOptimization.h
-- Installing: /usr/local/include/gpopt/search/CJobGroupExpressionImplementation.h
-- Installing: /usr/local/include/gpopt/base
-- Installing: /usr/local/include/gpopt/base/CDatumSortedSet.h
-- Installing: /usr/local/include/gpopt/base/CDistributionSpecRouted.h
-- Installing: /usr/local/include/gpopt/base/CConstraintNegation.h
-- Installing: /usr/local/include/gpopt/base/CColumnFactory.h
-- Installing: /usr/local/include/gpopt/base/CDistributionSpecNonSingleton.h
-- Installing: /usr/local/include/gpopt/base/CRange.h
-- Installing: /usr/local/include/gpopt/base/CWindowOids.h
-- Installing: /usr/local/include/gpopt/base/IColConstraintsMapper.h
-- Installing: /usr/local/include/gpopt/base/CIOUtils.h
-- Installing: /usr/local/include/gpopt/base/CDistributionSpecUniversal.h
-- Installing: /usr/local/include/gpopt/base/CDefaultComparator.h
-- Installing: /usr/local/include/gpopt/base/COptCtxt.h
-- Installing: /usr/local/include/gpopt/base/CMaxCard.h
-- Installing: /usr/local/include/gpopt/base/IComparator.h
-- Installing: /usr/local/include/gpopt/base/CDistributionSpecHashed.h
-- Installing: /usr/local/include/gpopt/base/CStateMachine.h
-- Installing: /usr/local/include/gpopt/base/CQueryContext.h
-- Installing: /usr/local/include/gpopt/base/CDrvdPropCtxt.h
-- Installing: /usr/local/include/gpopt/base/CWindowFrame.h
-- Installing: /usr/local/include/gpopt/base/COptimizationContext.h
-- Installing: /usr/local/include/gpopt/base/CAutoOptCtxt.h
-- Installing: /usr/local/include/gpopt/base/CDistributionSpecReplicated.h
-- Installing: /usr/local/include/gpopt/base/CDrvdPropCtxtScalar.h
-- Installing: /usr/local/include/gpopt/base/CDistributionSpecHashedNoOp.h
-- Installing: /usr/local/include/gpopt/base/CDrvdPropCtxtRelational.h
-- Installing: /usr/local/include/gpopt/base/CCTEMap.h
-- Installing: /usr/local/include/gpopt/base/CConstraintInterval.h
-- Installing: /usr/local/include/gpopt/base/CPrintPrefix.h
-- Installing: /usr/local/include/gpopt/base/CPropConstraint.h
-- Installing: /usr/local/include/gpopt/base/CConstraint.h
-- Installing: /usr/local/include/gpopt/base/CColRefComputed.h
-- Installing: /usr/local/include/gpopt/base/CDrvdPropCtxtPlan.h
-- Installing: /usr/local/include/gpopt/base/CEnfdOrder.h
-- Installing: /usr/local/include/gpopt/base/CDrvdPropPlan.h
-- Installing: /usr/local/include/gpopt/base/CRewindabilitySpec.h
-- Installing: /usr/local/include/gpopt/base/CEnfdDistribution.h
-- Installing: /usr/local/include/gpopt/base/CDistributionSpec.h
-- Installing: /usr/local/include/gpopt/base/CPartKeys.h
-- Installing: /usr/local/include/gpopt/base/CColConstraintsHashMapper.h
-- Installing: /usr/local/include/gpopt/base/CCastUtils.h
-- Installing: /usr/local/include/gpopt/base/CPartitionPropagationSpec.h
-- Installing: /usr/local/include/gpopt/base/CKeyCollection.h
-- Installing: /usr/local/include/gpopt/base/CCostContext.h
-- Installing: /usr/local/include/gpopt/base/CEnfdPartitionPropagation.h
-- Installing: /usr/local/include/gpopt/base/CDistributionSpecAny.h
-- Installing: /usr/local/include/gpopt/base/CColRefTable.h
-- Installing: /usr/local/include/gpopt/base/CColConstraintsArrayMapper.h
-- Installing: /usr/local/include/gpopt/base/CDrvdPropScalar.h
-- Installing: /usr/local/include/gpopt/base/CPartIndexMap.h
-- Installing: /usr/local/include/gpopt/base/CConstraintDisjunction.h
-- Installing: /usr/local/include/gpopt/base/CPartInfo.h
-- Installing: /usr/local/include/gpopt/base/CFunctionProp.h
-- Installing: /usr/local/include/gpopt/base/CDistributionSpecRandom.h
-- Installing: /usr/local/include/gpopt/base/CDistributionSpecStrictRandom.h
-- Installing: /usr/local/include/gpopt/base/CCTEInfo.h
-- Installing: /usr/local/include/gpopt/base/CDistributionSpecStrictHashed.h
-- Installing: /usr/local/include/gpopt/base/CColRefSet.h
-- Installing: /usr/local/include/gpopt/base/CFunctionalDependency.h
-- Installing: /usr/local/include/gpopt/base/CUtils.h
-- Installing: /usr/local/include/gpopt/base/CEnfdRewindability.h
-- Installing: /usr/local/include/gpopt/base/CDrvdPropRelational.h
-- Installing: /usr/local/include/gpopt/base/CDistributionSpecStrictSingleton.h
-- Installing: /usr/local/include/gpopt/base/CPropSpec.h
-- Installing: /usr/local/include/gpopt/base/CColRef.h
-- Installing: /usr/local/include/gpopt/base/CReqdPropPlan.h
-- Installing: /usr/local/include/gpopt/base/CEnfdProp.h
-- Installing: /usr/local/include/gpopt/base/CReqdProp.h
-- Installing: /usr/local/include/gpopt/base/COrderSpec.h
-- Installing: /usr/local/include/gpopt/base/CDistributionSpecSingleton.h
-- Installing: /usr/local/include/gpopt/base/CConstraintConjunction.h
-- Installing: /usr/local/include/gpopt/base/CDrvdProp.h
-- Installing: /usr/local/include/gpopt/base/CCTEReq.h
-- Installing: /usr/local/include/gpopt/base/CPartFilterMap.h
-- Installing: /usr/local/include/gpopt/base/CColRefSetIter.h
-- Installing: /usr/local/include/gpopt/base/CDistributionSpecExternal.h
-- Installing: /usr/local/include/gpopt/base/CReqdPropRelational.h
-- Installing: /usr/local/include/gpopt/exception.h
-- Installing: /usr/local/include/gpopt/optimizer
-- Installing: /usr/local/include/gpopt/optimizer/COptimizer.h
-- Installing: /usr/local/include/gpopt/optimizer/COptimizerConfig.h
-- Installing: /usr/local/include/gpopt/mdcache
-- Installing: /usr/local/include/gpopt/mdcache/CMDKey.h
-- Installing: /usr/local/include/gpopt/mdcache/CMDAccessor.h
-- Installing: /usr/local/include/gpopt/mdcache/CMDAccessorUtils.h
-- Installing: /usr/local/include/gpopt/mdcache/CAutoMDAccessor.h
-- Installing: /usr/local/include/gpopt/mdcache/CMDCache.h
-- Installing: /usr/local/include/gpopt/spinlock.h
-- Installing: /usr/local/include/gpopt/cost
-- Installing: /usr/local/include/gpopt/cost/CCost.h
-- Installing: /usr/local/include/gpopt/cost/ICostModelParams.h
-- Installing: /usr/local/include/gpopt/cost/ICostModel.h
-- Installing: /usr/local/include/gpopt/xforms
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerJoinAntiSemiJoinNotInSwap.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftSemiJoin2NLJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSimplifyGbAgg.h
-- Installing: /usr/local/include/gpopt/xforms/CXformDynamicIndexGet2DynamicIndexScan.h
-- Installing: /usr/local/include/gpopt/xforms/CXformApply2Join.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerJoinAntiSemiJoinSwap.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerJoin2DynamicBitmapIndexGetApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformProject2ComputeScalar.h
-- Installing: /usr/local/include/gpopt/xforms/CXformContext.h
-- Installing: /usr/local/include/gpopt/xforms/CXformGbAggWithMDQA2Join.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerJoinWithInnerSelect2DynamicIndexGetApply.h
-- Installing: /usr/local/include/gpopt/xforms/CDecorrelator.h
-- Installing: /usr/local/include/gpopt/xforms/CXformDynamicGet2DynamicTableScan.h
-- Installing: /usr/local/include/gpopt/xforms/CXformJoin2IndexApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSemiJoinAntiSemiJoinNotInSwap.h
-- Installing: /usr/local/include/gpopt/xforms/CXformFactory.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementDML.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSemiJoinInnerJoinSwap.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSimplifySelectWithSubquery.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementInnerCorrelatedApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformJoinSwap.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftAntiSemiApplyNotIn2LeftAntiSemiJoinNotInNoCorrelations.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementCorrelatedApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformPushGbBelowJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformAntiSemiJoinNotInInnerJoinSwap.h
-- Installing: /usr/local/include/gpopt/xforms/CXformAntiSemiJoinAntiSemiJoinSwap.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerJoin2IndexGetApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementTVF.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerJoinSemiJoinSwap.h
-- Installing: /usr/local/include/gpopt/xforms/CXformRemoveSubqDistinct.h
-- Installing: /usr/local/include/gpopt/xforms/CXformIndexGet2IndexScan.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementCTEConsumer.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSelect2DynamicIndexGet.h
-- Installing: /usr/local/include/gpopt/xforms/CXformExploration.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementIndexApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftAntiSemiJoinNotIn2HashJoinNotIn.h
-- Installing: /usr/local/include/gpopt/xforms/CXformIntersect2Join.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftOuterJoinWithInnerSelect2BitmapIndexGetApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformCollapseProject.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSelect2PartialDynamicIndexGet.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSplitGbAggDedup.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInlineCTEConsumerUnderSelect.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementSequenceProject.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInlineCTEConsumer.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementSequence.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerJoinWithInnerSelect2IndexGetApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSemiJoinAntiSemiJoinSwap.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftOuterApply2LeftOuterJoinNoCorrelations.h
-- Installing: /usr/local/include/gpopt/xforms/CXformExpandNAryJoinMinCard.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftSemiApplyIn2LeftSemiJoinNoCorrelations.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSelect2BitmapBoolOp.h
-- Installing: /usr/local/include/gpopt/xforms/CXformAntiSemiJoinNotInAntiSemiJoinSwap.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerApply2InnerJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformGbAggDedup2HashAggDedup.h
-- Installing: /usr/local/include/gpopt/xforms/CXformUnnestTVF.h
-- Installing: /usr/local/include/gpopt/xforms/CXformExpandFullOuterJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformGbAgg2StreamAgg.h
-- Installing: /usr/local/include/gpopt/xforms/CXformGet2TableScan.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSimplifyProjectWithSubquery.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftSemiJoin2CrossProduct.h
-- Installing: /usr/local/include/gpopt/xforms/CXformAntiSemiJoinNotInAntiSemiJoinNotInSwap.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSimplifyLeftOuterJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementRowTrigger.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftAntiSemiApply2LeftAntiSemiJoinNoCorrelations.h
-- Installing: /usr/local/include/gpopt/xforms/CXformExpandNAryJoinGreedy.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSequenceProject2Apply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformAntiSemiJoinNotInSemiJoinSwap.h
-- Installing: /usr/local/include/gpopt/xforms/CXformExpandNAryJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformProject2Apply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftOuterJoin2HashJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementPartitionSelector.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSelect2Filter.h
-- Installing: /usr/local/include/gpopt/xforms/CXformUtils.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementAssert.h
-- Installing: /usr/local/include/gpopt/xforms/CXformPushGbBelowUnion.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerJoinWithInnerSelect2DynamicBitmapIndexGetApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftOuterApply2LeftOuterJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerJoin2HashJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformPushGbBelowUnionAll.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSplitGbAgg.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSubqNAryJoin2Apply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformPushDownLeftOuterJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformDifference2LeftAntiSemiJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftAntiSemiApplyNotIn2LeftAntiSemiJoinNotIn.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementLeftSemiCorrelatedApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftOuterJoin2NLJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXform.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSelect2DynamicBitmapBoolOp.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementTVFNoArgs.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftSemiApplyWithExternalCorrs2InnerJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformMaxOneRow2Assert.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSelect2IndexGet.h
-- Installing: /usr/local/include/gpopt/xforms/CXformAntiSemiJoinAntiSemiJoinNotInSwap.h
-- Installing: /usr/local/include/gpopt/xforms/CXformDifferenceAll2LeftAntiSemiJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSplitLimit.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftSemiApply2LeftSemiJoinNoCorrelations.h
-- Installing: /usr/local/include/gpopt/xforms/CXformUpdate2DML.h
-- Installing: /usr/local/include/gpopt/xforms/CXformJoin2IndexApplyBase.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementConstTableGet.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementLeftAntiSemiCorrelatedApplyNotIn.h
-- Installing: /usr/local/include/gpopt/xforms/CXformAntiSemiJoinSemiJoinSwap.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerJoin2BitmapIndexGetApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementDynamicBitmapTableGet.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerJoin2NLJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftAntiSemiJoin2NLJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementLeftSemiCorrelatedApplyIn.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementUnionAll.h
-- Installing: /usr/local/include/gpopt/xforms/CXformJoinCommutativity.h
-- Installing: /usr/local/include/gpopt/xforms/CXformCollapseGbAgg.h
-- Installing: /usr/local/include/gpopt/xforms/CXformGbAgg2HashAgg.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftAntiSemiJoinNotIn2NLJoinNotIn.h
-- Installing: /usr/local/include/gpopt/xforms/CJoinOrderGreedy.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftOuterJoinWithInnerSelect2IndexGetApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformCTEAnchor2Sequence.h
-- Installing: /usr/local/include/gpopt/xforms/CSubqueryHandler.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementLeftOuterCorrelatedApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementation.h
-- Installing: /usr/local/include/gpopt/xforms/CXformPushGbBelowSetOp.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementBitmapTableGet.h
-- Installing: /usr/local/include/gpopt/xforms/CXformAntiSemiJoinInnerJoinSwap.h
-- Installing: /usr/local/include/gpopt/xforms/CXformPushGbDedupBelowJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementSplit.h
-- Installing: /usr/local/include/gpopt/xforms/CXformJoinAssociativity.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSubqueryUnnest.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerApplyWithOuterKey2InnerJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementLimit.h
-- Installing: /usr/local/include/gpopt/xforms/CXformGbAgg2Apply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformPushGbWithHavingBelowJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementCTEProducer.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftOuterJoin2IndexGetApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformExternalGet2ExternalScan.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftSemiJoin2InnerJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerJoinWithInnerSelect2BitmapIndexGetApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformDelete2DML.h
-- Installing: /usr/local/include/gpopt/xforms/CJoinOrderMinCard.h
-- Installing: /usr/local/include/gpopt/xforms/CXformGbAgg2ScalarAgg.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftAntiSemiJoin2HashJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInsert2DML.h
-- Installing: /usr/local/include/gpopt/xforms/CXformIntersectAll2LeftSemiJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformGbAggDedup2StreamAggDedup.h
-- Installing: /usr/local/include/gpopt/xforms/CXformImplementLeftAntiSemiCorrelatedApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerApply2InnerJoinNoCorrelations.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerJoinWithInnerSelect2PartialDynamicIndexGetApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformCTEAnchor2TrivialSelect.h
-- Installing: /usr/local/include/gpopt/xforms/CXformUnion2UnionAll.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSimplifySubquery.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftSemiApply2LeftSemiJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CJoinOrder.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftSemiJoin2InnerJoinUnderGb.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerJoin2PartialDynamicIndexGetApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftSemiApplyIn2LeftSemiJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftOuterJoin2BitmapIndexGetApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformInnerJoin2DynamicIndexGetApply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformExpandNAryJoinDP.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftSemiJoin2HashJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftSemiApplyInWithExternalCorrs2InnerJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSubqJoin2Apply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftAntiSemiJoin2CrossProduct.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftAntiSemiApply2LeftAntiSemiJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSplitDQA.h
-- Installing: /usr/local/include/gpopt/xforms/xforms.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftAntiSemiJoinNotIn2CrossProduct.h
-- Installing: /usr/local/include/gpopt/xforms/CJoinOrderDP.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSelect2Apply.h
-- Installing: /usr/local/include/gpopt/xforms/CXformSemiJoinSemiJoinSwap.h
-- Installing: /usr/local/include/gpopt/xforms/CXformLeftOuter2InnerUnionAllLeftAntiSemiJoin.h
-- Installing: /usr/local/include/gpopt/xforms/CXformResult.h
-- Installing: /usr/local/include/gpopt/translate
-- Installing: /usr/local/include/gpopt/translate/CTranslatorExprToDXL.h
-- Installing: /usr/local/include/gpopt/translate/CTranslatorExprToDXLUtils.h
-- Installing: /usr/local/include/gpopt/translate/CTranslatorDXLToExpr.h
-- Installing: /usr/local/include/gpopt/translate/CTranslatorDXLToExprUtils.h
-- Installing: /usr/local/include/gpopt/engine
-- Installing: /usr/local/include/gpopt/engine/CEngine.h
-- Installing: /usr/local/include/gpopt/engine/CHint.h
-- Installing: /usr/local/include/gpopt/engine/CCTEConfig.h
-- Installing: /usr/local/include/gpopt/engine/CEnumeratorConfig.h
-- Installing: /usr/local/include/gpopt/engine/CStatisticsConfig.h
-- Installing: /usr/local/include/gpopt/engine/CPartialPlan.h
-- Installing: /usr/local/include/gpopt/version.h
[root@spa-42-185-112 gporca-3.14.0]# cd ~/gpdb-5.15.1/
[root@spa-42-185-112 gpdb-5.15.1]# cd depends/
[root@spa-42-185-112 depends]# ./configure
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for a BSD-compatible install... /usr/bin/install -c
checking for conan... conan
checking for cmake... cmake
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for strnicmp in -lxerces-c... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
configure: creating ./config.status
config.status: creating Makefile
[root@spa-42-185-112 depends]# make
CONAN_USER_HOME=/root/gpdb-5.15.1/depends conan install --build=missing conanfile_orca.txt
Configuration:
[settings]
os=Linux
os_build=Linux
arch=x86_64
arch_build=x86_64
compiler=gcc
compiler.version=4.8
compiler.libcxx=libstdc++
build_type=Release
[options]
[build_requires]
[env]

PROJECT: Installing /root/gpdb-5.15.1/depends/conanfile_orca.txt
Requirements
    orca/v3.14.0@gpdb/stable from 'gpdb-oss' - Cache
Packages
    orca/v3.14.0@gpdb/stable:4f7d6d5032b1a188f98e0c149ef6bf91e76af63e - Cache

orca/v3.14.0@gpdb/stable: Already installed!
PROJECT: Generator txt created conanbuildinfo.txt
PROJECT: Generated conaninfo.txt
PROJECT imports(): Copied 1070 '.h' files: 
PROJECT imports(): Copied 4 '.0' files: libgpdbcost.so.3.14.0, libgpopt.so.3.14.0, libgpos.so.3.14.0, libnaucrates.so.3.14.0
PROJECT imports(): Copied 1 '.md' file: README.md
PROJECT imports(): Copied 4 '.3' files: libnaucrates.so.3, libgpopt.so.3, libgpos.so.3, libgpdbcost.so.3
PROJECT imports(): Copied 4 '.so' files: libgpopt.so, libnaucrates.so, libgpdbcost.so, libgpos.so

===================================================================
Orca can now be installed on the local system using "make install"
and be used as any normal system library

If you'd rather compile GPDB using ORCA in it's current location and then
install ORCA into the gpdb installation location then first run the top
level configure as follows:
LD_LIBRARY_PATH=/root/gpdb-5.15.1/depends/build/lib ./configure \ 
    --with-libraries=/root/gpdb-5.15.1/depends/build/lib \ 
    --with-includes=/root/gpdb-5.15.1/depends/build/include 

Then run "make".
Then run "LD_LIBRARY_PATH=/root/gpdb-5.15.1/depends/build/lib make install"

These steps should work on both MacOS and Linux
[root@spa-42-185-112 depends]# make install_local
CONAN_USER_HOME=/root/gpdb-5.15.1/depends conan install --build=missing conanfile_orca.txt
Configuration:
[settings]
os=Linux
os_build=Linux
arch=x86_64
arch_build=x86_64
compiler=gcc
compiler.version=4.8
compiler.libcxx=libstdc++
build_type=Release
[options]
[build_requires]
[env]

PROJECT: Installing /root/gpdb-5.15.1/depends/conanfile_orca.txt
Requirements
    orca/v3.14.0@gpdb/stable from 'gpdb-oss' - Cache
Packages
    orca/v3.14.0@gpdb/stable:4f7d6d5032b1a188f98e0c149ef6bf91e76af63e - Cache

orca/v3.14.0@gpdb/stable: Already installed!
PROJECT: Generator txt created conanbuildinfo.txt
PROJECT: Generated conaninfo.txt
PROJECT imports(): Copied 1070 '.h' files: 
PROJECT imports(): Copied 4 '.0' files: libgpdbcost.so.3.14.0, libgpopt.so.3.14.0, libgpos.so.3.14.0, libnaucrates.so.3.14.0
PROJECT imports(): Copied 1 '.md' file: README.md
PROJECT imports(): Copied 4 '.3' files: libnaucrates.so.3, libgpopt.so.3, libgpos.so.3, libgpdbcost.so.3
PROJECT imports(): Copied 4 '.so' files: libgpopt.so, libnaucrates.so, libgpdbcost.so, libgpos.so

===================================================================
Orca can now be installed on the local system using "make install"
and be used as any normal system library

If you'd rather compile GPDB using ORCA in it's current location and then
install ORCA into the gpdb installation location then first run the top
level configure as follows:
LD_LIBRARY_PATH=/root/gpdb-5.15.1/depends/build/lib ./configure \ 
    --with-libraries=/root/gpdb-5.15.1/depends/build/lib \ 
    --with-includes=/root/gpdb-5.15.1/depends/build/include 

Then run "make".
Then run "LD_LIBRARY_PATH=/root/gpdb-5.15.1/depends/build/lib make install"

These steps should work on both MacOS and Linux
/usr/bin/mkdir -p /usr/local
cp -R build/* /usr/local
[root@spa-42-185-112 depends]# cd ..
[root@spa-42-185-112 gpdb-5.15.1]# ./configure --with-perl --with-python --with-libxml --with-gssapi --prefix=/usr/local/gpdb
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking which template to use... linux
checking whether to build with 64-bit integer date/time support... yes
checking for default port number... 5432
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for __get_cpuid... yes
checking for __cpuid... no
checking for _mm_crc32_u8 and _mm_crc32_u32 with CFLAGS=... no
checking for _mm_crc32_u8 and _mm_crc32_u32 with CFLAGS=-msse4.2... yes
checking which CRC-32C implementation to use... SSE 4.2 with runtime check
checking if gcc supports -Wendif-labels... yes
checking if gcc supports -Wformat-security... yes
checking if gcc supports -fno-strict-aliasing... yes
checking if gcc supports -fwrapv... yes
checking if gcc supports -fexcess-precision=standard... yes
checking if gcc supports -fno-aggressive-loop-optimizations... yes
checking if gcc supports -Wno-unused-but-set-variable... yes
checking if gcc supports -Wno-address... yes
checking whether gcc supports -funroll-loops... yes
checking whether gcc supports -ftree-vectorize... yes
checking whether gcc supports -Wunused-command-line-argument... no
checking whether gcc supports -Wformat-truncation... no
checking whether gcc supports -Wstringop-truncation... no
checking whether the C compiler still works... yes
checking if g++ supports -O3... yes
checking if g++ supports -std=gnu99... no
checking if g++ supports -Wall... yes
checking if g++ supports -Wmissing-prototypes... no
checking if g++ supports -Wpointer-arith... yes
checking if g++ supports -Wendif-labels... yes
checking if g++ supports -Wformat-security... yes
checking if g++ supports -fno-strict-aliasing... yes
checking if g++ supports -fwrapv... yes
checking if g++ supports -fexcess-precision=standard... no
checking if g++ supports -fno-aggressive-loop-optimizations... yes
checking if g++ supports -Wno-unused-but-set-variable... yes
checking if g++ supports -Wno-address... yes
checking how to run the C preprocessor... gcc -E
checking whether to build with ORCA... yes
checking whether to build with snmp... no
checking whether to build with DD Boost support... no
checking whether to build with NetBackup support... no
checking whether to build with Greenplum Mapreduce... no
checking whether to build with gpcloud... yes
checking whether g++ supports C++11 features by default... no
checking whether g++ supports C++11 features with -std=c++11... yes
checking allow thread-safe client libraries... yes
checking whether to build with Tcl... no
checking whether to build Perl modules... yes
checking whether to build Python modules... yes
checking whether to build with GSSAPI support... yes
checking whether to build with Kerberos 5 support... no
checking whether to build with PAM support... no
checking whether to build with LDAP support... no
checking whether to build with Bonjour support... no
checking whether to build with OpenSSL support... no
checking for xml2-config... xml2-config
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
configure: using CPPFLAGS= -D_GNU_SOURCE -I/usr/include/libxml2 
configure: using LDFLAGS= 
checking for ld used by GCC... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for ranlib... ranlib
checking for strip... strip
checking whether it is possible to strip libraries... yes
checking for ar... ar
checking for tar... /usr/bin/tar
checking whether ln -s works... yes
checking for gawk... gawk
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for bison... bison
configure: using bison (GNU Bison) 2.7
checking for flex... /usr/bin/flex
configure: using flex 2.5.37
checking for perl... /usr/bin/perl
configure: using perl 5.16.3
checking for Perl archlibexp... /usr/lib64/perl5
checking for Perl privlibexp... /usr/share/perl5
checking for Perl useshrplib... true
checking for flags to link embedded Perl...   -fstack-protector  -L/usr/lib64/perl5/CORE -lperl -lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
checking for python... /usr/bin/python
checking for Python distutils module... yes
checking Python configuration directory... /usr/lib64/python2.7/config
checking how to link an embedded Python application... -L/usr/lib64 -lpython2.7 -lpthread -ldl  -lutil -lm
checking whether Python is compiled with thread support... yes
checking for main in -lm... yes
checking for library containing setproctitle... no
checking for library containing dlopen... -ldl
checking for library containing socket... none required
checking for library containing shl_load... no
checking for library containing getopt_long... none required
checking for library containing crypt... -lcrypt
checking for library containing fdatasync... none required
checking for library containing gethostbyname_r... none required
checking for library containing shmget... none required
checking for -ledit... no
checking for -lreadline... yes (-lreadline)
checking for inflate in -lz... yes
checking for library containing gss_init_sec_context... -lgssapi_krb5
checking for apr-1-config... /usr/bin/apr-1-config
configure: using apr-1-config 1.4.8
checking for library containing apr_getopt_long... none required
checking for library containing event_add... -levent
checking for library containing yaml_parser_initialize... no
configure: WARNING: libyaml is not found. disabling transformations for gpfdist.
checking for clock_gettime in -lrt... yes
checking for xmlSaveToBuffer in -lxml2... yes
checking for curl-config... /usr/bin/curl-config
checking for curl >= 7.19.0... yes
checking CURL_CFLAGS... 
checking CURL_LIBS... -lcurl  
checking whether CURLOPT_MAIL_FROM is declared... yes
checking for library containing BZ2_bzDecompress... no
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
./configure: line 12043: #include: command not found
checking how to run the C++ preprocessor... g++ -std=c++11 -E
checking gpos/_api.h usability... yes
checking gpos/_api.h presence... yes
checking for gpos/_api.h... yes
checking naucrates/init.h usability... yes
checking naucrates/init.h presence... yes
checking for naucrates/init.h... yes
checking gpopt/init.h usability... yes
checking gpopt/init.h presence... yes
checking for gpopt/init.h... yes
checking gpdbcost/CCostModelGPDB.h usability... yes
checking gpdbcost/CCostModelGPDB.h presence... yes
checking for gpdbcost/CCostModelGPDB.h... yes
checking for strnicmp in -lxerces-c... yes
checking for Xerces-C... checking for gpos_init in -lgpos... yes
checking for main in -lgpdbcost... yes
checking for InitDXL in -lnaucrates... yes
checking for gpopt_init in -lgpopt... yes
checking Checking ORCA version... configure: error: Your ORCA version is expected to be 3.14.XXX
[root@spa-42-185-112 gpdb-5.15.1]# 

Duplicate preprocess steps

Preprocess step (13) factorize common expressions already contains step (9) unnest AND/OR/NOT predicates and step (12) remove duplicate AND/OR children. It looks redundant to me. Should we remove step (9) and (12)?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.