Arrange to cache the results of looking up a btree predicate proof comparison operator.  The result depends only on the two input operators and the proof direction (imply or refute), so it's easy to cache.  This provides a very large savings in cases such as Sergey Konoplev's long NOT-IN-list example, where predtest spends all its time repeatedly figuring out that the same pair of operators cannot be used to prove anything.  (But of course the O(N^2) behavior still catches up with you eventually.)  I'm not convinced it buys a whole lot when constraint_exclusion isn't turned on, but it's not a lot of added code so we might as well cache all the time.
Arrange to cache the results of looking up a btree predicate proof comparison
operator.  The result depends only on the two input operators and the proof
direction (imply or refute), so it's easy to cache.  This provides a very
large savings in cases such as Sergey Konoplev's long NOT-IN-list example,
where predtest spends all its time repeatedly figuring out that the same pair
of operators cannot be used to prove anything.  (But of course the O(N^2)
behavior still catches up with you eventually.)  I'm not convinced it buys
a whole lot when constraint_exclusion isn't turned on, but it's not a lot
of added code so we might as well cache all the time.

Postgres-XL/Postgres-XL,oberstet/postgres-xl,lisakowen/gpdb,oberstet/postgres-xl,lisakowen/gpdb,postmind-net/postgres-xl,Chibin/gpdb,snaga/postgres-xl,yazun/postgres-xl,tpostgres-projects/tPostgres,tpostgres-projects/tPostgres,yazun/postgres-xl,Chibin/gpdb,oberstet/postgres-xl,greenplum-db/gpdb,adam8157/gpdb,zeroae/postgres-xl,jmcatamney/gpdb,zeroae/postgres-xl,pavanvd/postgres-xl,pavanvd/postgres-xl,yuanzhao/gpdb,Chibin/gpdb,greenplum-db/gpdb,zeroae/postgres-xl,techdragon/Postgres-XL,xinzweb/gpdb,snaga/postgres-xl,yazun/postgres-xl,xinzweb/gpdb,Postgres-XL/Postgres-XL,adam8157/gpdb,snaga/postgres-xl,50wu/gpdb,arcivanov/postgres-xl,yuanzhao/gpdb,ashwinstar/gpdb,50wu/gpdb,greenplum-db/gpdb,pavanvd/postgres-xl,50wu/gpdb,yuanzhao/gpdb,edespino/gpdb,greenplum-db/gpdb,yuanzhao/gpdb,jmcatamney/gpdb,postmind-net/postgres-xl,tpostgres-projects/tPostgres,ashwinstar/gpdb,edespino/gpdb,snaga/postgres-xl,jmcatamney/gpdb,arcivanov/postgres-xl,kmjungersen/PostgresXL,ashwinstar/gpdb,ovr/postgres-xl,arcivanov/postgres-xl,techdragon/Postgres-XL,ashwinstar/gpdb,adam8157/gpdb,xinzweb/gpdb,kmjungersen/PostgresXL,lisakowen/gpdb,kmjungersen/PostgresXL,xinzweb/gpdb,ovr/postgres-xl,50wu/gpdb,jmcatamney/gpdb,zeroae/postgres-xl,kmjungersen/PostgresXL,tpostgres-projects/tPostgres,adam8157/gpdb,Chibin/gpdb,pavanvd/postgres-xl,yuanzhao/gpdb,ashwinstar/gpdb,lisakowen/gpdb,50wu/gpdb,xinzweb/gpdb,yuanzhao/gpdb,yuanzhao/gpdb,techdragon/Postgres-XL,greenplum-db/gpdb,Postgres-XL/Postgres-XL,Postgres-XL/Postgres-XL,edespino/gpdb,ovr/postgres-xl,tpostgres-projects/tPostgres,edespino/gpdb,jmcatamney/gpdb,postmind-net/postgres-xl,Chibin/gpdb,postmind-net/postgres-xl,Chibin/gpdb,adam8157/gpdb,lisakowen/gpdb,50wu/gpdb,adam8157/gpdb,edespino/gpdb,edespino/gpdb,oberstet/postgres-xl,greenplum-db/gpdb,Chibin/gpdb,yuanzhao/gpdb,xinzweb/gpdb,yuanzhao/gpdb,ovr/postgres-xl,arcivanov/postgres-xl,kmjungersen/PostgresXL,edespino/gpdb,arcivanov/postgres-xl,greenplum-db/gpdb,edespino/gpdb,techdragon/Postgres-XL,50wu/gpdb,ashwinstar/gpdb,lisakowen/gpdb,techdragon/Postgres-XL,jmcatamney/gpdb,yazun/postgres-xl,yuanzhao/gpdb,Chibin/gpdb,50wu/gpdb,Chibin/gpdb,edespino/gpdb,edespino/gpdb,arcivanov/postgres-xl,zeroae/postgres-xl,lisakowen/gpdb,yazun/postgres-xl,jmcatamney/gpdb,lisakowen/gpdb,ovr/postgres-xl,ashwinstar/gpdb,Chibin/gpdb,snaga/postgres-xl,xinzweb/gpdb,Postgres-XL/Postgres-XL,greenplum-db/gpdb,adam8157/gpdb,jmcatamney/gpdb,adam8157/gpdb,xinzweb/gpdb,ashwinstar/gpdb,postmind-net/postgres-xl,oberstet/postgres-xl,pavanvd/postgres-xl