Valor de retorno genérico de UDF
Se você usar ANY para um tamanho de valor de retorno, a UDF deve calcular o tamanho do valor de retorno numérico ou de sequência substituindo o método calculateSize() para definir a operação de dimensionamento.
O método calculateSize() fornece um limite superior do tamanho do valor de retorno. Ele especifica a quantidade de memória que o sistema aloca para o resultado; no entanto, o comprimento do valor de retorno real ainda precisa ser configurado. O sistema Netezza Performance Server oferece vários métodos de dimensionamento que você pode usar para processar os tipos de dados numéricos e de cadeia de caracteres.
virtual uint64 calculateSize() const
{
int len = 0;
for (int i=0; i < numSizerArgs(); i++) //for each input argument
{
if (sizerArgType(i) == UDX_VARIABLE)
len += sizerStringArgSize(i); //add the input argument sizes
}
return sizerStringSizeValue(len); //let return value be the sum
}virtual uint64 calculateSize() const
{
int prec = 0;
int scale = 0;
for (int i=0; i < numSizerArgs(); i++) //for each input argument
{
if (sizerArgType(i) == UDX_NUMERIC64) // if the argument is a
//numeric64 value
{
if (sizerNumericArgPrecision(i) > prec) //compute maximum
prec = sizerNumericArgPrecision(i); //precision and
if (sizerNumericArgScale(i) > scale) //scale as "max"
scale = sizerNumericArgScale(i);
}
}
return sizerNumericSizeValue(prec, scale); //let return value
//precision and scale be "max"
}