diff --git build-common.xml build-common.xml
index 0b279f3..5ffd960 100644
--- build-common.xml
+++ build-common.xml
@@ -59,7 +59,7 @@
-
+
diff --git ql/src/test/queries/clientnegative/mapreduce_stack_trace.q ql/src/test/queries/clientnegative/mapreduce_stack_trace.q
index 37b86aa..0c5dcae 100644
--- ql/src/test/queries/clientnegative/mapreduce_stack_trace.q
+++ ql/src/test/queries/clientnegative/mapreduce_stack_trace.q
@@ -3,3 +3,11 @@ set hive.exec.job.debug.capture.stacktraces=true;
set hive.exec.failure.hooks=org.apache.hadoop.hive.ql.hooks.VerifySessionStateStackTracesHook;
FROM src SELECT TRANSFORM(key, value) USING 'script_does_not_exist' AS (key, value);
+
+-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.20)
+-- Hadoop 0.23 changes the getTaskDiagnostics behavior
+-- The Error Code of hive failure MapReduce job changes
+-- In Hadoop 0.20
+-- Hive failure MapReduce job gets 20000 as Error Code
+-- In Hadoop 0.23
+-- Hive failure MapReduce job gets 2 as Error Code
diff --git ql/src/test/queries/clientnegative/mapreduce_stack_trace_hadoop20.q ql/src/test/queries/clientnegative/mapreduce_stack_trace_hadoop20.q
new file mode 100644
index 0000000..8f38b0a
--- /dev/null
+++ ql/src/test/queries/clientnegative/mapreduce_stack_trace_hadoop20.q
@@ -0,0 +1,13 @@
+set hive.exec.mode.local.auto=false;
+set hive.exec.job.debug.capture.stacktraces=true;
+set hive.exec.failure.hooks=org.apache.hadoop.hive.ql.hooks.VerifySessionStateStackTracesHook;
+
+FROM src SELECT TRANSFORM(key, value) USING 'script_does_not_exist' AS (key, value);
+
+-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.20)
+-- Hadoop 0.23 changes the getTaskDiagnostics behavior
+-- The Error Code of hive failure MapReduce job changes
+-- In Hadoop 0.20
+-- Hive failure MapReduce job gets 20000 as Error Code
+-- In Hadoop 0.23
+-- Hive failure MapReduce job gets 2 as Error Code
diff --git ql/src/test/queries/clientnegative/mapreduce_stack_trace_turnoff.q ql/src/test/queries/clientnegative/mapreduce_stack_trace_turnoff.q
index e86ca65..047fb83 100644
--- ql/src/test/queries/clientnegative/mapreduce_stack_trace_turnoff.q
+++ ql/src/test/queries/clientnegative/mapreduce_stack_trace_turnoff.q
@@ -3,3 +3,11 @@ set hive.exec.job.debug.capture.stacktraces=false;
set hive.exec.failure.hooks=org.apache.hadoop.hive.ql.hooks.VerifySessionStateStackTracesHook;
FROM src SELECT TRANSFORM(key, value) USING 'script_does_not_exist' AS (key, value);
+
+-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.20)
+-- Hadoop 0.23 changes the getTaskDiagnostics behavior
+-- The Error Code of hive failure MapReduce job changes
+-- In Hadoop 0.20
+-- Hive failure MapReduce job gets 20000 as Error Code
+-- In Hadoop 0.23
+-- Hive failure MapReduce job gets 2 as Error Code
diff --git ql/src/test/queries/clientnegative/mapreduce_stack_trace_turnoff_hadoop20.q ql/src/test/queries/clientnegative/mapreduce_stack_trace_turnoff_hadoop20.q
new file mode 100644
index 0000000..a6c888d
--- /dev/null
+++ ql/src/test/queries/clientnegative/mapreduce_stack_trace_turnoff_hadoop20.q
@@ -0,0 +1,13 @@
+set hive.exec.mode.local.auto=false;
+set hive.exec.job.debug.capture.stacktraces=false;
+set hive.exec.failure.hooks=org.apache.hadoop.hive.ql.hooks.VerifySessionStateStackTracesHook;
+
+FROM src SELECT TRANSFORM(key, value) USING 'script_does_not_exist' AS (key, value);
+
+-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.20)
+-- Hadoop 0.23 changes the getTaskDiagnostics behavior
+-- The Error Code of hive failure MapReduce job changes
+-- In Hadoop 0.20
+-- Hive failure MapReduce job gets 20000 as Error Code
+-- In Hadoop 0.23
+-- Hive failure MapReduce job gets 2 as Error Code
diff --git ql/src/test/results/clientnegative/mapreduce_stack_trace.q.out ql/src/test/results/clientnegative/mapreduce_stack_trace.q.out
index 592ecda..b199241 100644
--- ql/src/test/results/clientnegative/mapreduce_stack_trace.q.out
+++ ql/src/test/results/clientnegative/mapreduce_stack_trace.q.out
@@ -10,4 +10,4 @@ FATAL ExecMapper: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime
Hive Runtime Error while processing row {"key":"238","value":"val_238"}
FATAL ExecMapper: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"key":"238","value":"val_238"}
Hive Runtime Error while processing row {"key":"238","value":"val_238"}
-FAILED: Execution Error, return code 20000 from org.apache.hadoop.hive.ql.exec.MapRedTask. Unable to initialize custom script.
+FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask
diff --git ql/src/test/results/clientnegative/mapreduce_stack_trace_hadoop20.q.out ql/src/test/results/clientnegative/mapreduce_stack_trace_hadoop20.q.out
new file mode 100644
index 0000000..592ecda
--- /dev/null
+++ ql/src/test/results/clientnegative/mapreduce_stack_trace_hadoop20.q.out
@@ -0,0 +1,13 @@
+PREHOOK: query: FROM src SELECT TRANSFORM(key, value) USING 'script_does_not_exist' AS (key, value)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+FATAL ExecMapper: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"key":"238","value":"val_238"}
+Hive Runtime Error while processing row {"key":"238","value":"val_238"}
+FATAL ExecMapper: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"key":"238","value":"val_238"}
+Hive Runtime Error while processing row {"key":"238","value":"val_238"}
+FATAL ExecMapper: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"key":"238","value":"val_238"}
+Hive Runtime Error while processing row {"key":"238","value":"val_238"}
+FATAL ExecMapper: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"key":"238","value":"val_238"}
+Hive Runtime Error while processing row {"key":"238","value":"val_238"}
+FAILED: Execution Error, return code 20000 from org.apache.hadoop.hive.ql.exec.MapRedTask. Unable to initialize custom script.
diff --git ql/src/test/results/clientnegative/mapreduce_stack_trace_turnoff.q.out ql/src/test/results/clientnegative/mapreduce_stack_trace_turnoff.q.out
index e1cd0c5..da9203d 100644
--- ql/src/test/results/clientnegative/mapreduce_stack_trace_turnoff.q.out
+++ ql/src/test/results/clientnegative/mapreduce_stack_trace_turnoff.q.out
@@ -2,4 +2,4 @@ PREHOOK: query: FROM src SELECT TRANSFORM(key, value) USING 'script_does_not_exi
PREHOOK: type: QUERY
PREHOOK: Input: default@src
#### A masked pattern was here ####
-FAILED: Execution Error, return code 20000 from org.apache.hadoop.hive.ql.exec.MapRedTask. Unable to initialize custom script.
+FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask
diff --git ql/src/test/results/clientnegative/mapreduce_stack_trace_turnoff_hadoop20.q.out ql/src/test/results/clientnegative/mapreduce_stack_trace_turnoff_hadoop20.q.out
new file mode 100644
index 0000000..e1cd0c5
--- /dev/null
+++ ql/src/test/results/clientnegative/mapreduce_stack_trace_turnoff_hadoop20.q.out
@@ -0,0 +1,5 @@
+PREHOOK: query: FROM src SELECT TRANSFORM(key, value) USING 'script_does_not_exist' AS (key, value)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+FAILED: Execution Error, return code 20000 from org.apache.hadoop.hive.ql.exec.MapRedTask. Unable to initialize custom script.