このページを編集する際は、編集に関する方針に従ってください。

概要

小計1の例

attalignattlen
attrs[0]'c'15
attrs[1]'s'2
attrs[2]'i'4
attalignALIGNALIGN後の値(小計1)attlen小計2
attrs[0]'c'なし01515
attrs[1]'s'ALIGNOF_SHORT=216218
attrs[2]'i'ALIGNOF_INT=420424

小計2の例

iattrs[i]->
attalign
attrs[i]->
attlen
value[i]value[i]->
va_header
value[i]のサイズ
0'c'-1'aaaaa'0x616161615
1'c'-2'bbbbb'0x626262625
iattrs[i]->
attalign
ALIGNALIGN後の値(小計1)attrs[i]->
attlen
value[i]value[i]->
va_header
value[i]のサイズ小計2
0'c'なし0-1'aaaaa'0x61616161 = 163377187351633771873
1'c'なし1633771873-2'bbbbb'0x6262626251633771878

引数

  1. tupleDesc : TupleDesc 型
  2. values : Datum 型へのポインタ
  3. isnull : bool 型へのポインタ

実装

Size heap_compute_data_size(TupleDesc tupleDesc,

					   Datum *values,
					   bool *isnull)

{

	Size		data_length = 0;
	int			i;
	int			numberOfAttributes = tupleDesc->natts;
	Form_pg_attribute *att = tupleDesc->attrs;
	for (i = 0; i < numberOfAttributes; i++)
	{
		if (isnull[i])
			continue;
		data_length = att_align(data_length, att[i]->attalign);
		data_length = att_addlength(data_length, att[i]->attlen, values[i]);
	}
	return data_length;

}

呼出元

備考

* heap_compute_data_size
*		Determine size of the data area of a tuple to be constructed

履歴

コメント



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS