Hi all, I’m learning query optimization recently. As known, Calcite uses a volcano optimizer which is different from other optimizers such as SparkSQL’s Catalyst. But I’m curious how does volcano optimizer implement rules like `ColumnPruning` in Catalyst? Or which transformation rule does Calcite use to achieve it? For example, we have such a SQL:
select a from t where b > 10; If the schema of t is `a int, b int, c int, …`, we only need two columns ‘a’ and ‘b’ when scan table ‘t’. Mingcong Han 2019.9.12