Hi Jark, Jingsong, Timo:

I read the FLINK-12848, the root cause of this issue should be 'cache the
RowTypeInfo in seenTypes'. In my opinion, RowType should be compared with
type. BTW, I don't understand why it need cache the composite type. Could
you please explain the following comments, thanks.

// advanced types require specific RelDataType
// for storing the original TypeInformation
seenTypes.getOrElseUpdate((typeInfo, isNullable),
createAdvancedType(typeInfo, isNullable))

Thanks,
Kaka

JingsongLee <lzljs3620...@aliyun.com.invalid> 于2019年7月17日周三 上午10:14写道:

> Hi caizhi and kaka and jark:
> I think we should keep current equals in RowType and StructuredType.
> @Timo WaltherWhat do you think? Do you think we can use
> asSerializableString?
>
> Best, JingsongLee
>
>
> ------------------------------------------------------------------
> From:kaka chen <kaka11.c...@gmail.com>
> Send Time:2019年7月16日(星期二) 23:45
> To:dev <dev@flink.apache.org>
> Subject:Re: blink planner issue
>
> Hi Caizhi and Jark,
>
> I think you are correct, from the quick view for source code, it should
> only compares field types in the equals method.
> Currently some composite logical row type has compared name and
> description, such as RowType and StructuredType.
>
> Thanks,
> Kaka Chen
>
> Caizhi Weng <tsreape...@gmail.com> 于2019年7月16日周二 下午11:16写道:
>
> > Hi Kaka and Jark,
> >
> > On a side note, `RowTypeInfo` only compares field types in its `equals`
> > method. I think our new logical row type shouldn't break this behavior.
> >
> > kaka chen <kaka11.c...@gmail.com> 于2019年7月16日周二 下午10:53写道:
> >
> > > Hi Jark,
> > >
> > > Thanks!
> > >
> > > Thanks,
> > > Kaka Chen
> > >
> > > Jark Wu <imj...@gmail.com> 于2019年7月16日周二 下午10:30写道:
> > >
> > > > Hi Kaka,
> > > >
> > > > Thanks for reporting this. We didn't cover integrate tests for
> > connectors
> > > > yet because of FLINK-13276. We will cover that after FLINK-13276 is
> > > fixed.
> > > >
> > > > The problem you raised might because we misused `LogicalType.equals`
> > > which
> > > > will checks field names as well.
> > > > I have created an issue (FLINK-13290) to track this problem.
> > > >
> > > > Best,
> > > > Jark
> > > >
> > > >
> > > > On Tue, 16 Jul 2019 at 17:35, kaka chen <kaka11.c...@gmail.com>
> wrote:
> > > >
> > > > >     I am looking this issue, the related codes which throw errors
> > are:
> > > > >
> > > > >     SinkCodeGenerator:: validateFieldType()
> > > > >
> > > > >     ...
> > > > >
> > > > >      // Tuple/Case class/Row type requested
> > > > >       case tt: TupleTypeInfoBase[_] =>
> > > > >         fieldTypes.zipWithIndex foreach {
> > > > >           case (fieldTypeInfo: GenericTypeInfo[_], i) =>
> > > > >             val requestedTypeInfo = tt.getTypeAt(i)
> > > > >             if
> > > > (!requestedTypeInfo.isInstanceOf[GenericTypeInfo[Object]]) {
> > > > >               throw new TableException(
> > > > >                 s"Result field '${fieldNames(i)}' does not match
> > > > requested
> > > > > type. " +
> > > > >                     s"Requested: $requestedTypeInfo; Actual:
> > > > > $fieldTypeInfo")
> > > > >             }
> > > > >           case (fieldTypeInfo, i) =>
> > > > >             val requestedTypeInfo = tt.getTypeAt(i)
> > > > >             validateFieldType(requestedTypeInfo)
> > > > >            * if (fromTypeInfoToLogicalType(fieldTypeInfo) !=*
> > > > > *                fromTypeInfoToLogicalType(requestedTypeInfo) &&*
> > > > > *
> > > > !requestedTypeInfo.isInstanceOf[GenericTypeInfo[Object]])
> > > > > {*
> > > > > *              val fieldNames = tt.getFieldNames*
> > > > > *              throw new TableException(s"Result field
> > > '${fieldNames(i)}'
> > > > > does not match requested" +*
> > > > > *                  s" type. Requested: $requestedTypeInfo; Actual:
> > > > > $fieldTypeInfo")*
> > > > > *            }*
> > > > >         }
> > > > >    ...
> > > > >
> > > > > Thanks,
> > > > > Frank
> > > > >
> > > > > kaka chen <kaka11.c...@gmail.com> 于2019年7月16日周二 下午5:23写道:
> > > > >
> > > > > > Hi All,
> > > > > >
> > > > > >
> > > > > > We are trying to switch to blink table planner in HBase
> connector,
> > > > which
> > > > > > found the following error:
> > > > > >
> > > > > >
> > > > > > Running org.apache.flink.addons.hbase.HBaseSinkITCase
> > > > > >
> > > > > > Formatting using clusterid: testClusterID
> > > > > >
> > > > > > Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed:
> > > 28.042
> > > > > sec
> > > > > > <<< FAILURE! - in org.apache.flink.addons.hbase.HBaseSinkITCase
> > > > > >
> > > > > > testTableSink(org.apache.flink.addons.hbase.HBaseSinkITCase)
> Time
> > > > > > elapsed: 2.431 sec  <<< ERROR!
> > > > > >
> > > > > > org.apache.flink.table.api.TableException: Result field 'family1'
> > > does
> > > > > not
> > > > > > match requested type. Requested: Row(col1: Integer); Actual:
> > > > Row(EXPR$0:
> > > > > > Integer)
> > > > > >
> > > > > > at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.flink.addons.hbase.HBaseSinkITCase.testTableSink(HBaseSinkITCase.java:140)
> > > > > >
> > > > > >
> > > > > > The original flink table planner executed successfully.
> > > > > >
> > > > > >
> > > > > > Thanks,
> > > > > >
> > > > > > Kaka Chen
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to