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