mirror of https://github.com/mattn/go-sqlite3.git
56 lines
1.7 KiB
Go
56 lines
1.7 KiB
Go
// +build !trace
|
|
|
|
package sqlite3
|
|
|
|
import "errors"
|
|
|
|
// Trace... constants identify the possible events causing callback invocation.
|
|
// Values are same as the corresponding SQLite Trace Event Codes.
|
|
const (
|
|
TraceStmt = uint32(0x01)
|
|
TraceProfile = uint32(0x02)
|
|
TraceRow = uint32(0x04)
|
|
TraceClose = uint32(0x08)
|
|
)
|
|
|
|
type TraceInfo struct {
|
|
// Pack together the shorter fields, to keep the struct smaller.
|
|
// On a 64-bit machine there would be padding
|
|
// between EventCode and ConnHandle; having AutoCommit here is "free":
|
|
EventCode uint32
|
|
AutoCommit bool
|
|
ConnHandle uintptr
|
|
|
|
// Usually filled, unless EventCode = TraceClose = SQLITE_TRACE_CLOSE:
|
|
// identifier for a prepared statement:
|
|
StmtHandle uintptr
|
|
|
|
// Two strings filled when EventCode = TraceStmt = SQLITE_TRACE_STMT:
|
|
// (1) either the unexpanded SQL text of the prepared statement, or
|
|
// an SQL comment that indicates the invocation of a trigger;
|
|
// (2) expanded SQL, if requested and if (1) is not an SQL comment.
|
|
StmtOrTrigger string
|
|
ExpandedSQL string // only if requested (TraceConfig.WantExpandedSQL = true)
|
|
|
|
// filled when EventCode = TraceProfile = SQLITE_TRACE_PROFILE:
|
|
// estimated number of nanoseconds that the prepared statement took to run:
|
|
RunTimeNanosec int64
|
|
}
|
|
|
|
type TraceUserCallback func(TraceInfo) int
|
|
|
|
type TraceConfig struct {
|
|
Callback TraceUserCallback
|
|
EventMask uint
|
|
WantExpandedSQL bool
|
|
}
|
|
|
|
// RegisterAggregator register the aggregator.
|
|
func (c *SQLiteConn) RegisterAggregator(name string, impl interface{}, pure bool) error {
|
|
return errors.New("This feature is not implemented")
|
|
}
|
|
|
|
func (c *SQLiteConn) SetTrace(requested *TraceConfig) error {
|
|
return errors.New("This feature is not implemented")
|
|
}
|