文字コード情報の保有場所
一つめ、上位層、st_table_share構造体@struct.h
typedef struct st_table_share { CHARSET_INFO *table_charset; /* 他省略 */ }
二つめ、上位層、Field_strクラス@field.h
class Field :public Field { protected: CHARSET_INFO *field_charset; public: CHARSET_INFO *charset(void) const { return field_charset; } /* 他省略 */ }
三つめ、myisam、いろいろ。
typedef struct st_mi_isam_share { MI_KEYDEF *keyinfo; /* Key definitions */ HA_KEYSEG *keyparts; /* key part info */ /* 他省略 */ } typedef struct st_mi_keydef { HA_KEYSEG *seg,*end; /* 他省略 */ } typedef struct st_HA_KEYSEG /* Key-portion */ { CHARSET_INFO *charset; /* 他省略 */ }
mi_create関数とかから触る場合には、HA_KEYSEGを見ればいいのかなー?
追記:20070111
HA_CREATE_INFOを構築する時に、Fieldオブジェクトとかに(server==>db==>table==>column)とマージされた最終的な文字コードがセットされている。これを見るのが一番楽っぽい。