Github user ravipesala commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/1672#discussion_r157739562
--- Diff:
integration/spark2/src/main/scala/org/apache/spark/sql/execution/strategy/CarbonLateDecodeStrategy.scala
---
@@ -130,6 +130,44 @@ private[sql] class CarbonLateDecodeStrategy extends
SparkStrategy {
table.carbonTable.getTableInfo.serialize())
}
+ /**
+ * Converts to physical RDD of carbon after pushing down applicable
filters.
+ * @param relation
+ * @param projects
+ * @param filterPredicates
+ * @param scanBuilder
+ * @return
+ */
+ private def pruneFilterProject(
+ relation: LogicalRelation,
+ projects: Seq[NamedExpression],
+ filterPredicates: Seq[Expression],
+ scanBuilder: (Seq[Attribute], Array[Filter],
+ ArrayBuffer[AttributeReference], Seq[String]) => RDD[InternalRow])
= {
+ val names = relation.catalogTable.get.partitionColumnNames
+ // Get the current partitions from table.
+ var partitions: Seq[String] = null
+ if (names.nonEmpty) {
+ val partitionSet = AttributeSet(names
+ .map(p => relation.output.find(_.name.equalsIgnoreCase(p)).get))
+ val partitionKeyFilters =
+
ExpressionSet(ExpressionSet(filterPredicates).filter(_.references.subsetOf(partitionSet)))
+ partitions =
+ CarbonFilters.getPartitions(
--- End diff --
ok
---