Go to the first, previous, next, last section, table of contents.


MySQL への関数の追加

MySQL への新しい関数の追加

mysql に新しい関数を追加するには2つの方法があります:

(SOUNDEX() のような) 新しいネイティブ MySQL 関数を追加するには、 次のことだけを行う必要があります:

  1. sql_lex.cc 内の sql_functions 配列内に関数名を定義する1行 を追加して下さい。
  2. sql_yacc.y に2行追加して下さい。プリプロセッサシンボルの定義上に yacc が定義できます (これはファイルの最初に追加されるべきです)。それから 関数パラメータを定義し、これらのパラメータで 'item' を作成します。例とし て、sql_yacc.y 内の SOUNDEX の全てのできごとをチェックしてくださ い。
  3. item_func.h 内で Item_num_func または Item_str_func からの継承クラスを宣 言します。これはあなたの関数が数値と文字列のどちらを戻すかに依存します。
  4. `item_func.cc' 内に次を追加します: あなたが数値関数を定義している場 合 double *Item_func_newname::val() または、文字列関数を定義して いる場合 String *Item_func_newname::Str(String *str)
  5. あなたはおそらく次の関数も定義すべきです: void Item_func_newname::fix_length_and_dec() これは与えられた引数に基づいて 少なくとも max_length を計算します。max_length は関数が返 す最大文字数です。関数が NULL を返さない場合、maybe_null = 0 をセットすべきです。

文字列関数について:

  1. 文字列関数では、String *str 引数が、結果を保持するために使用され る文字列バッファを提供します。
  2. 文字列関数は結果を保持する文字列を返すべきです。
  3. 現在の全ての文字列関数は、絶対に必要でなければメモリの割り当てを回避しよ うとします!


Go to the first, previous, next, last section, table of contents.