You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mrql.apache.org by fe...@apache.org on 2013/10/29 15:21:32 UTC

git commit: MRQL-22: The compiler must load the hadoop core lib before compilation

Updated Branches:
  refs/heads/master 287533984 -> b02961352


MRQL-22: The compiler must load the hadoop core lib before compilation


Project: http://git-wip-us.apache.org/repos/asf/incubator-mrql/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mrql/commit/b0296135
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mrql/tree/b0296135
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mrql/diff/b0296135

Branch: refs/heads/master
Commit: b02961352833efafed740b85a0a6529920de3bc8
Parents: 2875339
Author: fegaras <fe...@cse.uta.edu>
Authored: Tue Oct 29 09:21:08 2013 -0500
Committer: fegaras <fe...@cse.uta.edu>
Committed: Tue Oct 29 09:21:08 2013 -0500

----------------------------------------------------------------------
 src/main/java/core/Compiler.gen | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mrql/blob/b0296135/src/main/java/core/Compiler.gen
----------------------------------------------------------------------
diff --git a/src/main/java/core/Compiler.gen b/src/main/java/core/Compiler.gen
index bafefd3..668cdc8 100644
--- a/src/main/java/core/Compiler.gen
+++ b/src/main/java/core/Compiler.gen
@@ -25,6 +25,7 @@ import java.lang.reflect.*;
 import java.util.*;
 import java.net.*;
 import java.util.jar.*;
+import org.apache.hadoop.io.WritableComparable;
 
 
 /** compilation of MRQL expressions to Java code and then to Java bytecode */
@@ -35,6 +36,7 @@ final public class Compiler extends Translator {
     public static String jar_path;
     static Trees in_memory_repeat_vars = #[];
     static int lambda_num = 0;
+    static int user_functions_num = 0;
 
     /** Compile the MRQL functional arguments into Java bytecode */
     final private static class JavaSourceFromString extends SimpleJavaFileObject {
@@ -135,6 +137,7 @@ final public class Compiler extends Translator {
      */
     final public static Tree compile ( Tree query ) {
         try {
+            user_functions_num = lambda_num++;
             // remove the old jar
             if (jar_path != null)
                 remove(new File(jar_path));
@@ -164,12 +167,12 @@ final public class Compiler extends Translator {
                         sb.append("; }\n");
                     }
                 };
-            out.append("final public class UserFunctions {\n");
+            out.append("final class UserFunctions_"+user_functions_num+" {\n");
             out.append(sb);
             out.append("}\n");
             String code = out.toString();
             //System.out.println(code);
-            JavaFileObject file = new JavaSourceFromString("UserFunctions",code);
+            JavaFileObject file = new JavaSourceFromString("UserFunctions_"+user_functions_num,code);
             Iterable<? extends JavaFileObject> compilationUnits = Arrays.asList(file);
             List<String> optionList = new ArrayList<String>();
             (new File(tmp_dir)).mkdir();
@@ -181,6 +184,8 @@ final public class Compiler extends Translator {
             String separator = System.getProperty("path.separator");
             for ( URL url: ((URLClassLoader) classLoader).getURLs() )
                 classpath += separator+url.getFile();
+            // use hadoop core jar
+            classpath += separator + WritableComparable.class.getProtectionDomain().getCodeSource().getLocation().toString();
             optionList.addAll(Arrays.asList("-classpath",classpath));
             optionList.addAll(Arrays.asList("-d",dir));
             CompilationTask task = compiler.getTask(null,null,diagnostics,optionList,null,compilationUnits);
@@ -448,7 +453,7 @@ final public class Compiler extends Translator {
                 fail;
             match global_functions.lookup(f.toString()) {
             case function(tuple(...params),`otp,`body):
-                String ret = "UserFunctions."+f+"(";
+                String ret = "UserFunctions_"+user_functions_num+"."+f+"(";
                 if (args.is_empty())
                     return ret+")";
                 for ( int i = 0; i < params.length(); i++ )
@@ -464,7 +469,7 @@ final public class Compiler extends Translator {
             match global_functions.lookup(f.toString()) {
             case function(tuple(...params),`otp,`body):
                 String ac = compileE(arg);
-                String ret = "UserFunctions."+f+"(";
+                String ret = "UserFunctions_"+user_functions_num+"."+f+"(";
                 for ( int i = 0; i < params.length(); i++ )
                     match params.nth(i) {
                     case bind(_,`tp):