[ 
https://issues.apache.org/jira/browse/CALCITE-5712?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17724821#comment-17724821
 ] 

Min-Seok Kim commented on CALCITE-5712:
---------------------------------------

coroutine, logging library is not the reason of this bug.


it is related by 

 

[https://github.com/apache/calcite/blob/9c33d7aeefe082bf5f7be617ef231e1285418a6c/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoPlanner.java#L618-L620]

 

*FilterableTable with DEBUG level always throw the Exception.*

> FilterableTable with Kotlin coroutine(kotest) and logback fails:  RelSubset 
> ... has wrong best cost 
> ----------------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-5712
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5712
>             Project: Calcite
>          Issue Type: Bug
>         Environment: Operating System: macOS Ventura 13.3.1(22E261)
> JDK Version: openjdk version "17.0.5" 2022-10-18 LTS
>            Reporter: Min-Seok Kim
>            Priority: Major
>         Attachments: image-2023-05-19-16-09-28-894.png
>
>
> The MyFilterableTable class is not functioning properly when used in 
> conjunction with coroutines (kotest) and logback. The issue can be reproduced 
> by following the steps outlined in the GitHub repository provided: 
> [https://github.com/emesday/filterabletable-coroutine/blob/main/src/test/kotlin/MinimalTest.kt]
> {code:java}
> class MyFilterableTable : AbstractTable(), FilterableTable {
>     override fun getRowType(typeFactory: RelDataTypeFactory): RelDataType {
>         return typeFactory.createStructType(
>             listOf(typeFactory.createSqlType(SqlTypeName.BIGINT), 
> typeFactory.createSqlType(SqlTypeName.VARCHAR)),
>             listOf("ID", "NAME")
>         )
>     }    override fun scan(root: DataContext?, filters: 
> MutableList<RexNode>?): Enumerable<Array<Any?>> {
>         return Linq4j.asEnumerable(arrayOf(arrayOf(1L, "John")))
>     }
> }
> {code}
> *Steps to Reproduce:*
>  # Clone the GitHub repository 
> [https://github.com/emesday/filterabletable-coroutine]
>  # USE_LOGBACK=true ./gradlew test -i
>  ## this executes MinimalTest in src/test/kotlin/MinimalTest.kt
> *Expected Behavior:*
> The MyFilterableTable class should work correctly with coroutines (kotest) 
> and logback.
> *Actual Behavior:*
> The MyFilterableTable class fails to function as expected when used in 
> combination with coroutines (kotest) and logback. The failure message in the 
> test case is as follows:
> {code:java}
> MinimalTest > MyFilterableTable fails FAILED
>     java.lang.AssertionError: RelSubset [rel#78:RelSubset#2.ENUMERABLE.[]] 
> has wrong best cost {130.0 rows, 216.0 cpu, 0.0 io}. Correct cost is {150.5 
> rows, 150.505 cpu, 0.0 io}
>         at org.apache.calcite.util.Litmus.lambda$static$0(Litmus.java:31) 
> {code}
> *Additional Information:*
>  * Note that the MyScannableTable class is not affected by this issue.
>  * When executing the test individually by running the 'MyFilterableTable 
> fails' function using the IntelliJ plugin the MyFilterableTable class works 
> correctly.
> !image-2023-05-19-16-09-28-894.png|width=319,height=57!
> Please feel free to make any necessary adjustments or additions to the 
> provided information.
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to