This commit is contained in:
aozhiwei 2024-05-10 11:56:42 +08:00
parent 420c029154
commit 301510cf4f

View File

@ -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)