Its a fairly small change to add this, 10 lines of code. I wrote this
patch for a previous place, unfortunately I no longer work with Pg
regularly, and don't have time to clean it up and give you a proper patch

The interface is $pid=$dbh->func('backend_pid')

Unfortunately, I don't work with Pg often enough, but this should get you 
started:
in Pg.xs:

+void
+backend_pid(dbh)
+    SV *       dbh
+    CODE:
+    D_imp_dbh(dbh);
+
+    ST(0) = dbd_db_backend_pid(dbh, imp_dbh);

In dbdimp.c:

+int
+dbd_db_backend_pid (dbh, imp_dbh)
+    SV *dbh;
+    imp_dbh_t *imp_dbh;
+{
+    char id;
+    SV* retsv;
+
+    if (dbis->debug >= 1) { fprintf(DBILOGFP, "dbd_db_backend_pid\n"); }
+
+    return PQbackendPID(imp_dbh->conn);
+}


Good luck. Once it works, submit it to maintainer, will ya? ;)

-alex

On 13 Jun 2002, Jeff Boes wrote:

> On Thu, 2002-06-13 at 11:25, Jeff Boes wrote:
> > I may have asked this or seen this asked before, but my memory is poor
> > today: is there any way to know the process ID associated with the
> > database backend connected to a DBD::Pg database handle?
> 
> Further investigation shows:
> 
> The old 'Pg.pm' (pre-DBD days) had many more functions connected to the
> internal API.  In particular, Pg.xs of that day had
> 
>   int
>   PQbackendPID(conn)
>      PG_conn   conn
> 
> but as I'm not (yet) a hacker of XS, I can't figure out how to shoehorn
> this into DBD::Pg.  Any takers?
> 
> 
> 




Reply via email to