From 324c3f7debd1e0bdeca1e501a942bf733d9027ae Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Mon, 29 Jan 2018 11:13:52 +0900 Subject: [PATCH] fix type of event code fixes #520 --- _example/trace/main.go | 2 +- sqlite3_trace.go | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/_example/trace/main.go b/_example/trace/main.go index 9f83ee1..bef3d15 100644 --- a/_example/trace/main.go +++ b/_example/trace/main.go @@ -95,7 +95,7 @@ func main() { ConnectHook: func(conn *sqlite3.SQLiteConn) error { err := conn.SetTrace(&sqlite3.TraceConfig{ Callback: traceCallback, - EventMask: uint(eventMask), + EventMask: eventMask, WantExpandedSQL: true, }) return err diff --git a/sqlite3_trace.go b/sqlite3_trace.go index ece6035..8f90a56 100644 --- a/sqlite3_trace.go +++ b/sqlite3_trace.go @@ -28,10 +28,10 @@ import ( // Trace... constants identify the possible events causing callback invocation. // Values are same as the corresponding SQLite Trace Event Codes. const ( - TraceStmt = C.SQLITE_TRACE_STMT - TraceProfile = C.SQLITE_TRACE_PROFILE - TraceRow = C.SQLITE_TRACE_ROW - TraceClose = C.SQLITE_TRACE_CLOSE + TraceStmt = uint32(C.SQLITE_TRACE_STMT) + TraceProfile = uint32(C.SQLITE_TRACE_PROFILE) + TraceRow = uint32(C.SQLITE_TRACE_ROW) + TraceClose = uint32(C.SQLITE_TRACE_CLOSE) ) type TraceInfo struct { @@ -71,7 +71,7 @@ type TraceUserCallback func(TraceInfo) int type TraceConfig struct { Callback TraceUserCallback - EventMask C.uint + EventMask uint32 WantExpandedSQL bool } @@ -105,6 +105,8 @@ func traceCallbackTrampoline( // Parameter named 'X' in SQLite docs (eXtra event data?): xValue unsafe.Pointer) C.int { + eventCode := uint32(traceEventCode) + if ctx == nil { panic(fmt.Sprintf("No context (ev 0x%x)", traceEventCode)) } @@ -114,7 +116,7 @@ func traceCallbackTrampoline( var traceConf TraceConfig var found bool - if traceEventCode == TraceClose { + if eventCode == TraceClose { // clean up traceMap: 'pop' means get and delete traceConf, found = popTraceMapping(connHandle) } else { @@ -123,16 +125,16 @@ func traceCallbackTrampoline( if !found { panic(fmt.Sprintf("Mapping not found for handle 0x%x (ev 0x%x)", - connHandle, traceEventCode)) + connHandle, eventCode)) } var info TraceInfo - info.EventCode = uint32(traceEventCode) + info.EventCode = eventCode info.AutoCommit = (int(C.sqlite3_get_autocommit(contextDB)) != 0) info.ConnHandle = connHandle - switch traceEventCode { + switch eventCode { case TraceStmt: info.StmtHandle = uintptr(p) @@ -183,7 +185,7 @@ func traceCallbackTrampoline( // registering this callback trampoline with SQLite --- for cleanup. // In the future there may be more events forced to "selected" in SQLite // for the driver's needs. - if traceConf.EventMask&traceEventCode == 0 { + if traceConf.EventMask&eventCode == 0 { return 0 }