2006-11-01から1ヶ月間の記事一覧

Enterprise Server 5.0.30リリース

MySQL Enterprise Server 5.0.30がリリースされたようです。Enterprise Serverは旧"MySQL Network"の購入者のみが利用できるバイナリだと思いますが(ダウンロードにログインが必要)、ログインできる方は以下から落とすことができます。https://enterprise.m…

テーブルに付与されているインデックスの数を調べる

次はこれを知りたいのです。以下のようなhandler::index_type関数があるのですが、ここで投げるkey_numberを調べるには、というお話。 const char *index_type(uint key_number);とりあえずTABLEオブジェクトを取得したら、以下を辿ってget。 uint nkeys = t…

インデックスの型を調べる

テーブルオブジェクトを取得できて、付与されているインデックスの数も分かったら次はこれ。既に1個前のエントリで触れているように、handler::index_typeを使う。table->fileがhandlerへのポインタ。 table = open_table(thd, table_list, thd->mem_root, 0…

インデックスが対象とするカラムの名前を調べる

はいはい、お次はこれ。まーにょ! uint nkey_parts = key.key_parts; KEY_PART_INFO key_part; int j = 0; for (; j < nkey_parts; j++) { key_part = key.key_part[j]; uint16 fieldnr = key_part.fieldnr; Field *field; field = table->field[fieldnr-1]…

テーブルハンドラの判別

これは簡単。 handler *hndr; hndr = table->file; printf("table handler is %s\n", hndr->table_type());handlerオブジェクト自身に聞くと教えてくれます。 table handler is MyISAM

handler層の上からMI_KEYDEFとかに直接触りたい

って、やっぱりアーキテクチャ的に無理なんでしょうか。というか、そこでHandler APIですよ、という話なのカモ。TABLE->fileって何のことかと思って見たら、、、handler型ポインタだったし。

.dataセグメントにある構造体のメンバの値を書き換えることはできるか

悩んでいます。→とりあえずできました。オイラ的な最近の話題の一つとして、MySQLの文字コードのとある制御用フラグ(escape_with_backslash_is_dangerous)があるんですが、 CHARSET_INFO my_charset_sjis_japanese_ci= { 13,0,0, /* number */ MY_CS_COMPILE…

4.1.22 リリース

ですです。 http://lists.mysql.com/announce/419

xemacs+cscope

某氏が某所で以前「マウスでクリックぐりぐり行けます」とコメントされていて、前から気になっていたのでやってみました。設定は、適当にぐぐって見付かった.emacsファイルの書き方とかをあれこれ自分の.emacsファイルに追加したら、いつのまにか出来ていた…

dbやtableの名前の取得方法(続編)

こんな関数がありました。 make_db_list make_table_list でもって、コソコソ調べたら。。。THDを引数に取る関数を実装して、その中にこんな感じのコードを書くと、、、 List<char> files; INDEX_FIELD_VALUES idx_field_vals; bool with_i_schema; bool is_wild_v</char>…

TABLEオブジェクトの取得方法

データベース名やテーブル名を指定して、TABLEオブジェクトを取得することができます。 make_table_list(thd, &(thd->lex->select_lex), db_name, tbl_name);このmake_table_list関数を呼ぶと、select_lexの中にあるTABLES_LISTにTABLEオブジェクトが追加さ…

接続中のデータベース名の取得方法

次は、どーやったら接続中のデータベース名を取得できるかについてです。これは簡単。 printf("current db is %s\n", thd->db);THDオブジェクトの中にdbというメンバが居て、そいつが情報を持ってます。 current db is test

テーブル名の取得方法

MySQL内部でテーブル名を取得するにはどうしたらいいのでしょう・・・? JavaEEで言うところのApplication Contextみたいなのってどうなってるのかな。JOIN::prepareの時点で既にTABLE_LISTを持っているので、それより前の段階でテーブルを探してきてるはず…

こまめにdiffを取るとか、あるいはローカルのsvnにいれておくとか

下のエントリでタッチパッドの無効化について書いていると思いますが、実はこの「冬の静電気+タッチパッドによるqあwせdrftgyふじこlp;@:」によって、どうも開発中のソースが壊れてしまったようなのです。ビルドして起動するとすると謎のstack over flowが…

ccacheによるビルドの高速化

うちがmysqlのhackをする場合、ビルドに関して多いのは、 hack用途に合った./configure呼び出しシェルスクリプトを作成して、それ経由で./configureを呼び出し 最初にクリーンな状態でmake make install mysql_install_dbとか流してmysqldを起動できるように…

TAGSファイル作成

単に、ソースディレクトリで、 make TAGSとやればおkだった模様です。ここに、Linux Kernelソースは"make TAGS"と書いてあったので、MySQLでも出来るのではと思って試したらできました。 http://blog.miraclelinux.com/ctd/2006/10/emacs__3561.html

関数ポインタにbreakpointを入れる

gdb

ステップ実行中に関数ポインタ経由での呼び出しに出くわす場面というのがあり・・・。その関数の中身が怪しいので調べようと思いつつも、実体の名前が分からないのでbreakpointを入れれない、そんなときは〜〜〜 p stmt->set_params (set_params関数ポインタ…

ムカツクあいつ(TouchPad)を倒すには

この記事書いた人、ネ申「Disable Synaptics Touchpad 」(Synaptics製タッチパッドの無効化方法) http://ubuntu.wordpress.com/2006/03/24/disable-synaptics-touchpad/最近、静電気のせいなのか、触れて無くて、1cmくらい離れてるのに勝手にポインタが動…

読書会に行ってきます

http://d.hatena.ne.jp/hyoshiok/20061120#p1うちが参加させていただくのは今回で2回目でしょうか。お題が個人的にアレゲだったので(分岐命令トレーサbtarx、システムコールトレーサkstraxの紹介)、猫大好きな勢いで登録してしまいましたー!

新しいOSSプロジェクト

始めました。いまリリース物作ってます。READMEとかLICENSECOPYINGとか。そのうち告知します。ふふふ。で、バージョン名どうしよう、とかまた早速悩む。日付にするか、レポジトリのリビジョンにするか。。。リリース物自体はpatchファイルなので、これにバー…

SolidDBはOEM

MyNAのMLにて最近SolidDBが話題となっていますが、これはMySQL ABはバックサポートのみのOEMプロダクトということなんだそうな。うらやましす。

システム変数を追加するパッチコード

MySQLにシステム変数を2つほど追加するパッチを作成し、"diff -Nurd"してみたら、250行以上になってしまって驚いた。実装コードそのものは50行程度なのだけれども。複数ファイル・複数箇所に細かく追記しているからかなー。いちおう、他のシステム変数と同…

見た!

新宿西口、ヨドバシカメラ付近で小池栄子を見たよー。レポーターっぽい女の子と、スタッフっぽい人達6人くらいと話しながら歩いてた。背が高くて、遠くからも一目でわかるね。存在感ありあり。

昨夜の教訓

ヘッダファイルとかにあるデータ構造をいじったら(構造体のメンバ追加・削除等)一度、"make clean"を必ず実行する。それをやらないで単にmakeだけすると、オブジェクトファイル間で構造体に違いが生じてSIGSEGV落ちするようになる場合がある。しかもcoreフ…

mallocをラップするマクロ

検索するといろいろ出てくる。何をどう使ったらいいかね〜、解からん〜とりあえずmyisamに倣って、my_mallocとmy_freeをつかっておこうかな。 #define my_malloc(SZ,FLAG) _mymalloc((SZ), __FILE__, __LINE__, FLAG ) #define my_malloc_ci(SZ,FLAG) _mymal…

BINARY HACK

予約しておいたのがうちにも来ましたよ。Binary Hacks ―ハッカー秘伝のテクニック100選作者: 高林哲,鵜飼文敏,佐藤祐介,浜地慎一郎,首藤一幸出版社/メーカー: オライリー・ジャパン発売日: 2006/11/14メディア: 単行本(ソフトカバー)購入: 23人 クリック: …

etags for MySQL

なんだかよくわからないけど出来たっぽいのでメモしておきます。順番に注意。 cd $MYSQL_SRC find . -name '*.i' | etags - find . -name '*.h' | etags - -a find . -name '*.ic' | etags - -a find . -name '*.c' | etags - -a find . -name '*.cc' | etag…

my_bool

etagsを使えるようになってやっとWindows並に便利になってきた>ubuntu。my_bool型の変数を(なんとなく)定義して使ってたのだけれども、これって、 (mysql.hにて) typedef char my_bool;charだったのかー。ちなみにboolっていう型もある。使い分けは今のと…

GNU開発ツール

スラドでも紹介されていた『GNU開発ツール』ですが、 http://slashdot.jp/books/article.pl?sid=06/08/23/1344251最近やっと読み出すことができて、昨日読み終わりました。今まで知らなかったbinary2.0的な話がかなり載っていて、良かったス。電車の移動中に…

ドメイン名契約更新

ikda.netの契約更新をしましたー! まあぼちぼち使っているので維持しようかなと。