You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by ga...@apache.org on 2008/08/28 02:09:05 UTC
svn commit: r689673 - in
/incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer:
LOLimit.java PlanSetter.java optimizer/SchemaCalculator.java
optimizer/SchemaRemover.java package.html parser/QueryParser.jjt
Author: gates
Date: Wed Aug 27 17:09:04 2008
New Revision: 689673
URL: http://svn.apache.org/viewvc?rev=689673&view=rev
Log:
PIG-399 Added LOLimit to visitors in the optimizer so that when the plan is rearranged limit is handled correctly.
Modified:
incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOLimit.java
incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/PlanSetter.java
incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/SchemaCalculator.java
incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/SchemaRemover.java
incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/package.html
incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt
Modified: incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOLimit.java
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOLimit.java?rev=689673&r1=689672&r2=689673&view=diff
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOLimit.java (original)
+++ incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOLimit.java Wed Aug 27 17:09:04 2008
@@ -9,7 +9,6 @@
public class LOLimit extends LogicalOperator {
private static final long serialVersionUID = 2L;
- private LogicalOperator mInput;
private long mLimit;
/**
*
@@ -23,15 +22,13 @@
* the input that needs to limit
*/
- public LOLimit(LogicalPlan plan, OperatorKey k,
- long limit, LogicalOperator input) {
+ public LOLimit(LogicalPlan plan, OperatorKey k, long limit) {
super(plan, k);
mLimit = limit;
- mInput = input;
}
public LogicalOperator getInput() {
- return mInput;
+ return mPlan.getPredecessors(this).get(0);
}
public long getLimit() {
@@ -45,7 +42,7 @@
public Schema getSchema() throws FrontendException {
if (!mIsSchemaComputed) {
try {
- mSchema = mInput.getSchema();
+ mSchema = getInput().getSchema();
mIsSchemaComputed = true;
} catch (FrontendException ioe) {
mSchema = null;
@@ -81,8 +78,9 @@
return DataType.BAG ;
}
+ // Shouldn't this be clone?
public LOLimit duplicate()
{
- return new LOLimit(mPlan, OperatorKey.genOpKey(mKey.scope), mLimit, mInput);
+ return new LOLimit(mPlan, OperatorKey.genOpKey(mKey.scope), mLimit);
}
}
Modified: incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/PlanSetter.java
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/PlanSetter.java?rev=689673&r1=689672&r2=689673&view=diff
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/PlanSetter.java (original)
+++ incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/PlanSetter.java Wed Aug 27 17:09:04 2008
@@ -108,6 +108,10 @@
op.setPlan(mCurrentWalker.getPlan());
}
+ public void visit(LOLimit op) throws VisitorException {
+ op.setPlan(mCurrentWalker.getPlan());
+ }
+
public void visit(LOLoad op) throws VisitorException {
op.setPlan(mCurrentWalker.getPlan());
}
Modified: incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/SchemaCalculator.java
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/SchemaCalculator.java?rev=689673&r1=689672&r2=689673&view=diff
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/SchemaCalculator.java (original)
+++ incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/SchemaCalculator.java Wed Aug 27 17:09:04 2008
@@ -94,6 +94,21 @@
/**
*
+ * @param limit
+ * the logical limit operator that has to be visited
+ * @throws VisitorException
+ */
+ protected void visit(LOLimit limit) throws VisitorException {
+ try {
+ limit.getSchema();
+ super.visit(limit);
+ } catch (FrontendException fe) {
+ throw new VisitorException(fe);
+ }
+ }
+
+ /**
+ *
* @param filter
* the logical filter operator that has to be visited
* @throws VisitorException
Modified: incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/SchemaRemover.java
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/SchemaRemover.java?rev=689673&r1=689672&r2=689673&view=diff
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/SchemaRemover.java (original)
+++ incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/optimizer/SchemaRemover.java Wed Aug 27 17:09:04 2008
@@ -78,6 +78,18 @@
/**
*
+ * @param limit
+ * the logical limit operator that has to be visited
+ * @throws VisitorException
+ */
+ protected void visit(LOLimit limit) throws VisitorException {
+ limit.unsetSchema();
+ super.visit(limit);
+ }
+
+
+ /**
+ *
* @param filter
* the logical filter operator that has to be visited
* @throws VisitorException
Modified: incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/package.html
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/package.html?rev=689673&r1=689672&r2=689673&view=diff
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/package.html (original)
+++ incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/package.html Wed Aug 27 17:09:04 2008
@@ -37,5 +37,14 @@
other statement in the language rather than being like SQL where the statement
execution tends to be more linear.
+<h2> Notes </h2>
+<p>
+Heads up to developers: when adding a new logical operator to the plan,
+there are a number of classes that need to know about every type of operator.
+These include {@link org.apache.pig.impl.logicalLayer.PlanSetter},
+{@link org.apache.pig.impl.logicalLayer.optimizer.SchemaRemover},
+{@link org.apache.pig.impl.logicalLayer.optimizer.SchemaCalculator}, and
+{@link org.apache.pig.impl.logicalLayer.optimizer.LogicalTransformer}.
+
</body>
</html>
Modified: incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt?rev=689673&r1=689672&r2=689673&view=diff
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt (original)
+++ incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt Wed Aug 27 17:09:04 2008
@@ -860,7 +860,7 @@
)
{
long l = Integer.parseInt(t.image);
- LogicalOperator limit = new LOLimit(lp, new OperatorKey(scope, getNextId()), l, input);
+ LogicalOperator limit = new LOLimit(lp, new OperatorKey(scope, getNextId()), l);
addAlias(input.getAlias(), input);
lp.add(limit);
log.debug("Added operator " + limit.getClass().getName() + " to the logical plan");