PostgreSQL解読室:
ComputeDataSize()/postgresql-8.1.4
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
このページを編集する際は、[[編集に関する方針]]に従ってく...
*概要 [#n1cb119f]
-対象:8.1.4
-言語:C
-[[postgresql-8.1.4/src/backend/access/common/heaptuple.c...
-[[heap_compute_data_size()/postgresql-8.1.4]]と同様。た...
*引数 [#wcd947cf]
+tupleDesc : TupleDesc型
+values : Datum型へのポインタ
+nulls : char型へのポインタ
*実装 [#m6ec7f1d]
static Size
ComputeDataSize(TupleDesc tupleDesc,
-以下のメンバを持つ構造体。詳細は[[TupleDesc/postgresql-8...
--nattsを、intとして定義。
--attrsを、以下のメンバを持つ構造体Form_pg_attributeへの...
---(略)
---attlenを、int2(int16(signed short)の別名)として定...
---(略)
---attalignを、charとして定義。
---(略)
--(略)
Datum *values,
-unsigned longの別名。詳細は[[Datum/postgresql-8.1.4]]参...
char *nulls)
{
Size data_length = 0;
-size_tの別名。詳細は[[Size/postgresql-8.1.4]]参照。
int i;
int numberOfAttributes = tupleDesc->natts;
Form_pg_attribute *att = tupleDesc->attrs;
-以下のメンバを持つ構造体へのポインタ。詳細は[[Form_pg_at...
--(略)
--attlenを、int2(int16(signed short)の別名)として定義。
--(略)
--attalignを、charとして定義。
--(略)
for (i = 0; i < numberOfAttributes; i++)
{
if (nulls[i] != ' ')
continue;
data_length = att_align(data_length, att[i]->attalign);
-data_lengthに、以下の値を代入。詳細は[[att_align()/postg...
--attalignの値が'i'の場合、data_length以上であるALIGNOF_I...
--attalignの値が'c'の場合、data_lengthを(long型にキャス...
--attalignの値が'd'の場合、data_length以上であるALIGNOF_D...
--それ以外の場合、data_length以上であるALIGNOF_SHORTの倍...
。ただし、USE_ASSERT_CHECKING指定してコンパイルしたバイナ...
data_length = att_addlength(data_length, att[i]->attlen...
-data_lengthに、以下の値を加算。詳細は[[att_addlength()/p...
-- att[i]->attlenが0より大きい場合、att[i]->attlenの値。
-- att[i]->attlenが-1の場合、values[i]をvarattrib*型にキ...
-- att[i]->attlenが-2の場合、values[i]を文字列としてサイ...
-- それ以外の場合は、-2の場合と同じ。ただし、USE_ASSERT_C...
}
return data_length;
}
*呼出元 [#y4d3c840]
-(呼出元の関数を書いてください。)
*備考 [#wac9b348]
* ComputeDataSize
*
* Determine size of the data area of a tuple to be const...
*
* OLD API with char 'n'/' ' convention for indicating nu...
*履歴 [#tff62d2e]
-作者:[[testnoda/ページ作者]]
-日付:2006/10/8
|更新日|更新者|更新内容|
||||
*コメント [#vc40326e]
#comment
終了行:
このページを編集する際は、[[編集に関する方針]]に従ってく...
*概要 [#n1cb119f]
-対象:8.1.4
-言語:C
-[[postgresql-8.1.4/src/backend/access/common/heaptuple.c...
-[[heap_compute_data_size()/postgresql-8.1.4]]と同様。た...
*引数 [#wcd947cf]
+tupleDesc : TupleDesc型
+values : Datum型へのポインタ
+nulls : char型へのポインタ
*実装 [#m6ec7f1d]
static Size
ComputeDataSize(TupleDesc tupleDesc,
-以下のメンバを持つ構造体。詳細は[[TupleDesc/postgresql-8...
--nattsを、intとして定義。
--attrsを、以下のメンバを持つ構造体Form_pg_attributeへの...
---(略)
---attlenを、int2(int16(signed short)の別名)として定...
---(略)
---attalignを、charとして定義。
---(略)
--(略)
Datum *values,
-unsigned longの別名。詳細は[[Datum/postgresql-8.1.4]]参...
char *nulls)
{
Size data_length = 0;
-size_tの別名。詳細は[[Size/postgresql-8.1.4]]参照。
int i;
int numberOfAttributes = tupleDesc->natts;
Form_pg_attribute *att = tupleDesc->attrs;
-以下のメンバを持つ構造体へのポインタ。詳細は[[Form_pg_at...
--(略)
--attlenを、int2(int16(signed short)の別名)として定義。
--(略)
--attalignを、charとして定義。
--(略)
for (i = 0; i < numberOfAttributes; i++)
{
if (nulls[i] != ' ')
continue;
data_length = att_align(data_length, att[i]->attalign);
-data_lengthに、以下の値を代入。詳細は[[att_align()/postg...
--attalignの値が'i'の場合、data_length以上であるALIGNOF_I...
--attalignの値が'c'の場合、data_lengthを(long型にキャス...
--attalignの値が'd'の場合、data_length以上であるALIGNOF_D...
--それ以外の場合、data_length以上であるALIGNOF_SHORTの倍...
。ただし、USE_ASSERT_CHECKING指定してコンパイルしたバイナ...
data_length = att_addlength(data_length, att[i]->attlen...
-data_lengthに、以下の値を加算。詳細は[[att_addlength()/p...
-- att[i]->attlenが0より大きい場合、att[i]->attlenの値。
-- att[i]->attlenが-1の場合、values[i]をvarattrib*型にキ...
-- att[i]->attlenが-2の場合、values[i]を文字列としてサイ...
-- それ以外の場合は、-2の場合と同じ。ただし、USE_ASSERT_C...
}
return data_length;
}
*呼出元 [#y4d3c840]
-(呼出元の関数を書いてください。)
*備考 [#wac9b348]
* ComputeDataSize
*
* Determine size of the data area of a tuple to be const...
*
* OLD API with char 'n'/' ' convention for indicating nu...
*履歴 [#tff62d2e]
-作者:[[testnoda/ページ作者]]
-日付:2006/10/8
|更新日|更新者|更新内容|
||||
*コメント [#vc40326e]
#comment
ページ名: