Github user gparai commented on a diff in the pull request:
https://github.com/apache/drill/pull/817#discussion_r112072391
--- Diff:
contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/MapRDBPushFilterIntoScan.java
---
@@ -137,11 +137,13 @@ protected void
doPushFilterIntoJsonGroupScan(RelOptRuleCall call,
return; //no filter pushdown ==> No transformation.
}
+ // Pass tableStats from old groupScan so we do not go and fetch stats
(an expensive operation) again from MapR DB client.
final JsonTableGroupScan newGroupsScan = new
JsonTableGroupScan(groupScan.getUserName(),
groupScan.getStoragePlugin(),
groupScan.getFormatPlugin(),
newScanSpec,
-
groupScan.getColumns());
+
groupScan.getColumns(),
+
groupScan.getTableStats());
--- End diff --
We should try to use `clone()` here. All we are doing is copying stuff from
one groupscan to another. `JsonTableGroupScan` already has a clone which clones
everything except columns.
`@Override
public GroupScan clone(List<SchemaPath> columns)
{ JsonTableGroupScan newScan = new JsonTableGroupScan(this);
newScan.columns = columns; return newScan; }`
We can create another which would clone everything except scanSpec. This
can be used to pass in the `newScanSpec` generated here. Doing this would also
clone the `regionsToScan` saving the call to `init()`.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---