Hi everyone,

I'm currently polishing FLIP-440, I would like to apply some last minute changes before the first release of PTFs for Flink 2.1. I've already collected initial user feedback and it seems that the name for annotations of table arguments is not precise enough.

As always, naming is a hard problem in software engineering.

For background, please take a look at this docs section:

https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/functions/ptfs/#table-semantics-and-virtual-processors

Currently, a PTF signature can look like when taking a table as an argument:

// Untyped with set semantics
eval(@ArgumentHint(TABLE_AS_SET) Row order);

// Typed with set semantics
eval(@ArgumentHint(TABLE_AS_SET) Order order);

// Untyped with row semantics
eval(@ArgumentHint(TABLE_AS_ROW) Row order);

// Typed with row semantics
eval(@ArgumentHint(TABLE_AS_ROW) Order order);

The annotation value confuses people, so I would ask for renaming this part of the API.

Option A:
ROW_SEMANTIC_TABLE
SET_SEMANTIC_TABLE

Option B:
ROW_WISE_TABLE
SET_WISE_TABLE

Option C:
ROW_SCOPED_TABLE
SET_SCOPED_TABLE

Option D:
KEYED_TABLE
UNKEYED_TABLE

Option E:
PARTITIONED_TABLE
ROW_WISE_TABLE

Option A/B/C are closer to SQL standard and not too far away from current docs. Option D is closer to Flink DataStream API but could be confusing if no PARTITION BY clause is given but still the table could be keyed. Option E neither takes SQL standard nor DataStream API as a reference.

Personally, I would vote for Option A.

Looking forward to your opinion.

Cheers,
Timo


Reply via email to