Github user ravipesala commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/1469#discussion_r152570693
--- Diff:
integration/spark-common/src/main/scala/org/apache/spark/sql/optimizer/CarbonDecoderOptimizerHelper.scala
---
@@ -59,6 +61,26 @@ case class CarbonDictionaryTempDecoder(
class CarbonDecoderProcessor {
+ val rm = universe.runtimeMirror(getClass.getClassLoader)
+
+// def getFields[T: TypeTag: reflect.ClassTag]( name: String, obj: T):
Any = {
+// val im = rm.reflect(obj)
+// typeOf[T].members.collect {
+// case m : MethodSymbol if m.isCaseAccessor &&
m.name.toString.equalsIgnoreCase(name) =>
+// val value = im.reflectMethod(m).apply()
+// value
+// } (collection.breakOut)
+// }
+
+ def getField[T: TypeTag: reflect.ClassTag]( name: String, obj: T): Any =
{
+ val im = rm.reflect(obj)
+
+ im.symbol.typeSignature.members.find(
+ _.name.toString.equals(name)).map(
+ l => im.reflectField(l.asTerm).get.asInstanceOf[LogicalPlan]
--- End diff --
type casting to logical plan is not required
---