hi. in create_grouping_expr_infos tce = lookup_type_cache(exprType((Node *) tle->expr), TYPECACHE_BTREE_OPFAMILY); if (!OidIsValid(tce->btree_opf) || !OidIsValid(tce->btree_opintype)) return; .... /* * Get the operator in the btree's opfamily. */ eq_op = get_opfamily_member(tce->btree_opf, tce->btree_opintype, tce->btree_opintype, BTEqualStrategyNumber); if (!OidIsValid(eq_op)) return; eq_opfamilies = get_mergejoin_opfamilies(eq_op); if (!eq_opfamilies) return; btree_opfamily = linitial_oid(eq_opfamilies);
If eq_op is valid, then we don't need to call get_mergejoin_opfamilies? since get_mergejoin_opfamilies output will be the same as tce->btree_opf. and we already checked (tce->btree_opf) is valid. In other words, I think eq_op is valid imply that tce->btree_opf is the value (btree opfamily) we need.