You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by da...@apache.org on 2010/11/20 03:23:44 UTC
svn commit: r1037106 - in /pig/trunk: CHANGES.txt
src/org/apache/pig/newplan/logical/relational/LOGenerate.java
src/org/apache/pig/newplan/logical/relational/LogicalSchema.java
test/org/apache/pig/test/TestEvalPipeline2.java
Author: daijy
Date: Sat Nov 20 02:23:43 2010
New Revision: 1037106
URL: http://svn.apache.org/viewvc?rev=1037106&view=rev
Log:
PIG-1737: New logical plan: Improve error messages when merge schema fail
Modified:
pig/trunk/CHANGES.txt
pig/trunk/src/org/apache/pig/newplan/logical/relational/LOGenerate.java
pig/trunk/src/org/apache/pig/newplan/logical/relational/LogicalSchema.java
pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java
Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1037106&r1=1037105&r2=1037106&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Sat Nov 20 02:23:43 2010
@@ -220,6 +220,8 @@ PIG-1309: Map-side Cogroup (ashutoshc)
BUG FIXES
+PIG-1737: New logical plan: Improve error messages when merge schema fail (daijy)
+
PIG-1725: New logical plan: uidOnlySchema bug in LOGenerate (daijy)
PIG-1729: New logical plan: Dereference does not add into plan after deepCopy (daijy)
Modified: pig/trunk/src/org/apache/pig/newplan/logical/relational/LOGenerate.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOGenerate.java?rev=1037106&r1=1037105&r2=1037106&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/relational/LOGenerate.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/relational/LOGenerate.java Sat Nov 20 02:23:43 2010
@@ -142,6 +142,10 @@ public class LOGenerate extends LogicalR
else {
// Merge uid with the exp field schema
mergedSchema = LogicalSchema.merge(mUserDefinedSchemaCopy, expSchema);
+ if (mergedSchema==null) {
+ throw new FrontendException("Cannot merge (" + expSchema.toString(false) +
+ ") with user defined schema (" + mUserDefinedSchemaCopy.toString(false) + ")", 1117);
+ }
mergedSchema.mergeUid(expSchema);
}
for (LogicalFieldSchema fs : mergedSchema.getFields())
Modified: pig/trunk/src/org/apache/pig/newplan/logical/relational/LogicalSchema.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/relational/LogicalSchema.java?rev=1037106&r1=1037105&r2=1037106&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/relational/LogicalSchema.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/relational/LogicalSchema.java Sat Nov 20 02:23:43 2010
@@ -71,19 +71,27 @@ public class LogicalSchema {
}
}
- public String toString() {
+ public String toString(boolean verbose) {
+ String uidString = "";
+ if (verbose)
+ uidString="#" + uid;
+
if( type == DataType.BAG ) {
if( schema == null ) {
- return ( alias + "#" + uid + ":bag{}#" );
+ return ( alias + uidString + ":bag{}" );
}
- return ( alias + "#" + uid + ":bag{" + schema.toString() + "}" );
+ return ( alias + uidString + ":bag{" + schema.toString() + "}" );
} else if( type == DataType.TUPLE ) {
if( schema == null ) {
- return ( alias + "#" + uid + ":tuple{}" );
+ return ( alias + uidString + ":tuple{}" );
}
- return ( alias + "#" + uid + ":tuple(" + schema.toString() + ")" );
+ return ( alias + uidString + ":tuple(" + schema.toString() + ")" );
}
- return ( alias + "#" + uid + ":" + DataType.findTypeName(type) );
+ return ( alias + uidString + ":" + DataType.findTypeName(type) );
+ }
+
+ public String toString() {
+ return toString(true);
}
public void stampFieldSchema() {
@@ -338,11 +346,11 @@ public class LogicalSchema {
return mergedSchema;
}
- public String toString() {
+ public String toString(boolean verbose) {
StringBuilder str = new StringBuilder();
for( LogicalFieldSchema field : fields ) {
- str.append( field.toString() + "," );
+ str.append( field.toString(verbose) + "," );
}
if( fields.size() != 0 ) {
str.deleteCharAt( str.length() -1 );
@@ -350,6 +358,10 @@ public class LogicalSchema {
return str.toString();
}
+ public String toString() {
+ return toString(true);
+ }
+
public void setTwoLevelAccessRequired(boolean flag) {
twoLevelAccessRequired = flag;
}
Modified: pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java?rev=1037106&r1=1037105&r2=1037106&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestEvalPipeline2.java Sat Nov 20 02:23:43 2010
@@ -32,6 +32,7 @@ import java.util.Random;
import junit.framework.TestCase;
import org.apache.pig.ExecType;
+import org.apache.pig.PigException;
import org.apache.pig.PigServer;
import org.apache.pig.builtin.BinStorage;
import org.apache.pig.data.BagFactory;
@@ -42,6 +43,7 @@ import org.apache.pig.data.TupleFactory;
import org.apache.pig.impl.io.FileLocalizer;
import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.impl.logicalLayer.schema.Schema;
+import org.apache.pig.impl.util.LogUtils;
import org.apache.pig.test.utils.Identity;
import org.junit.AfterClass;
import org.junit.Before;
@@ -891,4 +893,22 @@ public class TestEvalPipeline2 extends T
assertFalse(iter.hasNext());
}
+
+ // See PIG-1737
+ @Test
+ public void testMergeSchemaErrorMessage() throws IOException {
+ pigServer.registerQuery("a = load '1.txt' as (a0, a1, a2);");
+ pigServer.registerQuery("b = group a by (a0, a1);");
+ pigServer.registerQuery("c = foreach b generate flatten(group) as c0;");
+
+ try {
+ pigServer.openIterator("c");
+ } catch (Exception e) {
+ PigException pe = LogUtils.getPigException(e);
+ assertTrue(pe.getErrorCode()==1117);
+ assertTrue(pe.getMessage().contains("Cannot merge"));
+ return;
+ }
+ fail();
+ }
}