tajo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hyunsik Choi (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (TAJO-92) LogicalNode misses some fields when it converts to json
Date Mon, 29 Jul 2013 02:57:48 GMT

    [ https://issues.apache.org/jira/browse/TAJO-92?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13722128#comment-13722128
] 

Hyunsik Choi commented on TAJO-92:
----------------------------------

Henry,

We use GSON as JSON (de)serialization frameowork. In order to serialize an object to a JSON
document, all attributes should be stored in member variables of an object. But, some objects
are designed to be (de)serialized to both JSON and Protocol buffer type objects. For protocol
buffer, we use the lazy copy approach (see TAJO-95). Actually, this approach looks efficiency,
but error prone. This bug (TAJO-92) is an example case of that.
                
> LogicalNode misses some fields when it converts to json
> -------------------------------------------------------
>
>                 Key: TAJO-92
>                 URL: https://issues.apache.org/jira/browse/TAJO-92
>             Project: Tajo
>          Issue Type: Bug
>          Components: optimizer
>            Reporter: hyoungjunkim
>         Attachments: TAJO-92_TEST.patch
>
>
> See title. The below code reproduces the error
> {code}
>     PlanningContext context = analyzer.parse(
>             "select table0.age, count(*) as count_age from table0 group by table0.age");
>     LogicalNode plan = logicalPlanner.createPlan(context);
>     plan = LogicalOptimizer.optimize(context, plan);
>     String planJSON = plan.toJSON();
>     LogicalNode planFromJSON = GsonCreator.getInstance().fromJson(planJSON, LogicalNode.class);
>     MasterPlan globalPlan = planner.build(queryId, (LogicalRootNode) planFromJSON);
> {code}
> {noformat}
> com.google.protobuf.UninitializedMessageException: Message missing required fields: type
> 	at com.google.protobuf.AbstractMessage$Builder.newUninitializedMessageException(AbstractMessage.java:605)
> 	at org.apache.tajo.catalog.proto.CatalogProtos$FunctionDescProto$Builder.build(CatalogProtos.java:6999)
> 	at org.apache.tajo.catalog.FunctionDesc.mergeLocalToProto(FunctionDesc.java:231)
> 	at org.apache.tajo.catalog.FunctionDesc.getProto(FunctionDesc.java:193)
> 	at org.apache.tajo.catalog.FunctionDesc.equals(FunctionDesc.java:168)
> 	at org.apache.tajo.util.TUtil.checkEquals(TUtil.java:44)
> 	at org.apache.tajo.engine.eval.FuncEval.equals(FuncEval.java:93)
> 	at org.apache.tajo.engine.planner.PlannerUtil.transformGroupbyTo2P(PlannerUtil.java:196)
> 	at org.apache.tajo.engine.planner.PlannerUtil.transformGroupbyTo2PWithStore(PlannerUtil.java:242)
> 	at org.apache.tajo.master.GlobalPlanner$GlobalPlanBuilder.visit(GlobalPlanner.java:136)
> 	at org.apache.tajo.engine.planner.logical.UnaryNode.postOrder(UnaryNode.java:66)
> 	at org.apache.tajo.engine.planner.logical.UnaryNode.postOrder(UnaryNode.java:65)
> 	at org.apache.tajo.engine.planner.logical.UnaryNode.postOrder(UnaryNode.java:65)
> 	at org.apache.tajo.master.GlobalPlanner.convertTo2Phase(GlobalPlanner.java:279)
> 	at org.apache.tajo.master.GlobalPlanner.build(GlobalPlanner.java:99)
> {noformat}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message