Skip to content

Commit 08f03ef

Browse files
committed
fix(EXPB-4878): Support parameters in Nucleus Resource Views
1 parent 147ee63 commit 08f03ef

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

core/src/main/java/org/apache/calcite/schema/impl/ViewTable.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
*/
1717
package org.apache.calcite.schema.impl;
1818

19+
import java.util.Optional;
20+
1921
import org.apache.calcite.adapter.java.AbstractQueryableTable;
2022
import org.apache.calcite.jdbc.CalciteSchema;
2123
import org.apache.calcite.linq4j.QueryProvider;
@@ -26,6 +28,8 @@
2628
import org.apache.calcite.rel.RelRoot;
2729
import org.apache.calcite.rel.RelShuttleImpl;
2830
import org.apache.calcite.rel.core.TableScan;
31+
import org.apache.calcite.rel.hint.Hintable;
32+
import org.apache.calcite.rel.hint.RelHint;
2933
import org.apache.calcite.rel.type.RelDataType;
3034
import org.apache.calcite.rel.type.RelDataTypeFactory;
3135
import org.apache.calcite.rel.type.RelProtoDataType;
@@ -137,7 +141,16 @@ private RelRoot expandView(RelOptTable.ToRelContext context,
137141
final TranslatableTable translatableTable =
138142
table.unwrap(TranslatableTable.class);
139143
if (translatableTable != null) {
140-
return translatableTable.toRel(context, table);
144+
RelNode result = translatableTable.toRel(context, table);
145+
if ( result instanceof Hintable) {
146+
Optional<RelHint> parameter = scan.getHints().stream()
147+
.filter(hint -> hint.hintName.equals("PARAMETERS"))
148+
.findAny();
149+
if ( parameter.isPresent()) {
150+
result = ((Hintable)result).attachHints(ImmutableList.of(parameter.get()));
151+
}
152+
}
153+
return result;
141154
}
142155
return super.visit(scan);
143156
}

0 commit comments

Comments
 (0)