A row block is the data transfer area between the producer and the consumer.
A table UDF can only produce rows. It can use an existing row block, or it can build its own row block.
A TPF can both produce and consume rows. A TPF produces rows in the same way a table UDF produces rows and can use an existing row block or build its own row block. A TPF can consume rows from an input table and can provide the producer with a row block, or request the producer to create its own row block.