From 301510cf4f2cc305d7fd38a6a10b07372e405a1a Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 10 May 2024 11:56:42 +0800 Subject: [PATCH] 1 --- dbpool.go | 67 ++++++++++--------------------------------------------- 1 file changed, 12 insertions(+), 55 deletions(-) diff --git a/dbpool.go b/dbpool.go index 98a8fa3..aa1ecc8 100644 --- a/dbpool.go +++ b/dbpool.go @@ -94,33 +94,8 @@ func (this *dbPool) SelectCustomQuery(dataSource string, sql string, cb QueryRes } func (this *dbPool) SyncSelectCustomQuery(dataSource string, sql string, cb QueryResultCb) { - chDone := make(chan bool) - chCbDone := make(chan bool) params := []string{} - var e error - var d *DataSet - go this.internalQueryNoMainThread(dataSource, sql, params, - func(err error, ds *DataSet) { - e = err - d = ds - chDone <- true - for { - select { - case <-chCbDone: - close(chCbDone) - return - } - } - }) - for { - select { - case <-chDone: - close(chDone) - cb(e, d) - chCbDone <- true - return - } - } + this.syncInternalQuery(dataSource, sql, params, cb) } func (this *dbPool) SyncBatchLoadFullTable(dataSource string, sqlTpl string, @@ -417,6 +392,16 @@ func (this *dbPool) internalExec(dataSource string, sql string, params []string, func (this *dbPool) internalQuery(dataSource string, sql string, params []string, cb QueryResultCb) { + this.internalQueryEx(dataSource, sql, params, cb, false) +} + +func (this *dbPool) syncInternalQuery(dataSource string, sql string, params []string, + cb QueryResultCb) { + this.internalQueryEx(dataSource, sql, params, cb, true) +} + +func (this *dbPool) internalQueryEx(dataSource string, sql string, params []string, + cb QueryResultCb, noMainThread bool) { ds := this.borrowConn(dataSource) if ds == nil { cb(errors.New("borrowConn error"), nil) @@ -442,7 +427,7 @@ func (this *dbPool) internalQuery(dataSource string, sql string, params []string if this.style == GO_STYLE_DB { defer freeFunc() cb(err, dataSet) - } else { + } else if !noMainThread { _app.RegisterMainThreadCb( func() { defer freeFunc() @@ -451,34 +436,6 @@ func (this *dbPool) internalQuery(dataSource string, sql string, params []string } } -func (this *dbPool) internalQueryNoMainThread(dataSource string, sql string, params []string, - cb QueryResultCb) { - ds := this.borrowConn(dataSource) - if ds == nil { - cb(errors.New("borrowConn error"), nil) - return - } - this.returnConn(ds) - rows, err := ds.conn.Query(sql, q5.ToInterfaces(params)...) - //this.returnConn(ds) - if err != nil { - GetSysLog().Warning("f5.dbpool.internalQueryNoMainThread error:%s sql:%s", err, sql) - } - - var dataSet *DataSet - if err == nil { - dataSet = NewDataSet(rows) - } - freeFunc := func () { - if dataSet != nil { - dataSet.close() - } - } - - defer freeFunc() - cb(err, dataSet) -} - func (this *dbPool) internalQueryOne(dataSource string, sql string, params []string, cb QueryOneCb) { ds := this.borrowConn(dataSource)