UNIV_EXPECT

gccでは以下のように定義される。

# define UNIV_EXPECT(expr,constant) __builtin_expect(expr, constant)

__builtin_expectはプログラマが指定できる分岐予測の情報で、exprで指定した条件がconstantで指定した結果になる可能性が高いことをコンパイラに知らせる。
以下のマクロも定義されている。

#define UNIV_LIKELY_NULL(ptr) __builtin_expect((ulint) ptr, 0)
#define UNIV_LIKELY(cond) UNIV_EXPECT(cond, TRUE)
#define UNIV_UNLIKELY(cond) UNIV_EXPECT(cond, FALSE)

例:

if(UNIV_LIKELY(a == 1)) {
    /* こちらが実行される可能性が高い */
} else {
}

if(UNIV_UNLIKELY(a == 1)) {
} else {
    /* こちらが実行される可能性が高い */
}

mysqlinnodb間のカラムデータの変換

row_mysql_store_col_in_innobase_format (mysql->innobase)
row_sel_field_store_in_mysql_format (innobase->mysql)

mysqlinnodbでデータをやり取りするとき、カラムのデータ型を変換する関数。
integer型はmysqlはlittle endian、innobaseはbig endianなのでバイトオーダーを変換する。また、char型は後ろをスペースで埋める処理なども行っている。