[ https://issues.apache.org/jira/browse/PIG-512?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Santhosh Srinivasan updated PIG-512: ------------------------------------ Attachment: PIG-512.patch Atached patch (PIG-512.patch) includes the following: 1. Logical Plan cloning which in turn includes logical operator cloning. Caveat: Only logical plan cloning is allowed and LogicalPlanCloner is the supported mechanism for cloning logical plans. The following operators do not support cloning: i. LOLoad ii. LOStore iii. LOStream 2. A visitor to remove redundant project( * ) operators that occur between two relational operators or between two expression operators. 3. Unit tests for 1 and 2 All unit tests pass. > Expressions in foreach lead to errors > ------------------------------------- > > Key: PIG-512 > URL: https://issues.apache.org/jira/browse/PIG-512 > Project: Pig > Issue Type: Bug > Affects Versions: types_branch > Reporter: Santhosh Srinivasan > Assignee: Santhosh Srinivasan > Fix For: types_branch > > Attachments: PIG-512.patch > > > Use of expressions that use the same sub-expressions in foreach lead to > translation errors. This issue is caused due to sharing operators across > nested plans. To remedy this issue, logical operators should be cloned and > not shared across plans. > {code} > grunt> a = load 'a' as (x, y, z); > grunt> b = foreach a { > >> exp1 = x + y; > >> exp2 = exp1 + x; > >> generate exp1, exp2; > >> } > grunt> explain b; > 2008-10-30 15:38:40,257 [main] WARN org.apache.pig.PigServer - bytearray is > implicitly casted to double under LOAdd Operator > 2008-10-30 15:38:40,258 [main] WARN org.apache.pig.PigServer - bytearray is > implicitly casted to double under LOAdd Operator > 2008-10-30 15:38:40,258 [main] WARN org.apache.pig.PigServer - bytearray is > implicitly casted to double under LOAdd Operator > Logical Plan: > Store sms-Thu Oct 30 11:27:27 PDT 2008-2609 Schema: {double,double} Type: > Unknown > | > |---ForEach sms-Thu Oct 30 11:27:27 PDT 2008-2605 Schema: {double,double} > Type: bag > | | > | Add sms-Thu Oct 30 11:27:27 PDT 2008-2600 FieldSchema: double Type: > double > | | > | |---Cast sms-Thu Oct 30 11:27:27 PDT 2008-2606 FieldSchema: double > Type: double > | | | > | | |---Project sms-Thu Oct 30 11:27:27 PDT 2008-2598 Projections: > [0] Overloaded: false FieldSchema: x: bytearray Type: bytearray > | | Input: Load sms-Thu Oct 30 11:27:27 PDT 2008-2597 > | | > | |---Cast sms-Thu Oct 30 11:27:27 PDT 2008-2607 FieldSchema: double > Type: double > | | > | |---Project sms-Thu Oct 30 11:27:27 PDT 2008-2599 Projections: > [1] Overloaded: false FieldSchema: y: bytearray Type: bytearray > | Input: Load sms-Thu Oct 30 11:27:27 PDT 2008-2597 > | | > | Add sms-Thu Oct 30 11:27:27 PDT 2008-2603 FieldSchema: double Type: > double > | | > | |---Project sms-Thu Oct 30 11:27:27 PDT 2008-2601 Projections: [*] > Overloaded: false FieldSchema: double Type: double > | | Input: Add sms-Thu Oct 30 11:27:27 PDT 2008-2600| > | | |---Add sms-Thu Oct 30 11:27:27 PDT 2008-2600 FieldSchema: double > Type: double > | | | > | | |---Project sms-Thu Oct 30 11:27:27 PDT 2008-2598 > Projections: [0] Overloaded: false FieldSchema: x: bytearray Type: bytearray > | | | Input: Load sms-Thu Oct 30 11:27:27 PDT 2008-2597 > | | | > | | |---Project sms-Thu Oct 30 11:27:27 PDT 2008-2599 > Projections: [1] Overloaded: false FieldSchema: y: bytearray Type: bytearray > | | Input: Load sms-Thu Oct 30 11:27:27 PDT 2008-2597 > | | > | |---Cast sms-Thu Oct 30 11:27:27 PDT 2008-2608 FieldSchema: double > Type: double > | | > | |---Project sms-Thu Oct 30 11:27:27 PDT 2008-2602 Projections: > [0] Overloaded: false FieldSchema: x: bytearray Type: bytearray > | Input: Load sms-Thu Oct 30 11:27:27 PDT 2008-2597 > | > |---Load sms-Thu Oct 30 11:27:27 PDT 2008-2597 Schema: {x: bytearray,y: > bytearray,z: bytearray} Type: bag > 2008-10-30 15:38:40,272 [main] ERROR org.apache.pig.impl.plan.OperatorPlan - > Attempt to give operator of type > org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POProject > multiple outputs. This operator does not support multiple outputs. > 2008-10-30 15:38:40,272 [main] ERROR > org.apache.pig.backend.hadoop.executionengine.physicalLayer.LogToPhyTranslationVisitor > - Invalid physical operators in the physical planAttempt to give operator of > type > org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POProject > multiple outputs. This operator does not support multiple outputs. > 2008-10-30 15:38:40,273 [main] ERROR org.apache.pig.tools.grunt.GruntParser - > java.io.IOException: Unable to explain alias b > [org.apache.pig.impl.plan.VisitorException] > at > org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.compile(HExecutionEngine.java:235) > at org.apache.pig.PigServer.compilePp(PigServer.java:731) > at org.apache.pig.PigServer.explain(PigServer.java:495) > at > org.apache.pig.tools.grunt.GruntParser.processExplain(GruntParser.java:155) > at > org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:193) > at > org.apache.pig.tools.grunt.GruntParser.parseContOnError(GruntParser.java:94) > at org.apache.pig.tools.grunt.Grunt.run(Grunt.java:58) > at org.apache.pig.Main.main(Main.java:282) > Caused by: org.apache.pig.backend.executionengine.ExecException: > org.apache.pig.impl.plan.VisitorException > ... 8 more > Caused by: org.apache.pig.impl.plan.VisitorException > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.LogToPhyTranslationVisitor.visit(LogToPhyTranslationVisitor.java:324) > at org.apache.pig.impl.logicalLayer.LOAdd.visit(LOAdd.java:69) > at org.apache.pig.impl.logicalLayer.LOAdd.visit(LOAdd.java:29) > at > org.apache.pig.impl.plan.DependencyOrderWalkerWOSeenChk.walk(DependencyOrderWalkerWOSeenChk.java:68) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.LogToPhyTranslationVisitor.visit(LogToPhyTranslationVisitor.java:805) > at > org.apache.pig.impl.logicalLayer.LOForEach.visit(LOForEach.java:121) > at org.apache.pig.impl.logicalLayer.LOForEach.visit(LOForEach.java:40) > at > org.apache.pig.impl.plan.DependencyOrderWalker.walk(DependencyOrderWalker.java:68) > at org.apache.pig.impl.plan.PlanVisitor.visit(PlanVisitor.java:51) > at > org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.compile(HExecutionEngine.java:232) > ... 7 more > Caused by: org.apache.pig.impl.plan.PlanException: Attempt to give operator > of type > org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POProject > multiple outputs. This operator does not support multiple outputs. > at > org.apache.pig.impl.plan.OperatorPlan.connect(OperatorPlan.java:158) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.plans.PhysicalPlan.connect(PhysicalPlan.java:89) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.LogToPhyTranslationVisitor.visit(LogToPhyTranslationVisitor.java:320) > ... 16 more > 2008-10-30 15:38:40,274 [main] ERROR org.apache.pig.tools.grunt.GruntParser - > Unable to explain alias b [org.apache.pig.impl.plan.VisitorException] > 2008-10-30 15:38:40,274 [main] ERROR org.apache.pig.tools.grunt.GruntParser - > java.io.IOException: Unable to explain alias b > [org.apache.pig.impl.plan.VisitorException] > {code} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.