SPI_modifytuple — 与えられた行の選択フィールドを置き換えた行を作成する
HeapTuple SPI_modifytuple(Relationrel, HeapTuplerow, intncols, int *colnum, Datum *values, const char *nulls)
SPI_modifytupleは、選択された列は新しい値で置き換え、その他の位置は元の行の列をコピーした、新しい行を作成します。
入力行は変更されません。
新しい行は上位エクゼキュータコンテキスト内に返されます。
この関数はSPIに接続されている間にのみ使うことができます。
それ以外の場合はNULLを返し、SPI_resultをSPI_ERROR_UNCONNECTEDにセットします。
Relation rel行の行記述子のソースとしてのみ使用されます。 (行記述子ではなくリレーションを渡すことは設計ミスです。)
HeapTuple row変更される行
int ncols変更された列数
int * colnum
変更される列番号を含む、ncols長の配列(列番号は1から始まります)
Datum * values
指定された列の新しい値を含む、ncols長の配列
const char * nulls
新しい値のどれがNULLかを記述する、ncols長の配列
nullsがNULLであれば、SPI_modifytupleはどの新しい値もnullでないとみなします。
さもなければ、nulls配列の各項目は、対応するパラメータが非NULLならば' '、対応するパラメータがNULLならば'n'です。
(後者の場合、values内の対応する値は注意されません。)
nullsはテキスト文字列ではなく単なる配列であることに注意してください。
'\0'終端は必要ありません。
変更された新しい行。上位エクゼキュータコンテキストに割り当てられます。
エラー時はNULLです。
(エラーの表示についてはSPI_resultを参照してください)
エラー時、SPI_resultが以下のように設定されます。
SPI_ERROR_ARGUMENT
relがNULLの場合、rowがNULLの場合、ncolsが0以下の場合、colnumがNULLの場合、valuesがNULLの場合。
SPI_ERROR_NOATTRIBUTE
colnumが無効な列番号を持つ場合
(0以下、rowの列数以上)。
SPI_ERROR_UNCONNECTEDSPIが動作していない場合