SQL Trace Hook

The sqlite3_trace_v2(D,M,X,P) interface registers a trace callback
function X against database connection D, using property mask M
and context pointer P. If the X callback is
NULL or if the M mask is zero, then tracing is disabled. The
M argument should be the bitwise OR-ed combination of
zero or more SQLITE_TRACE constants.

Each call to either sqlite3_trace() or sqlite3_trace_v2() overrides
(cancels) any prior calls to sqlite3_trace() or sqlite3_trace_v2().

The X callback is invoked whenever any of the events identified by
mask M occur. The integer return value from the callback is currently
ignored, though this may change in future releases. Callback
implementations should return zero to ensure future compatibility.

A trace callback is invoked with four arguments: callback(T,C,P,X).
The T argument is one of the SQLITE_TRACE
constants to indicate why the callback was invoked.
The C argument is a copy of the context pointer.
The P and X arguments are pointers whose meanings depend on T.