getShape()

getShape() メソッドは、UDX のコンパイル時に呼び出します。このメソッドによって、表関数から返される列の列名とデータ型を確認できます。

UDSF や UDA と異なり、UDTF は複数列を返すことができます。以下に簡単な例を示します。

function getShape()
    local shape = {}
    shape[1] = { "x", integer }
    shape[2] = { "y", integer }
    shape[3] = { "z", varchar(255) }
    return shape
end

この例で、UDTF は 3 列のデータを返すよう定義されています。この UDTF で processRow() メソッドを使用すると、getShape() メソッドで定義された形式に合致する 3 列のデータを返します。例えば、processRow() メソッド定義が次のようになっている場合があります。

function processRow(a,b,c)
    return { a*10, b-10, "foobar" }
end

getShape() メソッドの特殊ケースは、実行時に UDTF が出力形状を決定するのを許可することです。getShape メソッドから VARSHAPE という値が返されると、calculateShape() メソッドが実行時に呼び出され、UDTF の呼び出し時に指定された引数に基づいて各出力列の名前と型が決定されます。

function getShape()
    return VARSHAPE
end