A simple distributed example of a UDF which copies data from one set of tables to another would look like the following:
package com.kinetica;
public class UdfTableCopy
{
public static void main(String[] args)
{
ProcData procData = ProcData.get();
for (int i = 0; i < procData.getInputData().getTableCount(); i++)
{
ProcData.InputTable inputTable = procData.getInputData().getTable(i);
ProcData.OutputTable outputTable = procData.getOutputData().getTable(i);
outputTable.setSize(inputTable.getSize());
for (int j = 0; j < inputTable.getColumnCount(); j++)
{
ProcData.InputColumn inputColumn = inputTable.getColumn(j);
ProcData.OutputColumn outputColumn = outputTable.getColumn(j);
for (long k = 0; k < inputTable.getSize(); k++)
{
switch (inputColumn.getType())
{
case BYTES: outputColumn.appendVarBytes(inputColumn.getVarBytes(k)); break;
case CHAR1: outputColumn.appendChar(inputColumn.getChar(k)); break;
case CHAR2: outputColumn.appendChar(inputColumn.getChar(k)); break;
case CHAR4: outputColumn.appendChar(inputColumn.getChar(k)); break;
case CHAR8: outputColumn.appendChar(inputColumn.getChar(k)); break;
case CHAR16: outputColumn.appendChar(inputColumn.getChar(k)); break;
case CHAR32: outputColumn.appendChar(inputColumn.getChar(k)); break;
case CHAR64: outputColumn.appendChar(inputColumn.getChar(k)); break;
case CHAR128: outputColumn.appendChar(inputColumn.getChar(k)); break;
case CHAR256: outputColumn.appendChar(inputColumn.getChar(k)); break;
case DATE: outputColumn.appendInt(inputColumn.getInt(k)); break;
case DECIMAL: outputColumn.appendLong(inputColumn.getLong(k)); break;
case DOUBLE: outputColumn.appendDouble(inputColumn.getDouble(k)); break;
case FLOAT: outputColumn.appendFloat(inputColumn.getFloat(k)); break;
case INT: outputColumn.appendInt(inputColumn.getInt(k)); break;
case INT8: outputColumn.appendByte(inputColumn.getByte(k)); break;
case INT16: outputColumn.appendShort(inputColumn.getShort(k)); break;
case IPV4: outputColumn.appendInt(inputColumn.getInt(k)); break;
case LONG: outputColumn.appendLong(inputColumn.getLong(k)); break;
case STRING: outputColumn.appendVarString(inputColumn.getVarString(k)); break;
case TIME: outputColumn.appendInt(inputColumn.getInt(k)); break;
case TIMESTAMP: outputColumn.appendLong(inputColumn.getLong(k)); break;
}
}
}
}
procData.getResults().putAll(procData.getParams());
procData.getBinResults().putAll(procData.getBinParams());
procData.complete();
}
}