Re: Nested data handling in Caclite

2020-06-15 Thread Slim Bouguerra
Hi Danny,
Thanks for the suggestion, but that did not solve the problem, still
getting the same exception, Not sure If I am missing something ? Do you
have an example of this usage ?
Again the goal here is to select a Row for a Row  as an example this is the
column type sketch
outerRow(address_kind, address_inner_row(ZipCode, StreetNum,))
SELECT outerRow.address_inner_row  FROM table.

FYI select outerRow.address_kind works because it is a scalar and after
adding your suggestion I see that select address_kind from table.

On Mon, Jun 15, 2020 at 7:21 PM Danny Chan  wrote:

> Hi, when you create a structure type, you should choose
> StructKind.PEEK_FIELDS instead, which let you to access the nested fields
> with DOT, i.e. “a.b.c”.
>
> Best,
> Danny Chan
> 在 2020年6月16日 +0800 AM4:21,Slim Bouguerra ,写道:
> > I am using this thread since the question seems related.
> > As of now I can not say a way to project a nested record (FYI scalar
> > works). https://jira.apache.org/jira/browse/CALCITE-4065
> > @Igor any idea if this can be done without major work on the
> > SqlRelToRelConverter ?
> > Also I am thinking about turning off the flatten stage but not sure this
> is
> > going to happen (seems like a pandora box kind of flag where you do not
> > know what to expect)
> >
> > On Thu, Oct 24, 2019 at 3:53 AM Igor Guzenko  >
> > wrote:
> >
> > > Hello Naveen,
> > >
> > > 1. If I understand correctly, then yes you can extract nested fields
> from
> > > struct type. The syntax depends on StructKind value for your data type,
> > > for example for FULLY_QUALIFIED struct you should first
> > > make alias for your table and then request nested field like,
> > > table_alias.struct_column.nested_field. In rel tree such expressions
> are
> > > presented as RexCall with SqlItemOperator operator.
> > > 2. Yes, this ability was implemented in CALCITE-3138 [1]. It builds
> call to
> > > ROW type constructor function on top of flattened tree for necessary
> > > columns.
> > > 3. Yes, examples of such functions are ROW(...), ANY_VALUE(...) etc.
> > >
> > > In current implementation of flattener invocation of ROW constructor
> > > function is done despite of null handling same issue exists for some
> > > aggregate function flattening, like COUNT(struct_column).
> > > Proper null handling is real pain for flattener, original idea was to
> > > handle special null indicator for each flattened struct, but in
> practice I
> > > recognized that it's really hard to deal with flattened fields indices
> when
> > > related methods are called from very different points, so for now the
> > > problem remains unsolved.
> > > If you can't avoid dealing with null values in your struct columns you
> > > could try to avoid invocation to SqlToRelConverter.flattenTypes(...)
> and
> > > check whether final plan acceptable for you. As far as I know
> > > there is no reading material for given topic, you can investigate
> source
> > > code by debugging RelStructuredTypeFlattener and reading some related
> plans
> > > in SqlToRelConverterTest.java and SqlToRelConverterTest.xml.
> > >
> > > [1] https://issues.apache.org/jira/browse/CALCITE-3138
> > >
> > > Thanks,
> > > Igor
> > >
> > > On Thu, Oct 24, 2019 at 12:57 PM Naveen Kumar
> > >  wrote:
> > >
> > > > Hi,
> > > >
> > > > I work at Flipkart, we are using Calcite in our streaming platform.
> In
> > > most
> > > > of our use cases, input data is nested. I understand Calcite flattens
> > > > structs in scan and references fields positionally.
> > > >
> > > > I had a few questions on handling nested data -
> > > >
> > > > 1. Can RelNode DAG work with nested data (instead of flattened
> fields)
> > > > by referencing fields through their nested structure eg,
> > > > data.order.orderId
> > > > 2. In the current flattened behavior, can output of a query be a
> > > struct.
> > > > Eg if *orderId, orderData.timestamp, orderData.category* are output
> of
> > > > select query, can I declaratively organise output to below json
> > > > structure -
> > > > 1.
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > *{ "orderId": "order1", "orderData": { "timestamp": 1571904384814,
> > > > "category": "shoes" } }*
> > > > 3. Can output of a UDF be struct type
> > > >
> > > > Please point me to any reading material or example that would help
> with
> > > > these questions.
> > > >
> > > > Regards,
> > > > Naveen
> > > >
> > > > --
> > > >
> > > >
> > > >
> > > >
> > > >
> > >
> *-*
> > > >
> > > >
> > > > *This email and any files transmitted with it are confidential and
> > > > intended solely for the use of the individual or entity to whom they
> are
> > > > addressed. If you have received this email in error, please notify
> the
> > > > system manager. This message contains confidential information and is
> > > > intended only for the individual named. If you are not the named
> > > > addressee,
> > > > you should not 

Re: Why migrate from Maven to Gradle

2020-06-15 Thread Haisheng Yuan
Hi Zoltan,

> For example I use NetBeans, and things just work with maven.
Have you tried intellij? It works fine with Gradle. And it is free.

> Gradle will add friction to contributors familiar with maven and unfamiliar 
> with gradle...  
Your case is far better than mine, at least you have knowledge of maven. I have 
near 0 knowledge for both maven and gradle. But that doesn't prevent me from 
making contribution to Calcite. The only command I run daily is ./gradlew 
build.  And I am happy with it. :) So don't worry about that. Feel free to ask 
if you need help, I think Vladimir and other community members are more than 
happy to help.

Thanks,
Haisheng

On 2020/06/15 23:27:21, Zoltan Farkas  wrote: 
> Vladimir, 
> 
> A new user will probably be impacted more by the IDE experience.
> 
> Some IDEs do better at handling maven than gradle... For example I use 
> NetBeans, and things just work with maven.
> 
> In my experience, Maven is simply a more mature tool (use it since 2002), 
> more plugins, good IDE support, with more developers being fluent with it. 
> 
> Gradle will add friction to contributors familiar with maven and unfamiliar 
> with gradle...  
> 
> Hope it’s worth it...
> 
> --z
> 
> > On Jun 15, 2020, at 2:49 PM, Vladimir Sitnikov 
> >  wrote:
> > 
> > 
> >> 
> >> Gradle is not that user friendly for new uses
> > 
> > Can you please elaborate?
> > 
> > Gradle's command line is easier to follow as it provides help with the
> > usable tasks and descriptions,
> > and it requires much less ceremony.
> > For instance, with Maven I often had issues like "ExtenderSqlParserImpl not
> > found" (== I had to build the project before importing to the IDE),
> > and Gradle fixes that.
> > 
> > Vladimir
> 
> 


Re: Nested data handling in Caclite

2020-06-15 Thread Danny Chan
Hi, when you create a structure type, you should choose StructKind.PEEK_FIELDS 
instead, which let you to access the nested fields with DOT, i.e. “a.b.c”.

Best,
Danny Chan
在 2020年6月16日 +0800 AM4:21,Slim Bouguerra ,写道:
> I am using this thread since the question seems related.
> As of now I can not say a way to project a nested record (FYI scalar
> works). https://jira.apache.org/jira/browse/CALCITE-4065
> @Igor any idea if this can be done without major work on the
> SqlRelToRelConverter ?
> Also I am thinking about turning off the flatten stage but not sure this is
> going to happen (seems like a pandora box kind of flag where you do not
> know what to expect)
>
> On Thu, Oct 24, 2019 at 3:53 AM Igor Guzenko 
> wrote:
>
> > Hello Naveen,
> >
> > 1. If I understand correctly, then yes you can extract nested fields from
> > struct type. The syntax depends on StructKind value for your data type,
> > for example for FULLY_QUALIFIED struct you should first
> > make alias for your table and then request nested field like,
> > table_alias.struct_column.nested_field. In rel tree such expressions are
> > presented as RexCall with SqlItemOperator operator.
> > 2. Yes, this ability was implemented in CALCITE-3138 [1]. It builds call to
> > ROW type constructor function on top of flattened tree for necessary
> > columns.
> > 3. Yes, examples of such functions are ROW(...), ANY_VALUE(...) etc.
> >
> > In current implementation of flattener invocation of ROW constructor
> > function is done despite of null handling same issue exists for some
> > aggregate function flattening, like COUNT(struct_column).
> > Proper null handling is real pain for flattener, original idea was to
> > handle special null indicator for each flattened struct, but in practice I
> > recognized that it's really hard to deal with flattened fields indices when
> > related methods are called from very different points, so for now the
> > problem remains unsolved.
> > If you can't avoid dealing with null values in your struct columns you
> > could try to avoid invocation to SqlToRelConverter.flattenTypes(...) and
> > check whether final plan acceptable for you. As far as I know
> > there is no reading material for given topic, you can investigate source
> > code by debugging RelStructuredTypeFlattener and reading some related plans
> > in SqlToRelConverterTest.java and SqlToRelConverterTest.xml.
> >
> > [1] https://issues.apache.org/jira/browse/CALCITE-3138
> >
> > Thanks,
> > Igor
> >
> > On Thu, Oct 24, 2019 at 12:57 PM Naveen Kumar
> >  wrote:
> >
> > > Hi,
> > >
> > > I work at Flipkart, we are using Calcite in our streaming platform. In
> > most
> > > of our use cases, input data is nested. I understand Calcite flattens
> > > structs in scan and references fields positionally.
> > >
> > > I had a few questions on handling nested data -
> > >
> > > 1. Can RelNode DAG work with nested data (instead of flattened fields)
> > > by referencing fields through their nested structure eg,
> > > data.order.orderId
> > > 2. In the current flattened behavior, can output of a query be a
> > struct.
> > > Eg if *orderId, orderData.timestamp, orderData.category* are output of
> > > select query, can I declaratively organise output to below json
> > > structure -
> > > 1.
> > >
> > >
> > >
> > >
> > >
> > > *{ "orderId": "order1", "orderData": { "timestamp": 1571904384814,
> > > "category": "shoes" } }*
> > > 3. Can output of a UDF be struct type
> > >
> > > Please point me to any reading material or example that would help with
> > > these questions.
> > >
> > > Regards,
> > > Naveen
> > >
> > > --
> > >
> > >
> > >
> > >
> > >
> > *-*
> > >
> > >
> > > *This email and any files transmitted with it are confidential and
> > > intended solely for the use of the individual or entity to whom they are
> > > addressed. If you have received this email in error, please notify the
> > > system manager. This message contains confidential information and is
> > > intended only for the individual named. If you are not the named
> > > addressee,
> > > you should not disseminate, distribute or copy this email. Please notify
> > > the sender immediately by email if you have received this email by
> > mistake
> > > and delete this email from your system. If you are not the intended
> > > recipient, you are notified that disclosing, copying, distributing or
> > > taking any action in reliance on the contents of this information is
> > > strictly prohibited.*
> > >
> > > 
> > >
> > > *Any views or opinions presented in this
> > > email are solely those of the author and do not necessarily represent
> > > those
> > > of the organization. Any information on shares, debentures or similar
> > > instruments, recommended product pricing, valuations and the like are for
> > > information purposes only. It is not meant to be an instruction or
> > > recommendation, as the case may be, to buy 

Re: Why migrate from Maven to Gradle

2020-06-15 Thread Zoltan Farkas
Vladimir, 

A new user will probably be impacted more by the IDE experience.

Some IDEs do better at handling maven than gradle... For example I use 
NetBeans, and things just work with maven.

In my experience, Maven is simply a more mature tool (use it since 2002), more 
plugins, good IDE support, with more developers being fluent with it. 

Gradle will add friction to contributors familiar with maven and unfamiliar 
with gradle...  

Hope it’s worth it...

--z

> On Jun 15, 2020, at 2:49 PM, Vladimir Sitnikov  
> wrote:
> 
> 
>> 
>> Gradle is not that user friendly for new uses
> 
> Can you please elaborate?
> 
> Gradle's command line is easier to follow as it provides help with the
> usable tasks and descriptions,
> and it requires much less ceremony.
> For instance, with Maven I often had issues like "ExtenderSqlParserImpl not
> found" (== I had to build the project before importing to the IDE),
> and Gradle fixes that.
> 
> Vladimir



Re: Nested data handling in Caclite

2020-06-15 Thread Rui Wang
>Also I am thinking about turning off the flatten stage but not sure this is
>going to happen (seems like a pandora box kind of flag where you do not
>know what to expect)

It is not happening to make flattener optional by setting a flag (see
[1]).  If there is anything that is not properly flattened and
reconstructed, I think the idea was to improve RelStructuredTypeFlattener
rather than making it optional.


[1]: https://issues.apache.org/jira/browse/CALCITE-3582


-Rui

On Mon, Jun 15, 2020 at 1:21 PM Slim Bouguerra  wrote:

> I am using this thread since the question seems related.
> As of now I can not say a way to project a nested record (FYI scalar
> works). https://jira.apache.org/jira/browse/CALCITE-4065
> @Igor any idea if this can be done without major work on the
> SqlRelToRelConverter ?
> Also I am thinking about turning off the flatten stage but not sure this is
> going to happen (seems like a pandora box kind of flag where you do not
> know what to expect)
>
> On Thu, Oct 24, 2019 at 3:53 AM Igor Guzenko 
> wrote:
>
> > Hello Naveen,
> >
> > 1. If I understand correctly, then yes you can extract nested fields from
> > struct type. The syntax depends on StructKind value for your data type,
> > for example for FULLY_QUALIFIED struct you should first
> > make alias for your table and then request nested field like,
> > table_alias.struct_column.nested_field. In rel tree such expressions are
> > presented as RexCall with SqlItemOperator operator.
> > 2. Yes, this ability was implemented in CALCITE-3138 [1]. It builds call
> to
> > ROW type constructor function on top of flattened tree for necessary
> > columns.
> > 3. Yes, examples of such functions are ROW(...), ANY_VALUE(...) etc.
> >
> > In current implementation of flattener  invocation of ROW constructor
> > function is done despite of null handling same issue exists for some
> > aggregate function flattening, like COUNT(struct_column).
> > Proper null handling is real pain for flattener, original idea was to
> > handle special null indicator for each flattened struct, but in practice
> I
> > recognized that it's really hard to deal with flattened fields indices
> when
> > related methods are called from very different points, so for now the
> > problem remains unsolved.
> > If you can't avoid dealing with null values in your struct columns you
> > could try to avoid invocation to SqlToRelConverter.flattenTypes(...) and
> > check whether final plan acceptable for you. As far as I know
> > there is no reading material for given topic, you can investigate source
> > code by debugging RelStructuredTypeFlattener and reading some related
> plans
> > in SqlToRelConverterTest.java and SqlToRelConverterTest.xml.
> >
> > [1] https://issues.apache.org/jira/browse/CALCITE-3138
> >
> > Thanks,
> > Igor
> >
> > On Thu, Oct 24, 2019 at 12:57 PM Naveen Kumar
> >  wrote:
> >
> > > Hi,
> > >
> > > I work at Flipkart, we are using Calcite in our streaming platform. In
> > most
> > > of our use cases, input data is nested. I understand Calcite flattens
> > > structs in scan and references fields positionally.
> > >
> > > I had a few questions on handling nested data -
> > >
> > >1. Can RelNode DAG work with nested data (instead of flattened
> fields)
> > >by referencing fields through their nested structure eg,
> > > data.order.orderId
> > >2. In the current flattened behavior, can output of a query be a
> > struct.
> > >Eg if *orderId, orderData.timestamp, orderData.category* are output
> of
> > >select query, can I declaratively organise output to below json
> > > structure -
> > >   1.
> > >
> > >
> > >
> > >
> > >
> > > *{ "orderId": "order1", "orderData": { "timestamp": 1571904384814,
> > >  "category": "shoes" } }*
> > >   3. Can output of a UDF be struct type
> > >
> > > Please point me to any reading material or example that would help with
> > > these questions.
> > >
> > > Regards,
> > > Naveen
> > >
> > > --
> > >
> > >
> > >
> > >
> > >
> >
> *-*
> > >
> > >
> > > *This email and any files transmitted with it are confidential and
> > > intended solely for the use of the individual or entity to whom they
> are
> > > addressed. If you have received this email in error, please notify the
> > > system manager. This message contains confidential information and is
> > > intended only for the individual named. If you are not the named
> > > addressee,
> > > you should not disseminate, distribute or copy this email. Please
> notify
> > > the sender immediately by email if you have received this email by
> > mistake
> > > and delete this email from your system. If you are not the intended
> > > recipient, you are notified that disclosing, copying, distributing or
> > > taking any action in reliance on the contents of this information is
> > > strictly prohibited.*
> > >
> > >  
> > >
> > > *Any views or opinions 

Re: Nested data handling in Caclite

2020-06-15 Thread Slim Bouguerra
I am using this thread since the question seems related.
As of now I can not say a way to project a nested record (FYI scalar
works). https://jira.apache.org/jira/browse/CALCITE-4065
@Igor any idea if this can be done without major work on the
SqlRelToRelConverter ?
Also I am thinking about turning off the flatten stage but not sure this is
going to happen (seems like a pandora box kind of flag where you do not
know what to expect)

On Thu, Oct 24, 2019 at 3:53 AM Igor Guzenko 
wrote:

> Hello Naveen,
>
> 1. If I understand correctly, then yes you can extract nested fields from
> struct type. The syntax depends on StructKind value for your data type,
> for example for FULLY_QUALIFIED struct you should first
> make alias for your table and then request nested field like,
> table_alias.struct_column.nested_field. In rel tree such expressions are
> presented as RexCall with SqlItemOperator operator.
> 2. Yes, this ability was implemented in CALCITE-3138 [1]. It builds call to
> ROW type constructor function on top of flattened tree for necessary
> columns.
> 3. Yes, examples of such functions are ROW(...), ANY_VALUE(...) etc.
>
> In current implementation of flattener  invocation of ROW constructor
> function is done despite of null handling same issue exists for some
> aggregate function flattening, like COUNT(struct_column).
> Proper null handling is real pain for flattener, original idea was to
> handle special null indicator for each flattened struct, but in practice I
> recognized that it's really hard to deal with flattened fields indices when
> related methods are called from very different points, so for now the
> problem remains unsolved.
> If you can't avoid dealing with null values in your struct columns you
> could try to avoid invocation to SqlToRelConverter.flattenTypes(...) and
> check whether final plan acceptable for you. As far as I know
> there is no reading material for given topic, you can investigate source
> code by debugging RelStructuredTypeFlattener and reading some related plans
> in SqlToRelConverterTest.java and SqlToRelConverterTest.xml.
>
> [1] https://issues.apache.org/jira/browse/CALCITE-3138
>
> Thanks,
> Igor
>
> On Thu, Oct 24, 2019 at 12:57 PM Naveen Kumar
>  wrote:
>
> > Hi,
> >
> > I work at Flipkart, we are using Calcite in our streaming platform. In
> most
> > of our use cases, input data is nested. I understand Calcite flattens
> > structs in scan and references fields positionally.
> >
> > I had a few questions on handling nested data -
> >
> >1. Can RelNode DAG work with nested data (instead of flattened fields)
> >by referencing fields through their nested structure eg,
> > data.order.orderId
> >2. In the current flattened behavior, can output of a query be a
> struct.
> >Eg if *orderId, orderData.timestamp, orderData.category* are output of
> >select query, can I declaratively organise output to below json
> > structure -
> >   1.
> >
> >
> >
> >
> >
> > *{ "orderId": "order1", "orderData": { "timestamp": 1571904384814,
> >  "category": "shoes" } }*
> >   3. Can output of a UDF be struct type
> >
> > Please point me to any reading material or example that would help with
> > these questions.
> >
> > Regards,
> > Naveen
> >
> > --
> >
> >
> >
> >
> >
> *-*
> >
> >
> > *This email and any files transmitted with it are confidential and
> > intended solely for the use of the individual or entity to whom they are
> > addressed. If you have received this email in error, please notify the
> > system manager. This message contains confidential information and is
> > intended only for the individual named. If you are not the named
> > addressee,
> > you should not disseminate, distribute or copy this email. Please notify
> > the sender immediately by email if you have received this email by
> mistake
> > and delete this email from your system. If you are not the intended
> > recipient, you are notified that disclosing, copying, distributing or
> > taking any action in reliance on the contents of this information is
> > strictly prohibited.*
> >
> >  
> >
> > *Any views or opinions presented in this
> > email are solely those of the author and do not necessarily represent
> > those
> > of the organization. Any information on shares, debentures or similar
> > instruments, recommended product pricing, valuations and the like are for
> > information purposes only. It is not meant to be an instruction or
> > recommendation, as the case may be, to buy or to sell securities,
> > products,
> > services nor an offer to buy or sell securities, products or services
> > unless specifically stated to be so on behalf of the Flipkart group.
> > Employees of the Flipkart group of companies are expressly required not
> to
> > make defamatory statements and not to infringe or authorise any
> > infringement of copyright or any other legal right by email
> > 

Re: Why migrate from Maven to Gradle

2020-06-15 Thread Vladimir Sitnikov
>Gradle is not that user friendly for new uses

Can you please elaborate?

Gradle's command line is easier to follow as it provides help with the
usable tasks and descriptions,
and it requires much less ceremony.
For instance, with Maven I often had issues like "ExtenderSqlParserImpl not
found" (== I had to build the project before importing to the IDE),
and Gradle fixes that.

Vladimir


[jira] [Created] (CALCITE-4065) Projecting a nested Row fails with org.apache.calcite.util.Util.needToImplement

2020-06-15 Thread Slim Bouguerra (Jira)
Slim Bouguerra created CALCITE-4065:
---

 Summary: Projecting a nested Row fails with 
org.apache.calcite.util.Util.needToImplement
 Key: CALCITE-4065
 URL: https://issues.apache.org/jira/browse/CALCITE-4065
 Project: Calcite
  Issue Type: Bug
 Environment: {code:java}
// code placeholder
{code}
Reporter: Slim Bouguerra


Not sure If I am missing something, but seems like Calcite Row operator does 
not support the projection of a Nested row.

Take this example where the goal is to project ROW(2)
{code:java}
select row(1,row(2)).\"EXPR$1\" from emp
{code}
fails with the exception listed below
{code:java}
class org.apache.calcite.rex.RexFieldAccess: ROW(1, ROW(2)).EXPR$1
java.lang.UnsupportedOperationException: class 
org.apache.calcite.rex.RexFieldAccess: ROW(1, ROW(2)).EXPR$1
at org.apache.calcite.util.Util.needToImplement(Util.java:967)
at 
org.apache.calcite.sql2rel.RelStructuredTypeFlattener.flattenProjection(RelStructuredTypeFlattener.java:699)
at 
org.apache.calcite.sql2rel.RelStructuredTypeFlattener.flattenProjections(RelStructuredTypeFlattener.java:601)
at 
org.apache.calcite.sql2rel.RelStructuredTypeFlattener.rewriteRel(RelStructuredTypeFlattener.java:521)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at 
org.apache.calcite.util.ReflectUtil.invokeVisitorInternal(ReflectUtil.java:257)
at 
org.apache.calcite.util.ReflectUtil.invokeVisitor(ReflectUtil.java:214)
at 
org.apache.calcite.util.ReflectUtil$1.invokeVisitor(ReflectUtil.java:464)
at 
org.apache.calcite.sql2rel.RelStructuredTypeFlattener$RewriteRelVisitor.visit(RelStructuredTypeFlattener.java:831)
at 
org.apache.calcite.sql2rel.RelStructuredTypeFlattener.rewrite(RelStructuredTypeFlattener.java:198)
at 
org.apache.calcite.sql2rel.SqlToRelConverter.flattenTypes(SqlToRelConverter.java:473)
at 
org.apache.calcite.test.SqlToRelTestBase$TesterImpl.convertSqlToRel(SqlToRelTestBase.java:634)
at 
org.apache.calcite.test.SqlToRelTestBase$TesterImpl.assertConvertsTo(SqlToRelTestBase.java:749)
at 
org.apache.calcite.test.SqlToRelConverterTest$Sql.convertsTo(SqlToRelConverterTest.java:3864)
at 
org.apache.calcite.test.SqlToRelConverterTest$Sql.ok(SqlToRelConverterTest.java:3856)
at 
org.apache.calcite.test.SqlToRelConverterTest.testDotLiteralAfterRow(SqlToRelConverterTest.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at 
org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:675)
at 
org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at 
org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:125)
at 
org.junit.jupiter.engine.extension.TimeoutInvocation.proceed(TimeoutInvocation.java:46)
at 
org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:139)
at 
org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:131)
at 
org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:81)
at 
org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at 
org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at 
org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:104)
at 
org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:62)
at 
org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:43)
at 
org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:35)
at 
org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at 
org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at 
org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:202)
at