You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by "Shizhi Chen (Jira)" <ji...@apache.org> on 2022/06/17 11:27:00 UTC

[jira] [Created] (HUDI-4277) Support computed column for flink HoodieTableSource

Shizhi Chen created HUDI-4277:
---------------------------------

             Summary: Support computed column for flink HoodieTableSource 
                 Key: HUDI-4277
                 URL: https://issues.apache.org/jira/browse/HUDI-4277
             Project: Apache Hudi
          Issue Type: Bug
          Components: flink, flink-sql
            Reporter: Shizhi Chen
             Fix For: 0.12.0
         Attachments: image-2022-06-17-19-20-33-323.png

Current implemention of HoodieTableSource does not take the computed column under consideration

 
{code:java}
public HoodieTableSource(
    ResolvedSchema schema,
    Path path,
    List<String> partitionKeys,
    String defaultPartName,
    Configuration conf,
    @Nullable List<Map<String, String>> requiredPartitions,
    @Nullable int[] requiredPos,
    @Nullable Long limit,
    @Nullable List<Expression> filters) {
  this.schema = schema;
  this.path = path;
  this.partitionKeys = partitionKeys;
  this.defaultPartName = defaultPartName;
  this.conf = conf;
  this.fileIndex = FileIndex.instance(this.path, this.conf);
  this.requiredPartitions = requiredPartitions;
  this.requiredPos = requiredPos == null
      ? IntStream.range(0, schema.getColumnCount()).toArray()
      : requiredPos;{code}
When we use flink sql to declare a computed column like:
{code:java}
CREATE TABLE hudi_source (
  xxx,
  ts_str STRING,
  ts as TO_TIMESTAMP(ts_str,'yyyy-MM-dd HH:mm:ss'),
  WATERMARK FOR ts AS ts,
  PRIMARY KEY(xxx) NOT ENFORCED
)  WITH (...){code}
the flink sql planner would not apply the defined projection:
{code:java}
@Override
public void applyProjection(int[][] projections) {
  // nested projection is not supported.
  this.requiredPos = Arrays.stream(projections).mapToInt(array -> array[0]).toArray();
} {code}
Finally we will get an unexpected runtime exception: 

!image-2022-06-17-19-20-33-323.png!

 



--
This message was sent by Atlassian Jira
(v8.20.7#820007)