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_UNCONNECTED
SPIが動作していない場合