Re: Where can I find the code for extern OidFunctionCall7?

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: arthernan <arthernan(at)hotmail(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Where can I find the code for extern OidFunctionCall7?
Date: 2013-09-05 16:46:14
Message-ID: 20130905164614.GB6067@eldon.alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

arthernan wrote:
> OidFunctionCall7 is called from costsize.c, in function void cost_index. From
> the comments, I understand that there is an indirection mechanism here to
> allow for different index access methods. Looking at fmgr.h where it is
> declared is not clear to me where I would ultimately find the code.
>
> Any pointers will be greatly appreciated

The code you're really looking for is the amcostestimate function of the
AM that the index uses. So if it's a btree you want btcostestimate, for
instance. You can see the AM definitions in the pg_am system catalog
and src/include/catalog/pg_am.h.

> /*
> * Call index-access-method-specific code to estimate the processing cost
> * for scanning the index, as well as the selectivity of the index (ie,
> * the fraction of main-table tuples we will have to retrieve) and its
> * correlation to the main-table tuple order.
> */
> OidFunctionCall7(index->amcostestimate,
> PointerGetDatum(root),
> PointerGetDatum(path),
> Float8GetDatum(loop_count),
> PointerGetDatum(&indexStartupCost),
> PointerGetDatum(&indexTotalCost),
> PointerGetDatum(&indexSelectivity),
> PointerGetDatum(&indexCorrelation));

--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2013-09-05 16:46:16 Re: Where can I find the code for extern OidFunctionCall7?
Previous Message Robert Haas 2013-09-05 16:44:18 Re: lcr v5 - introduction of InvalidCommandId