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

Where can I find the code for extern OidFunctionCall7?

From
arthernan
Date:
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
/* * Call index-access-method-specific code to estimate the processing cost * for scanning the index, as well as the
selectivityof the index (ie, * the fraction of main-table tuples we will have to retrieve) and its * correlation to the
main-tabletuple order. */OidFunctionCall7(index->amcostestimate,                 PointerGetDatum(root),
PointerGetDatum(path),                Float8GetDatum(loop_count),                 PointerGetDatum(&indexStartupCost),
             PointerGetDatum(&indexTotalCost),                 PointerGetDatum(&indexSelectivity),
PointerGetDatum(&indexCorrelation));



--
View this message in context:
http://postgresql.1045698.n5.nabble.com/Where-can-I-find-the-code-for-extern-OidFunctionCall7-tp5769737.html
Sent from the PostgreSQL - hackers mailing list archive at Nabble.com.



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

From
Robert Haas
Date:
On Thu, Sep 5, 2013 at 12:38 PM, arthernan <arthernan@hotmail.com> 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

Use 'git grep'.  It's a macro defined in fmgr.h.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



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

From
Alvaro Herrera
Date:
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



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

From
arthernan
Date:
Thank you guys!



--
View this message in context:
http://postgresql.1045698.n5.nabble.com/Where-can-I-find-the-code-for-extern-OidFunctionCall7-tp5769737p5769753.html
Sent from the PostgreSQL - hackers mailing list archive at Nabble.com.



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

From
arthernan
Date:
The comments on this sourcebase are really good, plus it is very well
structured!

I read somewhere that you can actually "store" an execution plan by using
stored procedures. If that is the case. I would imagine that variables would
prevent the histograms from being used. I don't mind finding the code
myself, but... Where is the code that does that switch? Clues are welcome
too!!



--
View this message in context:
http://postgresql.1045698.n5.nabble.com/Where-can-I-find-the-code-for-extern-OidFunctionCall7-tp5769737p5769800.html
Sent from the PostgreSQL - hackers mailing list archive at Nabble.com.



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

From
arthernan
Date:
Never mind I think I found it.



--
View this message in context:
http://postgresql.1045698.n5.nabble.com/Where-can-I-find-the-code-for-extern-OidFunctionCall7-tp5769737p5769801.html
Sent from the PostgreSQL - hackers mailing list archive at Nabble.com.