On Tue, Feb 27, 2018 at 4:33 AM, Amit Langote <langote_amit...@lab.ntt.co.jp> wrote: > Attached an updated version in which I incorporated some of the revisions > that David Rowley suggested to OR clauses handling (in partprune.c) that > he posted as a separate patch on the run-time pruning thread [1].
I'm very skeptical about this patch's desire to remove the static qualifier from evaluate_expr(). Why does this patch need that and constraint exclusion not need it? Why should this patch not instead by using eval_const_expressions? partkey_datum_from_expr() is prepared to give up if evaluate_expr() doesn't return a Const, but there's nothing in evaluate_expr() to make it give up if, for example, the input is -- or contains -- a volatile function, e.g. random(). + if (OidIsValid(get_default_oid_from_partdesc(partdesc))) + rel->has_default_part = true; + else + rel->has_default_part = false; This can be written a lot more compactly as rel->has_default_part = OidIsValid(get_default_oid_from_partdesc(partdesc)); PartitionPruneContext has no comment explaining its general purpose; I think it should. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company