Re: Find if a function is being referenced in another function in the database

From: Sumeet Shukla <sumeet(dot)k(dot)shukla(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-admin <pgsql-admin(at)postgresql(dot)org>
Subject: Re: Find if a function is being referenced in another function in the database
Date: 2015-12-03 06:39:12
Message-ID: CABUL136a_R=LFS=82aJL2564ZZZtsC2aZKaxVbhp18aK+UzguA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin

Thank You for answering the query :-)

Thanks & Regards,
Sumeet Shukla
Ph. No. 962 323 4700

On Wed, Dec 2, 2015 at 8:35 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> Sumeet Shukla <sumeet(dot)k(dot)shukla(at)gmail(dot)com> writes:
> > Can someone guide me on how can I find if a given function is being
> > referenced by other functions in the same database. If being referenced
> > then a list of functions that are referencing it?
>
> Postgres does not track this in any way, because function bodies are for
> the most part just black boxes to the core database.
>
> As a first approximation, you could grep (LIKE/regexp search) the
> pg_proc.prosrc column for the names of functions you're interested in.
> This would have some problems with overloaded functions, and it's
> certainly possible to hide calls from it if you want to, but it's a start.
> Something like
>
> select s.proname as caller, t.proname as callee
> from pg_proc t, pg_proc s
> where s.prosrc ~ ('\W' || t.proname || '\(')
> and s.prolang > 13 and t.prolang > 13;
>
> (The prolang conditions exclude C/internal functions; this query will
> run quite a long time if you include those.)
>
> regards, tom lane
>

In response to

Browse pgsql-admin by date

  From Date Subject
Next Message Mark Steben 2015-12-04 13:29:30 Documentation on hacker prevention (OSP security flaws) requested
Previous Message Tom Lane 2015-12-03 03:36:15 Re: pg_dump aborts with triggers error