このページを編集する際は、[[編集に関する方針]]に従ってください。 *概要 [#wbdb2373] -対象:8.1.4 -言語:C -[[postgresql-8.1.4/src/include/access/tupmacs.h]]にて定義 -cur_offsetに、以下の値を加算した値を返す。 --attlenが0より大きい場合、attlenの値。 --attlenが-1の場合、attvalをvarattrib*型にキャストしてva_headerメンバの値を取得し、上位2ビットを除外した値。 --attlenが-2の場合、attvalを文字列としてサイズを算出した値。 --それ以外の場合、attlenが-2の場合と同じ。ただし、USE_ASSERT_CHECKING指定してコンパイルしたバイナリの場合、エラーメッセージを出力してプログラムを終了する。 *引数 [#yfb3032a] +cur_offset : オフセット値。 +attlen : 属性(?)のサイズ。 +attval : 属性(?)を格納する変数(可変長の属性(?)を扱う場合のみ使用)。 *実装 [#l829c959] #define att_addlength(cur_offset, attlen, attval) \ ( \ ((attlen) > 0) ? \ ( \ (cur_offset) + (attlen) \ ) \ : (((attlen) == -1) ? \ ( \ (cur_offset) + VARATT_SIZE(DatumGetPointer(attval)) \ -attvalを[[Pointer型>PostgreSQL関連用語]]にキャストした値を取得。詳細は[[DatumGetPointer()/postgresql-8.1.4]]参照。 -引数DatumGetPointer(attval)をvarattrib*型にキャストしてva_headerメンバの値を取得し、上位2ビットを除外する。詳細は[[VARATT_SIZE()/postgresql-8.1.4]]参照。 ) \ : \ ( \ AssertMacro((attlen) == -2), \ -USE_ASSERT_CHECKING指定してコンパイルしたバイナリの場合、条件式 (attlen) == -2 がFALSEならばエラーメッセージを出力して終了する。詳細は[[AssertMacro()/postgresql-8.1.4]]参照。 (cur_offset) + (strlen(DatumGetCString(attval)) + 1) \ -引数attvalをchar*型にキャストした値を取得する。詳細は[[DatumGetCString()/postgresql-8.1.4]]参照。 )) \ ) *呼出元 [#u0e1dd31] - [[heap_compute_data_size()/postgresql-8.1.4]] *履歴 [#fb9d1c6e] -作者:[[testnoda:http://d.hatena.ne.jp/testnoda/about]] -作者:[[testnoda/ページ作者]] -日付:2006/8/18 |更新日|更新者|更新内容| |2006/9/12|[[testnoda:http://d.hatena.ne.jp/testnoda/about]]|間違いを修正| *コメント [#a763b690] #comment