| PostgreSQL Reference Manual - Volume 3 - Server Administration Guide by The PostgreSQL Global Development Group Paperback (6"x9"), 204 pages ISBN 0954612043 RRP £13.95 ($24.95) Sales of this book support the PostgreSQL project! Get a printed copy>>> |
12.4.4 Defining Trace Points
New trace points can be defined within the code wherever the developer desires, though this will require a recompilation.
A trace point can be inserted by using one of the trace macros. These are chosen according to how many variables will be made available for inspection at that trace point. Tracing the occurrence of an event can be achieved with a single line, using just the trace point name, e.g.
PG_TRACE (my__new__trace__point);
More complex trace points can be provided with one or more variables
for inspection by the dynamic tracing utility by using the
PG_TRACEn macro that corresponds to the number
of parameters after the trace point name:
PG_TRACE3 (my__complex__event, varX, varY, varZ);
The definition of the transaction__start trace point is shown below:
static void
StartTransaction(void)
{
...
/*
* generate a new transaction id
*/
s->transactionId = GetNewTransactionId(false);
XactLockTableInsert(s->transactionId);
PG_TRACE1(transaction__start, s->transactionId);
...
}
Note how the transaction ID is made available to the dynamic tracing utility.
The dynamic tracing utility may require you to further define these trace points. For example, DTrace requires you to add new probes to the file ‘src/backend/utils/probes.d’ as shown here:
provider postgresql {
...
probe transaction__start(int);
...
};
You should take care that the data types specified for the probe arguments
match the datatypes of the variables used in the PG_TRACE
macro. This is not checked at compile time. You can check that your newly
added trace point is available by recompiling, then running the new binary,
and as root, executing a DTrace command such as:
dtrace -l -n transaction-start
| ISBN 0954612043 | PostgreSQL Reference Manual - Volume 3 - Server Administration Guide | See the print edition |