2022-05-04 dbpack核心流程追踪

本文详细解析了dbpack中关键函数processAfterInsert的工作流程,涉及mysql过滤器的PostHandle和ExecutorComStmtExecute,展示了从数据插入到处理后的完整路径,有助于理解dbpack在数据库操作中的内部逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要:

记录dbpack核心流程

核心函数:

processAfterInsert


Thread 7 "dbpack" hit Breakpoint 1, github.com/cectc/dbpack/pkg/filter/dt.(*_mysqlFilter).processAfterInsert (f=0xc00051fb80, ctx=..., conn=0xc0003e6e00, result=..., stmt=0xc000578b80, 
    insertStmt=0xc0004dfd40, ~r0=...) at /root/work/dbpack/pkg/filter/dt/filter_mysql.go:244
244		log.Debugf("insert, branch id: %d", branchID)
(gdb) bt
#0  github.com/cectc/dbpack/pkg/filter/dt.(*_mysqlFilter).processAfterInsert (f=0xc00051fb80, ctx=..., conn=0xc0003e6e00, result=..., stmt=0xc000578b80, insertStmt=0xc0004dfd40, ~r0=...)
    at /root/work/dbpack/pkg/filter/dt/filter_mysql.go:244
#1  0x0000000001649dc5 in github.com/cectc/dbpack/pkg/filter/dt.(*_mysqlFilter).PostHandle (f=0xc00051fb80, ctx=..., result=..., conn=..., ~r0=...) at /root/work/dbpack/pkg/filter/dt/filter_mysql.go:129
#2  0x00000000010f6efb in github.com/cectc/dbpack/pkg/sql.(*DB).doConnectionPostFilter (db=0xc000661a40, ctx=..., result=..., conn=..., ~r0=...) at /root/work/dbpack/pkg/sql/db.go:227
#3  0x00000000010f85f9 in github.com/cectc/dbpack/pkg/sql.(*Tx).ExecuteStmt (tx=0xc00000d908, ctx=..., stmt=0xc000578b80, ~r0=..., ~r1=0, ~r2=...) at /root/work/dbpack/pkg/sql/tx.go:64
#4  0x0000000001640d9c in github.com/cectc/dbpack/pkg/executor.(*SingleDBExecutor).ExecutorComStmtExecute (executor=0xc00051c5f0, ctx=..., stmt=0xc000578b80, ~r0=..., ~r1=0, ~r2=...)
    at /root/work/dbpack/pkg/executor/single_db.go:204
#5  0x000000000170f965 in github.com/cectc/dbpack/pkg/listener.(*MysqlListener).ExecuteCommand.func2 (c=0xc0002920f0, l=0xc0003de150, data=..., ctx=..., commandType=23 '\027', ~r0=...)
    at /root/work/dbpack/pkg/listener/mysql.go:691
#6  0x000000000170e638 in github.com/cectc/dbpack/pkg/listener.(*MysqlListener).ExecuteCommand (l=0xc0003de150, ctx=..., c=0xc0002920f0, data=..., ~r0=...) at /root/work/dbpack/pkg/listener/mysql.go:723
#7  0x000000000170a4d1 in github.com/cectc/dbpack/pkg/listener.(*MysqlListener).handle (l=0xc0003de150, conn=..., connectionID=1) at /root/work/dbpack/pkg/listener/mysql.go:195
#8  0x0000000001709bf3 in github.com/cectc/dbpack/pkg/listener.(*MysqlListener).Listen.func1 () at /root/work/dbpack/pkg/listener/mysql.go:141
#9  0x000000000046b641 in runtime.goexit () at /usr/local/go/src/runtime/asm_amd64.s:1571
#10 0x0000000000000000 in ?? ()

ExecutorComQuery

(gdb) bt
#0  github.com/cectc/dbpack/pkg/executor.(*SingleDBExecutor).ExecutorComQuery (executor=0xc00051c5f0, ctx=..., sql=..., ~r0=..., ~r1=0, ~r2=...) at /root/work/dbpack/pkg/executor/single_db.go:138
#1  0x000000000171074d in github.com/cectc/dbpack/pkg/listener.(*MysqlListener).ExecuteCommand.func1 (c=0xc00051d270, data=..., l=0xc0003de150, ctx=..., commandType=3 '\003', ~r0=...)
    at /root/work/dbpack/pkg/listener/mysql.go:554
#2  0x000000000170d6e5 in github.com/cectc/dbpack/pkg/listener.(*MysqlListener).ExecuteCommand (l=0xc0003de150, ctx=..., c=0xc00051d270, data=..., ~r0=...) at /root/work/dbpack/pkg/listener/mysql.go:585
#3  0x000000000170a4d1 in github.com/cectc/dbpack/pkg/listener.(*MysqlListener).handle (l=0xc0003de150, conn=..., connectionID=2) at /root/work/dbpack/pkg/listener/mysql.go:195
#4  0x0000000001709bf3 in github.com/cectc/dbpack/pkg/listener.(*MysqlListener).Listen.func1 () at /root/work/dbpack/pkg/listener/mysql.go:141
#5  0x000000000046b641 in runtime.goexit () at /usr/local/go/src/runtime/asm_amd64.s:1571
#6  0x0000000000000000 in ?? ()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟世者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值