support primitive UDF return types