On Mon, Oct 30, 2017 at 12:20 PM, Amit Langote <langote_amit...@lab.ntt.co.jp> wrote: > On 2017/10/30 14:55, Amit Langote wrote: >> Fixed in the attached updated patch, along with a new test in 0001 to >> cover this case. Also, made a few tweaks to 0003 and 0005 (moved some >> code from the former to the latter) around the handling of >> ScalarArrayOpExprs. > > Sorry, I'd forgotten to include some changes. > > In the previous versions, RT index of the table needed to be passed to > partition.c, which I realized is no longer needed, so I removed that > requirement from the interface. As a result, patches 0002 and 0003 have > changed in this version.
Some Minor comments: + * get_rel_partitions + * Return the list of partitions of rel that pass the clauses mentioned + * rel->baserestrictinfo + * + * Returned list contains the AppendRelInfos of chosen partitions. + */ +static List * +get_append_rel_partitions(PlannerInfo *root, Function name in function header is not correct. + !DatumGetBool(((Const *) clause)->constvalue)) + { + *constfalse = true; + continue; DatumGetBool will return true if the first byte of constvalue is nonzero otherwise false. IIUC, this is not the intention here. Or I am missing something? + * clauses in this function ourselves, for example, having both a > 1 and + * a = 0 the list a = 0 the list -> a = 0 in the list +static bool +partkey_datum_from_expr(const Expr *expr, Datum *value) +{ + /* + * Add more expression types here as needed to support higher-level + * code. + */ + switch (nodeTag(expr)) + { + case T_Const: + *value = ((Const *) expr)->constvalue; + return true; I think for evaluating other expressions (e.g. T_Param) we will have to pass ExprContext to this function. Or we can do something cleaner because if we want to access the ExprContext inside partkey_datum_from_expr then we may need to pass it to "get_partitions_from_clauses" which is a common function for optimizer and executor. -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers