mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Add a PQfireResultCreateEvents function to allow applications to mimic the
sequence of operations that libpq goes through while creating a PGresult. Also, remove ill-considered "const" decoration on parameters passed to event procedures.
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
# $PostgreSQL: pgsql/src/interfaces/libpq/exports.txt,v 1.20 2008/09/17 04:31:08 tgl Exp $
|
||||
# $PostgreSQL: pgsql/src/interfaces/libpq/exports.txt,v 1.21 2008/09/19 20:06:13 tgl Exp $
|
||||
# Functions to be exported by libpq DLLs
|
||||
PQconnectdb 1
|
||||
PQsetdbLogin 2
|
||||
@ -150,3 +150,4 @@ PQinstanceData 147
|
||||
PQsetInstanceData 148
|
||||
PQresultInstanceData 149
|
||||
PQresultSetInstanceData 150
|
||||
PQfireResultCreateEvents 151
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/interfaces/libpq/libpq-events.c,v 1.2 2008/09/19 16:40:40 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/interfaces/libpq/libpq-events.c,v 1.3 2008/09/19 20:06:13 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -175,3 +175,35 @@ PQresultInstanceData(const PGresult *result, PGEventProc proc)
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Fire RESULTCREATE events for an application-created PGresult.
|
||||
*
|
||||
* The conn argument can be NULL if event procedures won't use it.
|
||||
*/
|
||||
int
|
||||
PQfireResultCreateEvents(PGconn *conn, PGresult *res)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!res)
|
||||
return FALSE;
|
||||
|
||||
for (i = 0; i < res->nEvents; i++)
|
||||
{
|
||||
if (!res->events[i].resultInitialized)
|
||||
{
|
||||
PGEventResultCreate evt;
|
||||
|
||||
evt.conn = conn;
|
||||
evt.result = res;
|
||||
if (!res->events[i].proc(PGEVT_RESULTCREATE, &evt,
|
||||
res->events[i].passThrough))
|
||||
return FALSE;
|
||||
|
||||
res->events[i].resultInitialized = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/interfaces/libpq/libpq-events.h,v 1.1 2008/09/17 04:31:08 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/interfaces/libpq/libpq-events.h,v 1.2 2008/09/19 20:06:13 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -36,22 +36,22 @@ typedef enum
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const PGconn *conn;
|
||||
PGconn *conn;
|
||||
} PGEventRegister;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const PGconn *conn;
|
||||
PGconn *conn;
|
||||
} PGEventConnReset;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const PGconn *conn;
|
||||
PGconn *conn;
|
||||
} PGEventConnDestroy;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const PGconn *conn;
|
||||
PGconn *conn;
|
||||
PGresult *result;
|
||||
} PGEventResultCreate;
|
||||
|
||||
@ -63,7 +63,7 @@ typedef struct
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const PGresult *result;
|
||||
PGresult *result;
|
||||
} PGEventResultDestroy;
|
||||
|
||||
typedef int (*PGEventProc) (PGEventId evtId, void *evtInfo, void *passThrough);
|
||||
@ -84,6 +84,9 @@ extern int PQresultSetInstanceData(PGresult *result, PGEventProc proc, void *dat
|
||||
/* Gets the PGresult instance data for the provided proc. */
|
||||
extern void *PQresultInstanceData(const PGresult *result, PGEventProc proc);
|
||||
|
||||
/* Fires RESULTCREATE events for an application-created PGresult. */
|
||||
extern int PQfireResultCreateEvents(PGconn *conn, PGresult *res);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user