Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9563
  • 博文数量: 5
  • 博客积分: 176
  • 博客等级: 入伍新兵
  • 技术积分: 80
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-08 18:25
文章分类

全部博文(5)

文章存档

2011年(5)

我的朋友

分类: Mysql/postgreSQL

2011-10-10 00:25:09

研读MySQL代码时,常常会碰到一些代码不符合自己的思维逻辑,或者根本弄不明白。
这时就需要有更多的历史信息来帮助我们理解代码。一个很有效的方法是,利用
bazaar annotate来找到引入该代码的revision,以及相关的历史信息。

例如,我想知道,是哪个revision引入了此函数,为什么要引入这个函数。
  1. bool sqlcom_can_generate_row_events(const THD *thd)
  2. {
  3.   return (sql_command_flags[thd->lex->sql_command] &
  4.           CF_CAN_GENERATE_ROW_EVENTS);
  5. }
通过 bzr annoate 来查找引入此代码的revision
  1. # bzr annotate --show-ids sql/sql_parse.cc >a
 a 中的内容如下
  1. 。。。。。。此处省略若干行
  2. alfranio.correia@sun.com-20100601232508-fo4ug9mfnc4vukmq | bool sqlcom_can_generate_row_events(const THD *thd)
  3.                                                          | {
  4.                                                          |    return (sql_command_flags[thd->lex->sql_command] &
  5.                                                          |            CF_CAN_GENERATE_ROW_EVENTS);
  6.                                                          | }
  7. 。。。。。。此处省略若干行
从中可以知道,引入此代码的patch的revision id 是“alfranio.correia@sun.com-20100601232508-fo4ug9mfnc4vukmq
然后查看此revision的日志

# bzr log -r alfranio.correia@sun.com-20100601232508-fo4ug9mfnc4vukmq
  1. ------------------------------------------------------------                                                                                                                         
    revno: 2995.24.2
    committer: Alfranio Correia
    branch nick: mysql-trunk-bugfixing
  2. timestamp: Wed 2010-06-02 00:25:08 +0100
    message:                                                                                                                                                                             
      BUG#50479 DDL stmt on row-only/stmt-only tables generate spurious binlog_format 
  3.   errors

  4.   In the fix of BUG#39934 in 5.1-rep+3, errors are generated when
      binlog_format=row and a statement modifies a table restricted to
      statement-logging (ER_BINLOG_ROW_MODE_AND_STMT_ENGINE); or if
      binlog_format=statement and a statement modifies a table restricted to
      row-logging (ER_BINLOG_STMT_MODE_AND_ROW_ENGINE).
                                                                                                                                                                                         
     
    。。。。。。此处省略若干行
Revision 日志通常包含了相关的bug号或者worklog号。通过这个ID,
我们可以在MySQL的上找到更多的信息。

另外,Rivision 日志中包含了patch作者的名字和Email。如果有必要,你可以联系作者本人
来帮中解答疑惑。

阅读(536) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:MySQL Code Primer Step I - Get MySQL Source Code

给主人留下些什么吧!~~