このページを編集する際は、[[編集に関する方針]]に従ってください。
*概要 [#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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS