flink icon indicating copy to clipboard operation
flink copied to clipboard

[FLINK-20539][table-planner] Fix type mismatch when using ROW in comp…

Open xuyangzhong opened this issue 2 years ago • 3 comments

What is the purpose of the change

This pr is cherry-picked from master. See more here: https://github.com/apache/flink/pull/23519

When using row as a computed column and select the computed column as a query, an exception will be thrown by calcite because of the type mismatch about ROW.

The cause is that in Flink, we always treat the ROW as a struct type PEEK_FIELDS_NO_EXPAND (refs to LogicalRelDataTypeConverter and FlinkTypeFactory), but in calcite, the struct type about ROW is FULLY_QUALIFIED (refs to SqlRowOperator#inferReturnType). And when selecting the column, the difference causes this bug.

Brief change log

  • Modify the SqlRowOperator to return the true struct type about ROW
  • Add tests about this pr

Verifying this change

Necessary tests have been added.

Does this pull request potentially affect one of the following parts:

  • Dependencies (does it add or upgrade a dependency): no
  • The public API, i.e., is any changed class annotated with @Public(Evolving): no
  • The serializers: no
  • The runtime per-record code paths (performance sensitive): no
  • Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: no
  • The S3 file system connector: no

Documentation

  • Does this pull request introduce a new feature? no
  • If yes, how is the feature documented? no

xuyangzhong avatar Nov 22 '23 08:11 xuyangzhong

CI report:

  • c225020b7f0cc3be21bc65b14f83e70c947fbd98 Azure: SUCCESS
Bot commands The @flinkbot bot supports the following commands:
  • @flinkbot run azure re-run the last Azure build

flinkbot avatar Nov 22 '23 08:11 flinkbot

@flinkbot run azure

xuyangzhong avatar Nov 23 '23 02:11 xuyangzhong

@xuyangzhong could you please rebase it to be sure it still passes the ci? Once it passes we could merge it

snuyanzin avatar May 16 '24 15:05 snuyanzin

@snuyanzin Done! Thanks for driving this.

xuyangzhong avatar May 17 '24 08:05 xuyangzhong

Thanks for the PR and for the quick rebase @xuyangzhong

snuyanzin avatar May 17 '24 11:05 snuyanzin