[fix](planner)allow infer predicate for external table (#24227)
CREATE EXTERNAL TABLE `dim_server` (
`col1` varchar(50) NOT NULL,
`col2` varchar(50) NOT NULL
)
create view ads_oreo_sid_report
(
`col1` ,
`col2`
)
AS
select
tmp.col1,tmp.col2
from (
select 'abc' as col1,'def' as col2
) tmp
inner join dim_server ds on tmp.col1 = ds.col1 and tmp.col2 = ds.col2;
select * from ads_oreo_sid_report where col1='abc' and col2='def';
before this pr, col1='abc' and col2='def' can't be pushed to dim_server. now the 2 predicates can be pushed to odbc table.
This commit is contained in:
@ -88,6 +88,10 @@ public class MysqlScanNode extends ExternalScanNode {
|
||||
return output.toString();
|
||||
}
|
||||
output.append(prefix).append("Query: ").append(getMysqlQueryStr()).append("\n");
|
||||
if (!conjuncts.isEmpty()) {
|
||||
Expr expr = convertConjunctsToAndCompoundPredicate(conjuncts);
|
||||
output.append(prefix).append("PREDICATES: ").append(expr.toSql()).append("\n");
|
||||
}
|
||||
return output.toString();
|
||||
}
|
||||
|
||||
|
||||
@ -2047,7 +2047,8 @@ public class SingleNodePlanner {
|
||||
throw new UserException("Not supported table type: " + tblRef.getTable().getType());
|
||||
}
|
||||
if (scanNode instanceof OlapScanNode || scanNode instanceof EsScanNode
|
||||
|| scanNode instanceof FileQueryScanNode) {
|
||||
|| scanNode instanceof OdbcScanNode || scanNode instanceof JdbcScanNode
|
||||
|| scanNode instanceof FileQueryScanNode || scanNode instanceof MysqlScanNode) {
|
||||
if (analyzer.enableInferPredicate()) {
|
||||
PredicatePushDown.visitScanNode(scanNode, tblRef.getJoinOp(), analyzer);
|
||||
}
|
||||
|
||||
@ -220,6 +220,10 @@ public class JdbcScanNode extends ExternalScanNode {
|
||||
return output.toString();
|
||||
}
|
||||
output.append(prefix).append("QUERY: ").append(getJdbcQueryStr()).append("\n");
|
||||
if (!conjuncts.isEmpty()) {
|
||||
Expr expr = convertConjunctsToAndCompoundPredicate(conjuncts);
|
||||
output.append(prefix).append("PREDICATES: ").append(expr.toSql()).append("\n");
|
||||
}
|
||||
return output.toString();
|
||||
}
|
||||
|
||||
|
||||
@ -104,6 +104,10 @@ public class OdbcScanNode extends ExternalScanNode {
|
||||
return output.toString();
|
||||
}
|
||||
output.append(prefix).append("QUERY: ").append(getOdbcQueryStr()).append("\n");
|
||||
if (!conjuncts.isEmpty()) {
|
||||
Expr expr = convertConjunctsToAndCompoundPredicate(conjuncts);
|
||||
output.append(prefix).append("PREDICATES: ").append(expr.toSql()).append("\n");
|
||||
}
|
||||
return output.toString();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user