strongduanmu opened a new issue, #21388: URL: https://github.com/apache/shardingsphere/issues/21388
## Bug Report ### Which version of ShardingSphere did you use? https://github.com/apache/shardingsphere/commit/e2f2e4491006d7e57615b1926913921e9414b9df ### Which project did you use? ShardingSphere-JDBC or ShardingSphere-Proxy? ShardingSphere-Proxy ### Expected behavior Execute `SELECT MAX(p.price) AS max_price, MIN(p.price) AS min_price, SUM(p.price) AS sum_price, AVG(p.price) AS avg_price, COUNT(1) AS count FROM t_order o INNER JOIN t_order_item i ON o.order_id = i.order_id INNER JOIN t_product p ON i.product_id = p.product_id GROUP BY o.order_id HAVING SUM(p.price) > 10000;` successfully. ### Actual behavior ```sql [ERROR] 2022-10-08 17:23:24.832 [Connection-1-ThreadExecutor] o.a.s.p.f.c.CommandExecutorTask - Exception occur: org.apache.calcite.plan.RelOptPlanner$CannotPlanException: There are not enough rules to produce a node with desired properties: convention=ENUMERABLE, sort=[]. Missing conversion is LogicalAggregate[convention: NONE -> ENUMERABLE] There is 1 empty subset: rel#999:RelSubset#10.ENUMERABLE.[], the relevant part of the original plan is as follows 972:LogicalAggregate(group=[{0}], sum_price=[SUM($1)], avg_price=[AVG($1)], count=[COUNT()]) 970:LogicalCalc(subset=[rel#971:RelSubset#9.NONE.[]], expr#0..3=[{inputs}], order_id=[$t0], price=[$t3]) 968:LogicalJoin(subset=[rel#969:RelSubset#8.NONE.[]], condition=[=($1, $2)], joinType=[inner]) 963:LogicalCalc(subset=[rel#964:RelSubset#5.NONE.[]], expr#0..2=[{inputs}], order_id=[$t0], product_id=[$t2]) 961:LogicalJoin(subset=[rel#962:RelSubset#4.NONE.[]], condition=[=($0, $1)], joinType=[inner]) 956:LogicalCalc(subset=[rel#957:RelSubset#1.NONE.[]], expr#0..5=[{inputs}], order_id=[$t0]) 892:LogicalTableScan(subset=[rel#955:RelSubset#0.NONE.[]], table=[[public, t_order]]) 959:LogicalCalc(subset=[rel#960:RelSubset#3.NONE.[]], expr#0..5=[{inputs}], order_id=[$t1], product_id=[$t3]) 894:LogicalTableScan(subset=[rel#958:RelSubset#2.NONE.[]], table=[[public, t_order_item]]) 966:LogicalCalc(subset=[rel#967:RelSubset#7.NONE.[]], expr#0..5=[{inputs}], product_id=[$t0], price=[$t3]) 898:LogicalTableScan(subset=[rel#965:RelSubset#6.NONE.[]], table=[[public, t_product]]) Root: rel#976:RelSubset#11.ENUMERABLE.[] Original rel: LogicalCalc(subset=[rel#976:RelSubset#11.ENUMERABLE.[]], expr#0..3=[{inputs}], sum_price=[$t1], avg_price=[$t2], count=[$t3]): rowcount = 2250.0, cumulative cost = {2250.0 rows, 15750.0 cpu, 0.0 io}, id = 974 LogicalAggregate(subset=[rel#973:RelSubset#10.NONE.[]], group=[{0}], sum_price=[SUM($1)], avg_price=[AVG($1)], count=[COUNT()]): rowcount = 2250.0, cumulative cost = {3121.8751072883606 rows, 0.0 cpu, 0.0 io}, id = 972 LogicalCalc(subset=[rel#971:RelSubset#9.NONE.[]], expr#0..3=[{inputs}], order_id=[$t0], price=[$t3]): rowcount = 22500.0, cumulative cost = {22500.0 rows, 135000.0 cpu, 0.0 io}, id = 970 LogicalJoin(subset=[rel#969:RelSubset#8.NONE.[]], condition=[=($1, $2)], joinType=[inner]): rowcount = 22500.0, cumulative cost = {22500.0 rows, 0.0 cpu, 0.0 io}, id = 968 LogicalCalc(subset=[rel#964:RelSubset#5.NONE.[]], expr#0..2=[{inputs}], order_id=[$t0], product_id=[$t2]): rowcount = 1500.0, cumulative cost = {1500.0 rows, 7500.0 cpu, 0.0 io}, id = 963 LogicalJoin(subset=[rel#962:RelSubset#4.NONE.[]], condition=[=($0, $1)], joinType=[inner]): rowcount = 1500.0, cumulative cost = {1500.0 rows, 0.0 cpu, 0.0 io}, id = 961 LogicalCalc(subset=[rel#957:RelSubset#1.NONE.[]], expr#0..5=[{inputs}], order_id=[$t0]): rowcount = 100.0, cumulative cost = {100.0 rows, 700.0 cpu, 0.0 io}, id = 956 LogicalTableScan(subset=[rel#955:RelSubset#0.NONE.[]], table=[[public, t_order]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 892 LogicalCalc(subset=[rel#960:RelSubset#3.NONE.[]], expr#0..5=[{inputs}], order_id=[$t1], product_id=[$t3]): rowcount = 100.0, cumulative cost = {100.0 rows, 800.0 cpu, 0.0 io}, id = 959 LogicalTableScan(subset=[rel#958:RelSubset#2.NONE.[]], table=[[public, t_order_item]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 894 LogicalCalc(subset=[rel#967:RelSubset#7.NONE.[]], expr#0..5=[{inputs}], product_id=[$t0], price=[$t3]): rowcount = 100.0, cumulative cost = {100.0 rows, 800.0 cpu, 0.0 io}, id = 966 LogicalTableScan(subset=[rel#965:RelSubset#6.NONE.[]], table=[[public, t_product]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 898 Sets: Set#0, type: RecordType(JavaType(class java.lang.Integer) order_id, JavaType(class java.lang.Integer) user_id, JavaType(class java.lang.String) status, JavaType(class java.lang.Integer) merchant_id, JavaType(class java.lang.String) remark, JavaType(class java.sql.Date) creation_date) rel#955:RelSubset#0.NONE.[], best=null rel#892:LogicalTableScan.NONE.[](table=[public, t_order]), rowcount=100.0, cumulative cost={inf} rel#979:RelSubset#0.ENUMERABLE.[], best=rel#978 rel#978:EnumerableTableScan.ENUMERABLE.[](table=[public, t_order]), rowcount=100.0, cumulative cost={100.0 rows, 101.0 cpu, 0.0 io} Set#1, type: RecordType(JavaType(class java.lang.Integer) order_id) rel#957:RelSubset#1.NONE.[], best=null rel#956:LogicalCalc.NONE.[](input=RelSubset#955,expr#0..5={inputs},0=$t0), rowcount=100.0, cumulative cost={inf} rel#981:RelSubset#1.ENUMERABLE.[], best=rel#980 rel#980:EnumerableCalc.ENUMERABLE.[](input=RelSubset#979,expr#0..5={inputs},0=$t0), rowcount=100.0, cumulative cost={200.0 rows, 801.0 cpu, 0.0 io} Set#2, type: RecordType(JavaType(class java.lang.Integer) item_id, JavaType(class java.lang.Integer) order_id, JavaType(class java.lang.Integer) user_id, JavaType(class java.lang.Integer) product_id, JavaType(class java.lang.Integer) quantity, JavaType(class java.sql.Date) creation_date) rel#958:RelSubset#2.NONE.[], best=null rel#894:LogicalTableScan.NONE.[](table=[public, t_order_item]), rowcount=100.0, cumulative cost={inf} rel#983:RelSubset#2.ENUMERABLE.[], best=rel#982 rel#982:EnumerableTableScan.ENUMERABLE.[](table=[public, t_order_item]), rowcount=100.0, cumulative cost={100.0 rows, 101.0 cpu, 0.0 io} Set#3, type: RecordType(JavaType(class java.lang.Integer) order_id, JavaType(class java.lang.Integer) product_id) rel#960:RelSubset#3.NONE.[], best=null rel#959:LogicalCalc.NONE.[](input=RelSubset#958,expr#0..5={inputs},0=$t1,1=$t3), rowcount=100.0, cumulative cost={inf} rel#985:RelSubset#3.ENUMERABLE.[], best=rel#984 rel#984:EnumerableCalc.ENUMERABLE.[](input=RelSubset#983,expr#0..5={inputs},0=$t1,1=$t3), rowcount=100.0, cumulative cost={200.0 rows, 901.0 cpu, 0.0 io} Set#4, type: RecordType(JavaType(class java.lang.Integer) order_id, JavaType(class java.lang.Integer) order_id0, JavaType(class java.lang.Integer) product_id) rel#962:RelSubset#4.NONE.[], best=null rel#961:LogicalJoin.NONE.[](left=RelSubset#957,right=RelSubset#960,condition==($0, $1),joinType=inner), rowcount=1500.0, cumulative cost={inf} rel#987:RelSubset#4.ENUMERABLE.[], best=rel#986 rel#986:EnumerableHashJoin.ENUMERABLE.[](left=RelSubset#981,right=RelSubset#985,condition==($0, $1),joinType=inner), rowcount=1500.0, cumulative cost={2461.517018598809 rows, 1702.0 cpu, 0.0 io} Set#5, type: RecordType(JavaType(class java.lang.Integer) order_id, JavaType(class java.lang.Integer) product_id) rel#964:RelSubset#5.NONE.[], best=null rel#963:LogicalCalc.NONE.[](input=RelSubset#962,expr#0..2={inputs},0=$t0,1=$t2), rowcount=1500.0, cumulative cost={inf} rel#989:RelSubset#5.ENUMERABLE.[], best=rel#988 rel#988:EnumerableCalc.ENUMERABLE.[](input=RelSubset#987,expr#0..2={inputs},0=$t0,1=$t2), rowcount=1500.0, cumulative cost={3961.517018598809 rows, 9202.0 cpu, 0.0 io} Set#6, type: RecordType(JavaType(class java.lang.Integer) product_id, JavaType(class java.lang.String) product_name, JavaType(class java.lang.Integer) category_id, JavaType(class java.math.BigDecimal) price, JavaType(class java.lang.String) status, JavaType(class java.sql.Date) creation_date) rel#965:RelSubset#6.NONE.[], best=null rel#898:LogicalTableScan.NONE.[](table=[public, t_product]), rowcount=100.0, cumulative cost={inf} rel#991:RelSubset#6.ENUMERABLE.[], best=rel#990 rel#990:EnumerableTableScan.ENUMERABLE.[](table=[public, t_product]), rowcount=100.0, cumulative cost={100.0 rows, 101.0 cpu, 0.0 io} Set#7, type: RecordType(JavaType(class java.lang.Integer) product_id, JavaType(class java.math.BigDecimal) price) rel#967:RelSubset#7.NONE.[], best=null rel#966:LogicalCalc.NONE.[](input=RelSubset#965,expr#0..5={inputs},0=$t0,1=$t3), rowcount=100.0, cumulative cost={inf} rel#993:RelSubset#7.ENUMERABLE.[], best=rel#992 rel#992:EnumerableCalc.ENUMERABLE.[](input=RelSubset#991,expr#0..5={inputs},0=$t0,1=$t3), rowcount=100.0, cumulative cost={200.0 rows, 901.0 cpu, 0.0 io} Set#8, type: RecordType(JavaType(class java.lang.Integer) order_id, JavaType(class java.lang.Integer) product_id, JavaType(class java.lang.Integer) product_id0, JavaType(class java.math.BigDecimal) price) rel#969:RelSubset#8.NONE.[], best=null rel#968:LogicalJoin.NONE.[](left=RelSubset#964,right=RelSubset#967,condition==($1, $2),joinType=inner), rowcount=22500.0, cumulative cost={inf} rel#995:RelSubset#8.ENUMERABLE.[], best=rel#994 rel#994:EnumerableHashJoin.ENUMERABLE.[](left=RelSubset#989,right=RelSubset#993,condition==($1, $2),joinType=inner), rowcount=22500.0, cumulative cost={37731.347599234265 rows, 10103.0 cpu, 0.0 io} Set#9, type: RecordType(JavaType(class java.lang.Integer) order_id, JavaType(class java.math.BigDecimal) price) rel#971:RelSubset#9.NONE.[], best=null rel#970:LogicalCalc.NONE.[](input=RelSubset#969,expr#0..3={inputs},0=$t0,1=$t3), rowcount=22500.0, cumulative cost={inf} rel#997:RelSubset#9.ENUMERABLE.[], best=rel#996 rel#996:EnumerableCalc.ENUMERABLE.[](input=RelSubset#995,expr#0..3={inputs},0=$t0,1=$t3), rowcount=22500.0, cumulative cost={60231.347599234265 rows, 145103.0 cpu, 0.0 io} Set#10, type: RecordType(JavaType(class java.lang.Integer) order_id, JavaType(class java.math.BigDecimal) sum_price, JavaType(class java.math.BigDecimal) avg_price, BIGINT count) rel#973:RelSubset#10.NONE.[], best=null rel#972:LogicalAggregate.NONE.[](input=RelSubset#971,group={0},sum_price=SUM($1),avg_price=AVG($1),count=COUNT()), rowcount=2250.0, cumulative cost={inf} rel#999:RelSubset#10.ENUMERABLE.[], best=null Set#11, type: RecordType(JavaType(class java.math.BigDecimal) sum_price, JavaType(class java.math.BigDecimal) avg_price, BIGINT count) rel#975:RelSubset#11.NONE.[], best=null rel#974:LogicalCalc.NONE.[](input=RelSubset#973,expr#0..3={inputs},0=$t1,1=$t2,2=$t3), rowcount=2250.0, cumulative cost={inf} rel#976:RelSubset#11.ENUMERABLE.[], best=null rel#977:AbstractConverter.ENUMERABLE.[](input=RelSubset#975,convention=ENUMERABLE,sort=[]), rowcount=2250.0, cumulative cost={inf} rel#1000:EnumerableCalc.ENUMERABLE.[](input=RelSubset#999,expr#0..3={inputs},0=$t1,1=$t2,2=$t3), rowcount=2250.0, cumulative cost={inf} Graphviz: digraph G { root [style=filled,label="Root"]; subgraph cluster0{ label="Set 0 RecordType(JavaType(class java.lang.Integer) order_id, JavaType(class java.lang.Integer) user_id, JavaType(class java.lang.String) status, JavaType(class java.lang.Integer) merchant_id, JavaType(class java.lang.String) remark, JavaType(class java.sql.Date) creation_date)"; rel892 [label="rel#892:LogicalTableScan\ntable=[public, t_order]\nrows=100.0, cost={inf}",shape=box] rel978 [label="rel#978:EnumerableTableScan\ntable=[public, t_order]\nrows=100.0, cost={100.0 rows, 101.0 cpu, 0.0 io}",color=blue,shape=box] subset955 [label="rel#955:RelSubset#0.NONE.[]"] subset979 [label="rel#979:RelSubset#0.ENUMERABLE.[]"] } subgraph cluster1{ label="Set 1 RecordType(JavaType(class java.lang.Integer) order_id)"; rel956 [label="rel#956:LogicalCalc\ninput=RelSubset#955,expr#0..5={inputs},0=$t0\nrows=100.0, cost={inf}",shape=box] rel980 [label="rel#980:EnumerableCalc\ninput=RelSubset#979,expr#0..5={inputs},0=$t0\nrows=100.0, cost={200.0 rows, 801.0 cpu, 0.0 io}",color=blue,shape=box] subset957 [label="rel#957:RelSubset#1.NONE.[]"] subset981 [label="rel#981:RelSubset#1.ENUMERABLE.[]"] } subgraph cluster2{ label="Set 2 RecordType(JavaType(class java.lang.Integer) item_id, JavaType(class java.lang.Integer) order_id, JavaType(class java.lang.Integer) user_id, JavaType(class java.lang.Integer) product_id, JavaType(class java.lang.Integer) quantity, JavaType(class java.sql.Date) creation_date)"; rel894 [label="rel#894:LogicalTableScan\ntable=[public, t_order_item]\nrows=100.0, cost={inf}",shape=box] rel982 [label="rel#982:EnumerableTableScan\ntable=[public, t_order_item]\nrows=100.0, cost={100.0 rows, 101.0 cpu, 0.0 io}",color=blue,shape=box] subset958 [label="rel#958:RelSubset#2.NONE.[]"] subset983 [label="rel#983:RelSubset#2.ENUMERABLE.[]"] } subgraph cluster3{ label="Set 3 RecordType(JavaType(class java.lang.Integer) order_id, JavaType(class java.lang.Integer) product_id)"; rel959 [label="rel#959:LogicalCalc\ninput=RelSubset#958,expr#0..5={inputs},0=$t1,1=$t3\nrows=100.0, cost={inf}",shape=box] rel984 [label="rel#984:EnumerableCalc\ninput=RelSubset#983,expr#0..5={inputs},0=$t1,1=$t3\nrows=100.0, cost={200.0 rows, 901.0 cpu, 0.0 io}",color=blue,shape=box] subset960 [label="rel#960:RelSubset#3.NONE.[]"] subset985 [label="rel#985:RelSubset#3.ENUMERABLE.[]"] } subgraph cluster4{ label="Set 4 RecordType(JavaType(class java.lang.Integer) order_id, JavaType(class java.lang.Integer) order_id0, JavaType(class java.lang.Integer) product_id)"; rel961 [label="rel#961:LogicalJoin\nleft=RelSubset#957,right=RelSubset#960,condition==($0, $1),joinType=inner\nrows=1500.0, cost={inf}",shape=box] rel986 [label="rel#986:EnumerableHashJoin\nleft=RelSubset#981,right=RelSubset#985,condition==($0, $1),joinType=inner\nrows=1500.0, cost={2461.517018598809 rows, 1702.0 cpu, 0.0 io}",color=blue,shape=box] subset962 [label="rel#962:RelSubset#4.NONE.[]"] subset987 [label="rel#987:RelSubset#4.ENUMERABLE.[]"] } subgraph cluster5{ label="Set 5 RecordType(JavaType(class java.lang.Integer) order_id, JavaType(class java.lang.Integer) product_id)"; rel963 [label="rel#963:LogicalCalc\ninput=RelSubset#962,expr#0..2={inputs},0=$t0,1=$t2\nrows=1500.0, cost={inf}",shape=box] rel988 [label="rel#988:EnumerableCalc\ninput=RelSubset#987,expr#0..2={inputs},0=$t0,1=$t2\nrows=1500.0, cost={3961.517018598809 rows, 9202.0 cpu, 0.0 io}",color=blue,shape=box] subset964 [label="rel#964:RelSubset#5.NONE.[]"] subset989 [label="rel#989:RelSubset#5.ENUMERABLE.[]"] } subgraph cluster6{ label="Set 6 RecordType(JavaType(class java.lang.Integer) product_id, JavaType(class java.lang.String) product_name, JavaType(class java.lang.Integer) category_id, JavaType(class java.math.BigDecimal) price, JavaType(class java.lang.String) status, JavaType(class java.sql.Date) creation_date)"; rel898 [label="rel#898:LogicalTableScan\ntable=[public, t_product]\nrows=100.0, cost={inf}",shape=box] rel990 [label="rel#990:EnumerableTableScan\ntable=[public, t_product]\nrows=100.0, cost={100.0 rows, 101.0 cpu, 0.0 io}",color=blue,shape=box] subset965 [label="rel#965:RelSubset#6.NONE.[]"] subset991 [label="rel#991:RelSubset#6.ENUMERABLE.[]"] } subgraph cluster7{ label="Set 7 RecordType(JavaType(class java.lang.Integer) product_id, JavaType(class java.math.BigDecimal) price)"; rel966 [label="rel#966:LogicalCalc\ninput=RelSubset#965,expr#0..5={inputs},0=$t0,1=$t3\nrows=100.0, cost={inf}",shape=box] rel992 [label="rel#992:EnumerableCalc\ninput=RelSubset#991,expr#0..5={inputs},0=$t0,1=$t3\nrows=100.0, cost={200.0 rows, 901.0 cpu, 0.0 io}",color=blue,shape=box] subset967 [label="rel#967:RelSubset#7.NONE.[]"] subset993 [label="rel#993:RelSubset#7.ENUMERABLE.[]"] } subgraph cluster8{ label="Set 8 RecordType(JavaType(class java.lang.Integer) order_id, JavaType(class java.lang.Integer) product_id, JavaType(class java.lang.Integer) product_id0, JavaType(class java.math.BigDecimal) price)"; rel968 [label="rel#968:LogicalJoin\nleft=RelSubset#964,right=RelSubset#967,condition==($1, $2),joinType=inner\nrows=22500.0, cost={inf}",shape=box] rel994 [label="rel#994:EnumerableHashJoin\nleft=RelSubset#989,right=RelSubset#993,condition==($1, $2),joinType=inner\nrows=22500.0, cost={37731.347599234265 rows, 10103.0 cpu, 0.0 io}",color=blue,shape=box] subset969 [label="rel#969:RelSubset#8.NONE.[]"] subset995 [label="rel#995:RelSubset#8.ENUMERABLE.[]"] } subgraph cluster9{ label="Set 9 RecordType(JavaType(class java.lang.Integer) order_id, JavaType(class java.math.BigDecimal) price)"; rel970 [label="rel#970:LogicalCalc\ninput=RelSubset#969,expr#0..3={inputs},0=$t0,1=$t3\nrows=22500.0, cost={inf}",shape=box] rel996 [label="rel#996:EnumerableCalc\ninput=RelSubset#995,expr#0..3={inputs},0=$t0,1=$t3\nrows=22500.0, cost={60231.347599234265 rows, 145103.0 cpu, 0.0 io}",color=blue,shape=box] subset971 [label="rel#971:RelSubset#9.NONE.[]"] subset997 [label="rel#997:RelSubset#9.ENUMERABLE.[]"] } subgraph cluster10{ label="Set 10 RecordType(JavaType(class java.lang.Integer) order_id, JavaType(class java.math.BigDecimal) sum_price, JavaType(class java.math.BigDecimal) avg_price, BIGINT count)"; rel972 [label="rel#972:LogicalAggregate\ninput=RelSubset#971,group={0},sum_price=SUM($1),avg_price=AVG($1),count=COUNT()\nrows=2250.0, cost={inf}",shape=box] subset973 [label="rel#973:RelSubset#10.NONE.[]"] subset999 [label="rel#999:RelSubset#10.ENUMERABLE.[]",color=red] } subgraph cluster11{ label="Set 11 RecordType(JavaType(class java.math.BigDecimal) sum_price, JavaType(class java.math.BigDecimal) avg_price, BIGINT count)"; rel974 [label="rel#974:LogicalCalc\ninput=RelSubset#973,expr#0..3={inputs},0=$t1,1=$t2,2=$t3\nrows=2250.0, cost={inf}",shape=box] rel977 [label="rel#977:AbstractConverter\ninput=RelSubset#975,convention=ENUMERABLE,sort=[]\nrows=2250.0, cost={inf}",shape=box] rel1000 [label="rel#1000:EnumerableCalc\ninput=RelSubset#999,expr#0..3={inputs},0=$t1,1=$t2,2=$t3\nrows=2250.0, cost={inf}",shape=box] subset975 [label="rel#975:RelSubset#11.NONE.[]"] subset976 [label="rel#976:RelSubset#11.ENUMERABLE.[]"] } root -> subset976; subset955 -> rel892; subset979 -> rel978[color=blue]; subset957 -> rel956; rel956 -> subset955; subset981 -> rel980[color=blue]; rel980 -> subset979[color=blue]; subset958 -> rel894; subset983 -> rel982[color=blue]; subset960 -> rel959; rel959 -> subset958; subset985 -> rel984[color=blue]; rel984 -> subset983[color=blue]; subset962 -> rel961; rel961 -> subset957[label="0"]; rel961 -> subset960[label="1"]; subset987 -> rel986[color=blue]; rel986 -> subset981[color=blue,label="0"]; rel986 -> subset985[color=blue,label="1"]; subset964 -> rel963; rel963 -> subset962; subset989 -> rel988[color=blue]; rel988 -> subset987[color=blue]; subset965 -> rel898; subset991 -> rel990[color=blue]; subset967 -> rel966; rel966 -> subset965; subset993 -> rel992[color=blue]; rel992 -> subset991[color=blue]; subset969 -> rel968; rel968 -> subset964[label="0"]; rel968 -> subset967[label="1"]; subset995 -> rel994[color=blue]; rel994 -> subset989[color=blue,label="0"]; rel994 -> subset993[color=blue,label="1"]; subset971 -> rel970; rel970 -> subset969; subset997 -> rel996[color=blue]; rel996 -> subset995[color=blue]; subset973 -> rel972; rel972 -> subset971; subset975 -> rel974; rel974 -> subset973; subset976 -> rel977; rel977 -> subset975; subset976 -> rel1000; rel1000 -> subset999; } at org.apache.calcite.plan.volcano.RelSubset$CheapestPlanReplacer.visit(RelSubset.java:709) at org.apache.calcite.plan.volcano.RelSubset.buildCheapestPlan(RelSubset.java:390) at org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.java:533) at org.apache.shardingsphere.sqlfederation.optimizer.SQLOptimizeEngine.optimizeWithCBO(SQLOptimizeEngine.java:69) at org.apache.shardingsphere.sqlfederation.optimizer.SQLOptimizeEngine.optimize(SQLOptimizeEngine.java:53) at org.apache.shardingsphere.sqlfederation.advanced.AdvancedSQLFederationExecutor.execute(AdvancedSQLFederationExecutor.java:141) at org.apache.shardingsphere.sqlfederation.advanced.AdvancedSQLFederationExecutor.executeQuery(AdvancedSQLFederationExecutor.java:110) at org.apache.shardingsphere.proxy.backend.communication.jdbc.JDBCDatabaseCommunicationEngine.doExecuteFederation(JDBCDatabaseCommunicationEngine.java:163) at org.apache.shardingsphere.proxy.backend.communication.jdbc.JDBCDatabaseCommunicationEngine.execute(JDBCDatabaseCommunicationEngine.java:121) at org.apache.shardingsphere.proxy.frontend.opengauss.command.query.simple.OpenGaussComQueryExecutor.execute(OpenGaussComQueryExecutor.java:76) at org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask.executeCommand(CommandExecutorTask.java:111) at org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask.run(CommandExecutorTask.java:78) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) ``` ### Reason analyze (If you can) ### Steps to reproduce the behavior, such as: SQL to execute, sharding rule configuration, when exception occur etc. ### Example codes for reproduce this issue (such as a github link). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
