diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_double/divide_double.1.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_double/divide_double.1.query.aql
index 62b1112..f86aae9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_double/divide_double.1.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_double/divide_double.1.query.aql
@@ -24,4 +24,4 @@
 let $c5 := float("-5.5f")
 let $c6 := double("-6.5d")
 let $c8 := null
-return {"result1": $c6/$c1,"result2": $c6/$c2,"result3": $c6/$c3,"result4": $c6/$c4,"result5": $c6/$c5, "result6": $c6/$c6, "result7": $c6/$c8, "result8": $c6/[1][1]}
+return {"result1": $c6/$c1,"result2": $c6/$c2,"result3": $c6/$c3,"result4": $c6/$c4,"result5": $c6/$c5, "result6": $c6/$c6, "result7": $c6/$c8, "result8": $c6/[1][1], "result9": $c6/0}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_float/divide_float.1.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_float/divide_float.1.query.aql
index 0f938e3..dde8291 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_float/divide_float.1.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_float/divide_float.1.query.aql
@@ -24,4 +24,4 @@
 let $c5 := float("-5.5f")
 let $c6 := double("-6.5d")
 let $c8 := null
-return {"result1": $c5/$c1,"result2": $c5/$c2,"result3": $c5/$c3,"result4": $c5/$c4,"result5": $c5/$c5, "result6": $c5/$c6, "result7": $c6/$c8, "result8": $c6/[1][1]}
+return {"result1": $c5/$c1,"result2": $c5/$c2,"result3": $c5/$c3,"result4": $c5/$c4,"result5": $c5/$c5, "result6": $c5/$c6, "result7": $c6/$c8, "result8": $c6/[1][1], "result9": $c6/0}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int16/divide_int16.1.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int16/divide_int16.1.query.aql
index 17f19c0..e4993d4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int16/divide_int16.1.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int16/divide_int16.1.query.aql
@@ -24,4 +24,4 @@
 let $c5 := float("-5.5f")
 let $c6 := double("-6.5d")
 let $c8 := null
-return {"result1": $c2/$c1,"result2": $c2/$c2,"result3": $c2/$c3,"result4": $c2/$c4,"result5": $c2/$c5, "result6": $c2/$c6, "result7": $c6/$c8, "result8": $c6/[1][1]}
+return {"result1": $c2/$c1,"result2": $c2/$c2,"result3": $c2/$c3,"result4": $c2/$c4,"result5": $c2/$c5, "result6": $c2/$c6, "result7": $c6/$c8, "result8": $c6/[1][1], "result9": $c6/0}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int16/divide_int16.2.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int16/divide_int16.2.query.aql
index b59be3b..1771d70 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int16/divide_int16.2.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int16/divide_int16.2.query.aql
@@ -24,4 +24,4 @@
 let $c5 := float("-5.5f")
 let $c6 := double("-6.5d")
 let $c8 := null
-return {"result1": $c2 div $c1,"result2": $c2 div $c2,"result3": $c2 div $c3,"result4": $c2 div $c4,"result5": $c2 div $c5, "result6": $c2 div $c6, "result7": $c6 div $c8, "result8": $c6 div [1][1]}
+return {"result1": $c2 div $c1,"result2": $c2 div $c2,"result3": $c2 div $c3,"result4": $c2 div $c4,"result5": $c2 div $c5, "result6": $c2 div $c6, "result7": $c6 div $c8, "result8": $c6 div [1][1], "result9": $c6/0}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int32/divide_int32.1.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int32/divide_int32.1.query.aql
index 0026e24..e9adbc2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int32/divide_int32.1.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int32/divide_int32.1.query.aql
@@ -24,4 +24,4 @@
 let $c5 := float("-5.5f")
 let $c6 := double("-6.5d")
 let $c8 := null
-return {"result1": $c3/$c1,"result2": $c3/$c2,"result3": $c3/$c3,"result4": $c3/$c4,"result5": $c3/$c5, "result6": $c3/$c6, "result7": $c6/$c8, "result8": $c6/[1][1]}
+return {"result1": $c3/$c1,"result2": $c3/$c2,"result3": $c3/$c3,"result4": $c3/$c4,"result5": $c3/$c5, "result6": $c3/$c6, "result7": $c6/$c8, "result8": $c6/[1][1], "result9": $c6/0}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int32/divide_int32.2.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int32/divide_int32.2.query.aql
index d8ad04a..349211a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int32/divide_int32.2.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int32/divide_int32.2.query.aql
@@ -24,4 +24,4 @@
 let $c5 := float("-5.5f")
 let $c6 := double("-6.5d")
 let $c8 := null
-return {"result1": $c3 div $c1,"result2": $c3 div $c2,"result3": $c3 div $c3,"result4": $c3 div $c4,"result5": $c3 div $c5, "result6": $c3 div $c6, "result7": $c6 div $c8, "result8": $c6 div [1][1]}
+return {"result1": $c3 div $c1,"result2": $c3 div $c2,"result3": $c3 div $c3,"result4": $c3 div $c4,"result5": $c3 div $c5, "result6": $c3 div $c6, "result7": $c6 div $c8, "result8": $c6 div [1][1], "result9": $c6/0}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int64/divide_int64.1.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int64/divide_int64.1.query.aql
index b3e11be..b7b99a7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int64/divide_int64.1.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int64/divide_int64.1.query.aql
@@ -24,4 +24,4 @@
 let $c5 := float("-5.5f")
 let $c6 := double("-6.5d")
 let $c8 := null
-return {"result1": $c4/$c1,"result2": $c4/$c2,"result3": $c4/$c3,"result4": $c4/$c4,"result5": $c4/$c5, "result6": $c4/$c6, "result7": $c6/$c8, "result8": $c6/[1][1]}
+return {"result1": $c4/$c1,"result2": $c4/$c2,"result3": $c4/$c3,"result4": $c4/$c4,"result5": $c4/$c5, "result6": $c4/$c6, "result7": $c6/$c8, "result8": $c6/[1][1], "result9": $c6/0}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int64/divide_int64.2.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int64/divide_int64.2.query.aql
index 32c72ed..c6694a6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int64/divide_int64.2.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int64/divide_int64.2.query.aql
@@ -24,4 +24,4 @@
 let $c5 := float("-5.5f")
 let $c6 := double("-6.5d")
 let $c8 := null
-return {"result1": $c4 div $c1,"result2": $c4 div $c2,"result3": $c4 div $c3,"result4": $c4 div $c4,"result5": $c4 div $c5, "result6": $c4 div $c6, "result7": $c6 div $c8, "result8": $c6 div [1][1]}
+return {"result1": $c4 div $c1,"result2": $c4 div $c2,"result3": $c4 div $c3,"result4": $c4 div $c4,"result5": $c4 div $c5, "result6": $c4 div $c6, "result7": $c6 div $c8, "result8": $c6 div [1][1], "result9": $c6/0}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int8/divide_int8.1.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int8/divide_int8.1.query.aql
index a3cf2ee..afb1488 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int8/divide_int8.1.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int8/divide_int8.1.query.aql
@@ -24,4 +24,4 @@
 let $c5 := float("-5.5f")
 let $c6 := double("-6.5d")
 let $c8 := null
-return {"result1": $c1/$c1,"result2": $c1/$c2,"result3": $c1/$c3,"result4": $c1/$c4,"result5": $c1/$c5, "result6": $c1/$c6, "result7": $c6/$c8, "result8": $c6/[1][1]}
+return {"result1": $c1/$c1,"result2": $c1/$c2,"result3": $c1/$c3,"result4": $c1/$c4,"result5": $c1/$c5, "result6": $c1/$c6, "result7": $c6/$c8, "result8": $c6/[1][1], "result9": $c6/0}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int8/divide_int8.2.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int8/divide_int8.2.query.aql
index 5adb1b4..07a1910 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int8/divide_int8.2.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/numeric/divide_int8/divide_int8.2.query.aql
@@ -24,4 +24,4 @@
 let $c5 := float("-5.5f")
 let $c6 := double("-6.5d")
 let $c8 := null
-return {"result1": $c1 div $c1,"result2": $c1 div $c2,"result3": $c1 div $c3,"result4": $c1 div $c4,"result5": $c1 div $c5, "result6": $c1 div $c6, "result7": $c6 div $c8, "result8": $c6 div [1][1]}
+return {"result1": $c1 div $c1,"result2": $c1 div $c2,"result3": $c1 div $c3,"result4": $c1 div $c4,"result5": $c1 div $c5, "result6": $c1 div $c6, "result7": $c6 div $c8, "result8": $c6 div [1][1], "result9": $c6/0}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_double/divide_double.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_double/divide_double.1.query.sqlpp
index 901be61..31e2399 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_double/divide_double.1.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_double/divide_double.1.query.sqlpp
@@ -18,4 +18,4 @@
  */
 
 
-{'result1':(double('-6.5d') / tinyint('+1')),'result2':(double('-6.5d') / smallint('2')),'result3':(double('-6.5d') / integer('+3')),'result4':(double('-6.5d') / bigint('-4')),'result5':(double('-6.5d') / float('-5.5f')),'result6':(double('-6.5d') / double('-6.5d')),'result7':(double('-6.5d') / null), 'result8':double('-6.5d') / {}.a};
+{'result1':(double('-6.5d') / tinyint('+1')),'result2':(double('-6.5d') / smallint('2')),'result3':(double('-6.5d') / integer('+3')),'result4':(double('-6.5d') / bigint('-4')),'result5':(double('-6.5d') / float('-5.5f')),'result6':(double('-6.5d') / double('-6.5d')),'result7':(double('-6.5d') / null), 'result8':double('-6.5d') / {}.a, 'result9':double('1') / 0 };
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_float/divide_float.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_float/divide_float.1.query.sqlpp
index 7dfdcd2..107fed1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_float/divide_float.1.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_float/divide_float.1.query.sqlpp
@@ -17,4 +17,4 @@
  * under the License.
  */
 
-{'result1':(float('-5.5f') / tinyint('+1')),'result2':(float('-5.5f') / smallint('2')),'result3':(float('-5.5f') / integer('+3')),'result4':(float('-5.5f') / bigint('-4')),'result5':(float('-5.5f') / float('-5.5f')),'result6':(float('-5.5f') / double('-6.5d')),'result7':(double('-6.5d') / null), 'result8':double('-6.5d') / {}.a};
+{'result1':(float('-5.5f') / tinyint('+1')),'result2':(float('-5.5f') / smallint('2')),'result3':(float('-5.5f') / integer('+3')),'result4':(float('-5.5f') / bigint('-4')),'result5':(float('-5.5f') / float('-5.5f')),'result6':(float('-5.5f') / double('-6.5d')),'result7':(double('-6.5d') / null), 'result8':double('-6.5d') / {}.a, 'result9':double('1') / 0 };
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int16/divide_int16.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int16/divide_int16.1.query.sqlpp
index b0f315d..1e1237d7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int16/divide_int16.1.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int16/divide_int16.1.query.sqlpp
@@ -17,4 +17,4 @@
  * under the License.
  */
 
-{'result1':(smallint('2') / tinyint('+1')),'result2':(smallint('2') / smallint('2')),'result3':(smallint('2') / integer('+3')),'result4':(smallint('2') / bigint('-4')),'result5':(smallint('2') / float('-5.5f')),'result6':(smallint('2') / double('-6.5d')),'result7':(double('-6.5d') / null), 'result8':double('-6.5d') / {}.a};
+{'result1':(smallint('2') / tinyint('+1')),'result2':(smallint('2') / smallint('2')),'result3':(smallint('2') / integer('+3')),'result4':(smallint('2') / bigint('-4')),'result5':(smallint('2') / float('-5.5f')),'result6':(smallint('2') / double('-6.5d')),'result7':(smallint('-6') / null), 'result8':smallint('-6') / {}.a, 'result9': smallint('1') / 0 };
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int16/divide_int16.2.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int16/divide_int16.2.query.sqlpp
index cca3dcf..f5bf6fe 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int16/divide_int16.2.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int16/divide_int16.2.query.sqlpp
@@ -17,4 +17,4 @@
  * under the License.
  */
 
-{'result1':(smallint('2') div tinyint('+1')),'result2':(smallint('2') div smallint('2')),'result3':(smallint('2') div integer('+3')),'result4':(smallint('2') div bigint('-4')),'result5':(smallint('2') div float('-5.5f')),'result6':(smallint('2') div double('-6.5d')),'result7':(double('-6.5d') div null), 'result8':double('-6.5d') div {}.a};
+{'result1':(smallint('2') div tinyint('+1')),'result2':(smallint('2') div smallint('2')),'result3':(smallint('2') div integer('+3')),'result4':(smallint('2') div bigint('-4')),'result5':(smallint('2') div float('-5.5f')),'result6':(smallint('2') div double('-6.5d')),'result7':(smallint('-6') div null), 'result8':smallint('-6') div {}.a, 'result9': smallint('1') div 0 };
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int32/divide_int32.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int32/divide_int32.1.query.sqlpp
index 4a9810d..3e22be1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int32/divide_int32.1.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int32/divide_int32.1.query.sqlpp
@@ -18,4 +18,4 @@
  */
 
 
-{'result1':(integer('+3') / tinyint('+1')),'result2':(integer('+3') / smallint('2')),'result3':(integer('+3') / integer('+3')),'result4':(integer('+3') / bigint('-4')),'result5':(integer('+3') / float('-5.5f')),'result6':(integer('+3') / double('-6.5d')),'result7':(double('-6.5d') / null), 'result8':double('-6.5d') / {}.a};
+{'result1':(integer('+3') / tinyint('+1')),'result2':(integer('+3') / smallint('2')),'result3':(integer('+3') / integer('+3')),'result4':(integer('+3') / bigint('-4')),'result5':(integer('+3') / float('-5.5f')),'result6':(integer('+3') / double('-6.5d')),'result7':(integer('-6') / null), 'result8':integer('-6') / {}.a, 'result9': integer('1') / 0 };
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int32/divide_int32.2.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int32/divide_int32.2.query.sqlpp
index 7ce0f9e..dec8444 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int32/divide_int32.2.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int32/divide_int32.2.query.sqlpp
@@ -18,4 +18,4 @@
  */
 
 
-{'result1':(integer('+3') div tinyint('+1')),'result2':(integer('+3') div smallint('2')),'result3':(integer('+3') div integer('+3')),'result4':(integer('+3') div bigint('-4')),'result5':(integer('+3') div float('-5.5f')),'result6':(integer('+3') div double('-6.5d')),'result7':(double('-6.5d') div null), 'result8':double('-6.5d') div {}.a};
+{'result1':(integer('+3') div tinyint('+1')),'result2':(integer('+3') div smallint('2')),'result3':(integer('+3') div integer('+3')),'result4':(integer('+3') div bigint('-4')),'result5':(integer('+3') div float('-5.5f')),'result6':(integer('+3') div double('-6.5d')),'result7':(integer('-6') div null), 'result8':integer('-6') div {}.a, 'result9': integer('1') div 0 };
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int64/divide_int64.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int64/divide_int64.1.query.sqlpp
index 5b7d8f5..abdbe08 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int64/divide_int64.1.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int64/divide_int64.1.query.sqlpp
@@ -17,4 +17,4 @@
  * under the License.
  */
 
-{'result1':(bigint('-4') / tinyint('+1')),'result2':(bigint('-4') / smallint('2')),'result3':(bigint('-4') / integer('+3')),'result4':(bigint('-4') / bigint('-4')),'result5':(bigint('-4') / float('-5.5f')),'result6':(bigint('-4') / double('-6.5d')),'result7':(double('-6.5d') / null), 'result8':double('-6.5d') / {}.a};
+{'result1':(bigint('-4') / tinyint('+1')),'result2':(bigint('-4') / smallint('2')),'result3':(bigint('-4') / integer('+3')),'result4':(bigint('-4') / bigint('-4')),'result5':(bigint('-4') / float('-5.5f')),'result6':(bigint('-4') / double('-6.5d')),'result7':(bigint('-6') / null), 'result8':bigint('-6') / {}.a, 'result9': bigint('1') / 0 };
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int64/divide_int64.2.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int64/divide_int64.2.query.sqlpp
index 2f850c2..d3bb58c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int64/divide_int64.2.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int64/divide_int64.2.query.sqlpp
@@ -17,4 +17,4 @@
  * under the License.
  */
 
-{'result1':(bigint('-4') div tinyint('+1')),'result2':(bigint('-4') div smallint('2')),'result3':(bigint('-4') div integer('+3')),'result4':(bigint('-4') div bigint('-4')),'result5':(bigint('-4') div float('-5.5f')),'result6':(bigint('-4') div double('-6.5d')),'result7':(double('-6.5d') div null), 'result8':double('-6.5d') div {}.a};
+{'result1':(bigint('-4') div tinyint('+1')),'result2':(bigint('-4') div smallint('2')),'result3':(bigint('-4') div integer('+3')),'result4':(bigint('-4') div bigint('-4')),'result5':(bigint('-4') div float('-5.5f')),'result6':(bigint('-4') div double('-6.5d')),'result7':(bigint('-6') div null), 'result8':bigint('-6') div {}.a, 'result9': bigint('1') div 0 };
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int8/divide_int8.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int8/divide_int8.1.query.sqlpp
index dd6917d..a4049ae 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int8/divide_int8.1.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int8/divide_int8.1.query.sqlpp
@@ -18,4 +18,4 @@
  */
 
 
-{'result1':(tinyint('+1') / tinyint('+1')),'result2':(tinyint('+1') / smallint('2')),'result3':(tinyint('+1') / integer('+3')),'result4':(tinyint('+1') / bigint('-4')),'result5':(tinyint('+1') / float('-5.5f')),'result6':(tinyint('+1') / double('-6.5d')),'result7':(double('-6.5d') / null), 'result8':double('-6.5d') / {}.a};
+{'result1':(tinyint('+1') / tinyint('+1')),'result2':(tinyint('+1') / smallint('2')),'result3':(tinyint('+1') / integer('+3')),'result4':(tinyint('+1') / bigint('-4')),'result5':(tinyint('+1') / float('-5.5f')),'result6':(tinyint('+1') / double('-6.5d')),'result7':(tinyint('-6') / null), 'result8':tinyint('-6') / {}.a, 'result9': tinyint('1') / 0 };
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int8/divide_int8.2.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int8/divide_int8.2.query.sqlpp
index 5cf4b1b..5d577a9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int8/divide_int8.2.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/divide_int8/divide_int8.2.query.sqlpp
@@ -18,4 +18,4 @@
  */
 
 
-{'result1':(tinyint('+1') div tinyint('+1')),'result2':(tinyint('+1') div smallint('2')),'result3':(tinyint('+1') div integer('+3')),'result4':(tinyint('+1') div bigint('-4')),'result5':(tinyint('+1') div float('-5.5f')),'result6':(tinyint('+1') div double('-6.5d')),'result7':(double('-6.5d') div null), 'result8':double('-6.5d') div {}.a};
+{'result1':(tinyint('+1') div tinyint('+1')),'result2':(tinyint('+1') div smallint('2')),'result3':(tinyint('+1') div integer('+3')),'result4':(tinyint('+1') div bigint('-4')),'result5':(tinyint('+1') div float('-5.5f')),'result6':(tinyint('+1') div double('-6.5d')),'result7':(tinyint('-6') div null), 'result8':tinyint('-6') div {}.a, 'result9': tinyint('1') div 0 };
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/ifinf/ifinf.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/ifinf/ifinf.1.query.sqlpp
index 3b395bc..479e290 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/ifinf/ifinf.1.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/numeric/ifinf/ifinf.1.query.sqlpp
@@ -40,6 +40,7 @@
     [ 18, isnull(ifinf(double("INF"), double("-INF"), [], 2)) ],
     [ 19, ismissing(if_inf(double("INF"), double("-INF"), missing, 2)) ],
     [ 20, tostring(ifinf(float("INF"), float("NaN"), 2)) ],
-    [ 21, if_inf(2, 1/0) ]
+    [ 21, if_inf(2, 1/0) ],
+    [ 22, if_inf(1/0, 2) ]
 ] t
 order by t[0]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_double/divide_double.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_double/divide_double.1.adm
index b371d5b..3f20110 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_double/divide_double.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_double/divide_double.1.adm
@@ -1 +1 @@
-{ "result1": -6.5, "result2": -3.25, "result3": -2.1666666666666665, "result4": 1.625, "result5": 1.1818181818181819, "result6": 1.0, "result7": null }
+{ "result1": -6.5, "result2": -3.25, "result3": -2.1666666666666665, "result4": 1.625, "result5": 1.1818181818181819, "result6": 1.0, "result7": null, "result9": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_float/divide_float.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_float/divide_float.1.adm
index ccbe5be..560f641 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_float/divide_float.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_float/divide_float.1.adm
@@ -1 +1 @@
-{ "result1": -5.5, "result2": -2.75, "result3": -1.8333334, "result4": 1.375, "result5": 1.0, "result6": 0.8461538461538461, "result7": null }
+{ "result1": -5.5, "result2": -2.75, "result3": -1.8333334, "result4": 1.375, "result5": 1.0, "result6": 0.8461538461538461, "result7": null, "result9": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int16/divide_int16.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int16/divide_int16.1.adm
index 775745b..0e5450b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int16/divide_int16.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int16/divide_int16.1.adm
@@ -1 +1 @@
-{ "result1": 2.0, "result2": 1.0, "result3": 0.6666666666666666, "result4": -0.5, "result5": -0.36363637, "result6": -0.3076923076923077, "result7": null }
+{ "result1": 2.0, "result2": 1.0, "result3": 0.6666666666666666, "result4": -0.5, "result5": -0.36363637, "result6": -0.3076923076923077, "result7": null, "result9": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int16/divide_int16.2.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int16/divide_int16.2.adm
index c3d22c3..c25ec67 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int16/divide_int16.2.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int16/divide_int16.2.adm
@@ -1 +1 @@
-{ "result1": 2, "result2": 1, "result3": 0, "result4": 0, "result5": -0.36363637, "result6": -0.3076923076923077, "result7": null }
\ No newline at end of file
+{ "result1": 2, "result2": 1, "result3": 0, "result4": 0, "result5": -0.36363637, "result6": -0.3076923076923077, "result7": null, "result9": null }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int32/divide_int32.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int32/divide_int32.1.adm
index 890417b..96e5114 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int32/divide_int32.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int32/divide_int32.1.adm
@@ -1 +1 @@
-{ "result1": 3.0, "result2": 1.5, "result3": 1.0, "result4": -0.75, "result5": -0.54545456, "result6": -0.46153846153846156, "result7": null }
+{ "result1": 3.0, "result2": 1.5, "result3": 1.0, "result4": -0.75, "result5": -0.54545456, "result6": -0.46153846153846156, "result7": null, "result9": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int32/divide_int32.2.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int32/divide_int32.2.adm
index 788a291..9d8efd9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int32/divide_int32.2.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int32/divide_int32.2.adm
@@ -1 +1 @@
-{ "result1": 3, "result2": 1, "result3": 1, "result4": 0, "result5": -0.54545456, "result6": -0.46153846153846156, "result7": null }
\ No newline at end of file
+{ "result1": 3, "result2": 1, "result3": 1, "result4": 0, "result5": -0.54545456, "result6": -0.46153846153846156, "result7": null, "result9": null }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int64/divide_int64.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int64/divide_int64.1.adm
index 582b44d..5e8ec2c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int64/divide_int64.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int64/divide_int64.1.adm
@@ -1 +1 @@
-{ "result1": -4.0, "result2": -2.0, "result3": -1.3333333333333333, "result4": 1.0, "result5": 0.72727275, "result6": 0.6153846153846154, "result7": null }
+{ "result1": -4.0, "result2": -2.0, "result3": -1.3333333333333333, "result4": 1.0, "result5": 0.72727275, "result6": 0.6153846153846154, "result7": null, "result9": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int64/divide_int64.2.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int64/divide_int64.2.adm
index af75a4e..79799d5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int64/divide_int64.2.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int64/divide_int64.2.adm
@@ -1 +1 @@
-{ "result1": -4, "result2": -2, "result3": -1, "result4": 1, "result5": 0.72727275, "result6": 0.6153846153846154, "result7": null }
\ No newline at end of file
+{ "result1": -4, "result2": -2, "result3": -1, "result4": 1, "result5": 0.72727275, "result6": 0.6153846153846154, "result7": null, "result9": null }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int8/divide_int8.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int8/divide_int8.1.adm
index 591ed6d..4309a1a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int8/divide_int8.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int8/divide_int8.1.adm
@@ -1 +1 @@
-{ "result1": 1.0, "result2": 0.5, "result3": 0.3333333333333333, "result4": -0.25, "result5": -0.18181819, "result6": -0.15384615384615385, "result7": null }
+{ "result1": 1.0, "result2": 0.5, "result3": 0.3333333333333333, "result4": -0.25, "result5": -0.18181819, "result6": -0.15384615384615385, "result7": null, "result9": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int8/divide_int8.2.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int8/divide_int8.2.adm
index f232ecf..9233e8c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int8/divide_int8.2.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/divide_int8/divide_int8.2.adm
@@ -1 +1 @@
-{ "result1": 1, "result2": 0, "result3": 0, "result4": 0, "result5": -0.18181819, "result6": -0.15384615384615385, "result7": null }
\ No newline at end of file
+{ "result1": 1, "result2": 0, "result3": 0, "result4": 0, "result5": -0.18181819, "result6": -0.15384615384615385, "result7": null, "result9": null }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/ifinf/ifinf.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/ifinf/ifinf.1.adm
index 9f56be4..852db4b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/ifinf/ifinf.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/numeric/ifinf/ifinf.1.adm
@@ -19,4 +19,5 @@
 [ 18, true ]
 [ 19, true ]
 [ 20, "NaN" ]
-[ 21, 2 ]
\ No newline at end of file
+[ 21, 2 ]
+[ 22, null ]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_double/divide_double.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_double/divide_double.1.ast
index a2c5adc..67d0694 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_double/divide_double.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_double/divide_double.1.ast
@@ -104,4 +104,15 @@
       ]
     ]
   )
+  (
+    LiteralExpr [STRING] [result9]
+    :
+    OperatorExpr [
+      FunctionCall null.double@1[
+        LiteralExpr [STRING] [1]
+      ]
+      /
+      LiteralExpr [LONG] [0]
+    ]
+  )
 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_float/divide_float.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_float/divide_float.1.ast
index 928fc8e..958937c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_float/divide_float.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_float/divide_float.1.ast
@@ -104,4 +104,15 @@
       ]
     ]
   )
+  (
+    LiteralExpr [STRING] [result9]
+    :
+    OperatorExpr [
+      FunctionCall null.double@1[
+        LiteralExpr [STRING] [1]
+      ]
+      /
+      LiteralExpr [LONG] [0]
+    ]
+  )
 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.1.ast
index aa1ac9a..21f2d7f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.1.ast
@@ -82,8 +82,8 @@
     LiteralExpr [STRING] [result7]
     :
     OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
+      FunctionCall null.int16@1[
+        LiteralExpr [STRING] [-6]
       ]
       /
       LiteralExpr [NULL]
@@ -93,8 +93,8 @@
     LiteralExpr [STRING] [result8]
     :
     OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
+      FunctionCall null.int16@1[
+        LiteralExpr [STRING] [-6]
       ]
       /
       FieldAccessor [
@@ -104,4 +104,15 @@
       ]
     ]
   )
+  (
+    LiteralExpr [STRING] [result9]
+    :
+    OperatorExpr [
+      FunctionCall null.int16@1[
+        LiteralExpr [STRING] [1]
+      ]
+      /
+      LiteralExpr [LONG] [0]
+    ]
+  )
 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.2.ast
index 90fd039..f92b4c2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.2.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.2.ast
@@ -82,8 +82,8 @@
     LiteralExpr [STRING] [result7]
     :
     OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
+      FunctionCall null.int16@1[
+        LiteralExpr [STRING] [-6]
       ]
       div
       LiteralExpr [NULL]
@@ -93,8 +93,8 @@
     LiteralExpr [STRING] [result8]
     :
     OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
+      FunctionCall null.int16@1[
+        LiteralExpr [STRING] [-6]
       ]
       div
       FieldAccessor [
@@ -104,4 +104,15 @@
       ]
     ]
   )
+  (
+    LiteralExpr [STRING] [result9]
+    :
+    OperatorExpr [
+      FunctionCall null.int16@1[
+        LiteralExpr [STRING] [1]
+      ]
+      div
+      LiteralExpr [LONG] [0]
+    ]
+  )
 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.1.ast
index 3b24726..37785cf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.1.ast
@@ -82,8 +82,8 @@
     LiteralExpr [STRING] [result7]
     :
     OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
+      FunctionCall null.int32@1[
+        LiteralExpr [STRING] [-6]
       ]
       /
       LiteralExpr [NULL]
@@ -93,8 +93,8 @@
     LiteralExpr [STRING] [result8]
     :
     OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
+      FunctionCall null.int32@1[
+        LiteralExpr [STRING] [-6]
       ]
       /
       FieldAccessor [
@@ -104,4 +104,15 @@
       ]
     ]
   )
+  (
+    LiteralExpr [STRING] [result9]
+    :
+    OperatorExpr [
+      FunctionCall null.int32@1[
+        LiteralExpr [STRING] [1]
+      ]
+      /
+      LiteralExpr [LONG] [0]
+    ]
+  )
 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.2.ast
index 05bd4a7..75eb726 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.2.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.2.ast
@@ -82,8 +82,8 @@
     LiteralExpr [STRING] [result7]
     :
     OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
+      FunctionCall null.int32@1[
+        LiteralExpr [STRING] [-6]
       ]
       div
       LiteralExpr [NULL]
@@ -93,8 +93,8 @@
     LiteralExpr [STRING] [result8]
     :
     OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
+      FunctionCall null.int32@1[
+        LiteralExpr [STRING] [-6]
       ]
       div
       FieldAccessor [
@@ -104,4 +104,15 @@
       ]
     ]
   )
+  (
+    LiteralExpr [STRING] [result9]
+    :
+    OperatorExpr [
+      FunctionCall null.int32@1[
+        LiteralExpr [STRING] [1]
+      ]
+      div
+      LiteralExpr [LONG] [0]
+    ]
+  )
 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.1.ast
index 1570f6b..22a3401 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.1.ast
@@ -82,8 +82,8 @@
     LiteralExpr [STRING] [result7]
     :
     OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
+      FunctionCall null.int64@1[
+        LiteralExpr [STRING] [-6]
       ]
       /
       LiteralExpr [NULL]
@@ -93,8 +93,8 @@
     LiteralExpr [STRING] [result8]
     :
     OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
+      FunctionCall null.int64@1[
+        LiteralExpr [STRING] [-6]
       ]
       /
       FieldAccessor [
@@ -104,4 +104,15 @@
       ]
     ]
   )
+  (
+    LiteralExpr [STRING] [result9]
+    :
+    OperatorExpr [
+      FunctionCall null.int64@1[
+        LiteralExpr [STRING] [1]
+      ]
+      /
+      LiteralExpr [LONG] [0]
+    ]
+  )
 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.2.ast
index 5e1007a..8f295f3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.2.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.2.ast
@@ -82,8 +82,8 @@
     LiteralExpr [STRING] [result7]
     :
     OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
+      FunctionCall null.int64@1[
+        LiteralExpr [STRING] [-6]
       ]
       div
       LiteralExpr [NULL]
@@ -93,8 +93,8 @@
     LiteralExpr [STRING] [result8]
     :
     OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
+      FunctionCall null.int64@1[
+        LiteralExpr [STRING] [-6]
       ]
       div
       FieldAccessor [
@@ -104,4 +104,15 @@
       ]
     ]
   )
+  (
+    LiteralExpr [STRING] [result9]
+    :
+    OperatorExpr [
+      FunctionCall null.int64@1[
+        LiteralExpr [STRING] [1]
+      ]
+      div
+      LiteralExpr [LONG] [0]
+    ]
+  )
 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.1.ast
index 96b5942..2243ace 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.1.ast
@@ -82,8 +82,8 @@
     LiteralExpr [STRING] [result7]
     :
     OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
+      FunctionCall null.int8@1[
+        LiteralExpr [STRING] [-6]
       ]
       /
       LiteralExpr [NULL]
@@ -93,8 +93,8 @@
     LiteralExpr [STRING] [result8]
     :
     OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
+      FunctionCall null.int8@1[
+        LiteralExpr [STRING] [-6]
       ]
       /
       FieldAccessor [
@@ -104,4 +104,15 @@
       ]
     ]
   )
+  (
+    LiteralExpr [STRING] [result9]
+    :
+    OperatorExpr [
+      FunctionCall null.int8@1[
+        LiteralExpr [STRING] [1]
+      ]
+      /
+      LiteralExpr [LONG] [0]
+    ]
+  )
 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.2.ast
index 6442d38..f1e7dab 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.2.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.2.ast
@@ -82,8 +82,8 @@
     LiteralExpr [STRING] [result7]
     :
     OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
+      FunctionCall null.int8@1[
+        LiteralExpr [STRING] [-6]
       ]
       div
       LiteralExpr [NULL]
@@ -93,8 +93,8 @@
     LiteralExpr [STRING] [result8]
     :
     OperatorExpr [
-      FunctionCall null.double@1[
-        LiteralExpr [STRING] [-6.5d]
+      FunctionCall null.int8@1[
+        LiteralExpr [STRING] [-6]
       ]
       div
       FieldAccessor [
@@ -104,4 +104,15 @@
       ]
     ]
   )
+  (
+    LiteralExpr [STRING] [result9]
+    :
+    OperatorExpr [
+      FunctionCall null.int8@1[
+        LiteralExpr [STRING] [1]
+      ]
+      div
+      LiteralExpr [LONG] [0]
+    ]
+  )
 ]
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
index d8f3f7d..8af1ec7 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
@@ -74,7 +74,6 @@
     public static final int INVALID_TYPE_CASTING_MATH_FUNCTION = 31;
     public static final int REJECT_BAD_CLUSTER_STATE = 32;
     public static final int REJECT_NODE_UNREGISTERED = 33;
-    public static final int DIVISION_BY_ZERO = 34;
     public static final int UNSUPPORTED_MULTIPLE_STATEMENTS = 35;
     public static final int CANNOT_COMPARE_COMPLEX = 36;
     public static final int TYPE_MISMATCH_GENERIC = 37;
diff --git a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
index 4adf979..ee88010 100644
--- a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
+++ b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
@@ -69,7 +69,6 @@
 31 = Invalid type-casting math function: %1$s for converting %2$s to %3$s
 32 = Cannot execute request, cluster is %1$s
 33 = Node is not registered with the CC
-34 = Division by zero.
 35 = Unsupported multiple statements.
 36 = Cannot compare non-primitive values
 38 = Input contains different list types
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
index 4afeef1..d2c8269 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
@@ -1210,8 +1210,8 @@
         addPrivateFunction(NUMERIC_SUBTRACT, NumericAddSubMulDivTypeComputer.INSTANCE, true);
         addPrivateFunction(NUMERIC_MULTIPLY, NumericAddSubMulDivTypeComputer.INSTANCE, true);
         addPrivateFunction(NUMERIC_DIVIDE, NumericDivideTypeComputer.INSTANCE, true);
-        addPrivateFunction(NUMERIC_MOD, NumericAddSubMulDivTypeComputer.INSTANCE, true);
-        addPrivateFunction(NUMERIC_DIV, NumericAddSubMulDivTypeComputer.INSTANCE, true);
+        addPrivateFunction(NUMERIC_MOD, NumericAddSubMulDivTypeComputer.INSTANCE_NULLABLE, true);
+        addPrivateFunction(NUMERIC_DIV, NumericAddSubMulDivTypeComputer.INSTANCE_NULLABLE, true);
         addFunction(NUMERIC_ABS, NumericUnaryFunctionTypeComputer.INSTANCE, true);
         addFunction(NUMERIC_ACOS, NumericDoubleOutputFunctionTypeComputer.INSTANCE, true);
         addFunction(NUMERIC_ASIN, NumericDoubleOutputFunctionTypeComputer.INSTANCE, true);
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/NumericAddSubMulDivTypeComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/NumericAddSubMulDivTypeComputer.java
index b311b6e..47ad411 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/NumericAddSubMulDivTypeComputer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/NumericAddSubMulDivTypeComputer.java
@@ -21,6 +21,7 @@
 import org.apache.asterix.om.exceptions.IncompatibleTypeException;
 import org.apache.asterix.om.typecomputer.base.AbstractResultTypeComputer;
 import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.AUnionType;
 import org.apache.asterix.om.types.BuiltinType;
 import org.apache.asterix.om.types.IAType;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -28,10 +29,20 @@
 import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
 
 public class NumericAddSubMulDivTypeComputer extends AbstractResultTypeComputer {
+    /**
+     * For those functions that do not return NULL if both arguments are not NULL
+     */
+    public static final NumericAddSubMulDivTypeComputer INSTANCE = new NumericAddSubMulDivTypeComputer(false);
 
-    public static final NumericAddSubMulDivTypeComputer INSTANCE = new NumericAddSubMulDivTypeComputer();
+    /**
+     * For those functions that may return NULL even if both arguments are not NULL (e.g. division by zero)
+     */
+    public static final NumericAddSubMulDivTypeComputer INSTANCE_NULLABLE = new NumericAddSubMulDivTypeComputer(true);
 
-    private NumericAddSubMulDivTypeComputer() {
+    private final boolean nullable;
+
+    private NumericAddSubMulDivTypeComputer(boolean nullable) {
+        this.nullable = nullable;
     }
 
     @Override
@@ -303,6 +314,11 @@
             default:
                 throw new IncompatibleTypeException(funcExpr.getSourceLocation(), funcName, tag1, tag2);
         }
+
+        if (nullable && type.getTypeTag() != ATypeTag.ANY) {
+            type = AUnionType.createNullableType(type);
+        }
+
         return type;
     }
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/NumericDivideTypeComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/NumericDivideTypeComputer.java
index 5e2ebae..c94a22b 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/NumericDivideTypeComputer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/NumericDivideTypeComputer.java
@@ -22,6 +22,7 @@
 import org.apache.asterix.om.exceptions.IncompatibleTypeException;
 import org.apache.asterix.om.typecomputer.base.AbstractResultTypeComputer;
 import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.AUnionType;
 import org.apache.asterix.om.types.BuiltinType;
 import org.apache.asterix.om.types.IAType;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -232,6 +233,12 @@
             default:
                 throw new IncompatibleTypeException(funcExpr.getSourceLocation(), funcName, tag1, tag2);
         }
+
+        if (type.getTypeTag() != ATypeTag.ANY) {
+            // returns NULL if division by 0
+            type = AUnionType.createNullableType(type);
+        }
+
         return type;
     }
 }
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractNumericArithmeticEval.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractNumericArithmeticEval.java
index b6cec11..746273f 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractNumericArithmeticEval.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractNumericArithmeticEval.java
@@ -43,6 +43,7 @@
 import org.apache.asterix.om.base.AMutableInt64;
 import org.apache.asterix.om.base.AMutableInt8;
 import org.apache.asterix.om.base.AMutableTime;
+import org.apache.asterix.om.base.ANull;
 import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
 import org.apache.asterix.om.types.ATypeTag;
 import org.apache.asterix.om.types.BuiltinType;
@@ -66,32 +67,50 @@
 @SuppressWarnings("serial")
 public abstract class AbstractNumericArithmeticEval extends AbstractScalarFunctionDynamicDescriptor {
 
-    abstract protected long evaluateInteger(long lhs, long rhs) throws HyracksDataException;
+    /**
+     * abstract method for arithmetic operation between two integer values
+     *
+     * @param lhs first operand
+     * @param rhs second operand
+     * @param result result holder
+     * @return {@code false} if the result is {@code NULL}, otherwise {@code true}
+     */
+    abstract protected boolean evaluateInteger(long lhs, long rhs, AMutableInt64 result) throws HyracksDataException;
 
-    abstract protected double evaluateDouble(double lhs, double rhs) throws HyracksDataException;
+    /**
+     * abstract method for arithmetic operation between two floating point values
+     *
+     * @param lhs first operand
+     * @param rhs second operand
+     * @param result result holder
+     * @return {@code false} if the result is {@code NULL}, otherwise {@code true}
+     */
+    abstract protected boolean evaluateDouble(double lhs, double rhs, AMutableDouble result)
+            throws HyracksDataException;
 
     /**
      * abstract method for arithmetic operation between a time instance (date/time/datetime)
      * and a duration (duration/year-month-duration/day-time-duration)
      *
-     * @param chronon
-     * @param yearMonth
-     * @param dayTime
-     * @return
-     * @throws HyracksDataException
+     * @param chronon first operand
+     * @param yearMonth year-month component of the second operand
+     * @param dayTime day-time component of the second operand
+     * @param result result holder
+     * @return {@code false} if the result is {@code NULL}, otherwise {@code true}
      */
-    abstract protected long evaluateTimeDurationArithmetic(long chronon, int yearMonth, long dayTime,
-            boolean isTimeOnly) throws HyracksDataException;
+    abstract protected boolean evaluateTimeDurationArithmetic(long chronon, int yearMonth, long dayTime,
+            boolean isTimeOnly, AMutableInt64 result) throws HyracksDataException;
 
     /**
      * abstract method for arithmetic operation between two time instances (date/time/datetime)
      *
-     * @param chronon0
-     * @param chronon1
-     * @return
-     * @throws HyracksDataException
+     * @param chronon0 first operand
+     * @param chronon1 second operand
+     * @param result result holder
+     * @return {@code false} if the result is {@code NULL}, otherwise {@code true}
      */
-    abstract protected long evaluateTimeInstanceArithmetic(long chronon0, long chronon1) throws HyracksDataException;
+    abstract protected boolean evaluateTimeInstanceArithmetic(long chronon0, long chronon1, AMutableInt64 result)
+            throws HyracksDataException;
 
     @Override
     public IScalarEvaluatorFactory createEvaluatorFactory(final IScalarEvaluatorFactory[] args) {
@@ -153,6 +172,9 @@
                     @SuppressWarnings("rawtypes")
                     private final ISerializerDeserializer durationSerde =
                             SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(BuiltinType.ADURATION);
+                    @SuppressWarnings("rawtypes")
+                    private final ISerializerDeserializer nullSerde =
+                            SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(BuiltinType.ANULL);
 
                     @Override
                     @SuppressWarnings("unchecked")
@@ -232,58 +254,78 @@
                         double dres;
                         switch (resultType) {
                             case TINYINT:
-                                lres = evaluateInteger(operandsInteger[0], operandsInteger[1]);
-                                if (lres > Byte.MAX_VALUE) {
-                                    throw new OverflowException(sourceLoc, getIdentifier());
+                                if (evaluateInteger(operandsInteger[0], operandsInteger[1], aInt64)) {
+                                    lres = aInt64.getLongValue();
+                                    if (lres > Byte.MAX_VALUE) {
+                                        throw new OverflowException(sourceLoc, getIdentifier());
+                                    }
+                                    if (lres < Byte.MIN_VALUE) {
+                                        throw new UnderflowException(sourceLoc, getIdentifier());
+                                    }
+                                    aInt8.setValue((byte) lres);
+                                    int8Serde.serialize(aInt8, out);
+                                } else {
+                                    nullSerde.serialize(ANull.NULL, out);
                                 }
-                                if (lres < Byte.MIN_VALUE) {
-                                    throw new UnderflowException(sourceLoc, getIdentifier());
-                                }
-                                aInt8.setValue((byte) lres);
-                                int8Serde.serialize(aInt8, out);
                                 break;
                             case SMALLINT:
-                                lres = evaluateInteger(operandsInteger[0], operandsInteger[1]);
-                                if (lres > Short.MAX_VALUE) {
-                                    throw new OverflowException(sourceLoc, getIdentifier());
+                                if (evaluateInteger(operandsInteger[0], operandsInteger[1], aInt64)) {
+                                    lres = aInt64.getLongValue();
+                                    if (lres > Short.MAX_VALUE) {
+                                        throw new OverflowException(sourceLoc, getIdentifier());
+                                    }
+                                    if (lres < Short.MIN_VALUE) {
+                                        throw new UnderflowException(sourceLoc, getIdentifier());
+                                    }
+                                    aInt16.setValue((short) lres);
+                                    int16Serde.serialize(aInt16, out);
+                                } else {
+                                    nullSerde.serialize(ANull.NULL, out);
                                 }
-                                if (lres < Short.MIN_VALUE) {
-                                    throw new UnderflowException(sourceLoc, getIdentifier());
-                                }
-                                aInt16.setValue((short) lres);
-                                int16Serde.serialize(aInt16, out);
                                 break;
                             case INTEGER:
-                                lres = evaluateInteger(operandsInteger[0], operandsInteger[1]);
-                                if (lres > Integer.MAX_VALUE) {
-                                    throw new OverflowException(sourceLoc, getIdentifier());
+                                if (evaluateInteger(operandsInteger[0], operandsInteger[1], aInt64)) {
+                                    lres = aInt64.getLongValue();
+                                    if (lres > Integer.MAX_VALUE) {
+                                        throw new OverflowException(sourceLoc, getIdentifier());
+                                    }
+                                    if (lres < Integer.MIN_VALUE) {
+                                        throw new UnderflowException(sourceLoc, getIdentifier());
+                                    }
+                                    aInt32.setValue((int) lres);
+                                    int32Serde.serialize(aInt32, out);
+                                } else {
+                                    nullSerde.serialize(ANull.NULL, out);
                                 }
-                                if (lres < Integer.MIN_VALUE) {
-                                    throw new UnderflowException(sourceLoc, getIdentifier());
-                                }
-                                aInt32.setValue((int) lres);
-                                int32Serde.serialize(aInt32, out);
                                 break;
                             case BIGINT:
-                                lres = evaluateInteger(operandsInteger[0], operandsInteger[1]);
-                                aInt64.setValue(lres);
-                                int64Serde.serialize(aInt64, out);
+                                if (evaluateInteger(operandsInteger[0], operandsInteger[1], aInt64)) {
+                                    int64Serde.serialize(aInt64, out);
+                                } else {
+                                    nullSerde.serialize(ANull.NULL, out);
+                                }
                                 break;
                             case FLOAT:
-                                dres = evaluateDouble(operandsFloating[0], operandsFloating[1]);
-                                if (dres > Float.MAX_VALUE) {
-                                    throw new OverflowException(sourceLoc, getIdentifier());
+                                if (evaluateDouble(operandsFloating[0], operandsFloating[1], aDouble)) {
+                                    dres = aDouble.getDoubleValue();
+                                    if (dres > Float.MAX_VALUE) {
+                                        throw new OverflowException(sourceLoc, getIdentifier());
+                                    }
+                                    if (dres < -Float.MAX_VALUE) {
+                                        throw new UnderflowException(sourceLoc, getIdentifier());
+                                    }
+                                    aFloat.setValue((float) dres);
+                                    floatSerde.serialize(aFloat, out);
+                                } else {
+                                    nullSerde.serialize(ANull.NULL, out);
                                 }
-                                if (dres < -Float.MAX_VALUE) {
-                                    throw new UnderflowException(sourceLoc, getIdentifier());
-                                }
-                                aFloat.setValue((float) dres);
-                                floatSerde.serialize(aFloat, out);
                                 break;
                             case DOUBLE:
-                                dres = evaluateDouble(operandsFloating[0], operandsFloating[1]);
-                                aDouble.setValue(dres);
-                                doubleSerde.serialize(aDouble, out);
+                                if (evaluateDouble(operandsFloating[0], operandsFloating[1], aDouble)) {
+                                    doubleSerde.serialize(aDouble, out);
+                                } else {
+                                    nullSerde.serialize(ANull.NULL, out);
+                                }
                                 break;
                         }
                         result.set(resultStorage);
@@ -298,10 +340,9 @@
                         int offset0 = argPtr0.getStartOffset();
 
                         if (rightType == leftType) {
-
-                            long leftChronon = 0, rightChronon = 0, dayTime;
-
+                            long leftChronon = 0, rightChronon = 0, dayTime = 0;
                             int yearMonth = 0;
+                            boolean yearMonthIsNull = false, dayTimeIsNull = false;
 
                             switch (leftType) {
                                 case DATE:
@@ -319,9 +360,14 @@
                                     rightChronon = ADateTimeSerializerDeserializer.getChronon(bytes1, offset1 + 1);
                                     break;
                                 case YEARMONTHDURATION:
-                                    yearMonth = (int) evaluateTimeInstanceArithmetic(
+                                    if (evaluateTimeInstanceArithmetic(
                                             AYearMonthDurationSerializerDeserializer.getYearMonth(bytes0, offset0 + 1),
-                                            AYearMonthDurationSerializerDeserializer.getYearMonth(bytes1, offset1 + 1));
+                                            AYearMonthDurationSerializerDeserializer.getYearMonth(bytes1, offset1 + 1),
+                                            aInt64)) {
+                                        yearMonth = (int) aInt64.getLongValue();
+                                    } else {
+                                        yearMonthIsNull = true;
+                                    }
                                     break;
                                 case DAYTIMEDURATION:
                                     leftChronon =
@@ -333,10 +379,18 @@
                                     throw new UnsupportedTypeException(sourceLoc, getIdentifier(), bytes1[offset1]);
                             }
 
-                            dayTime = evaluateTimeInstanceArithmetic(leftChronon, rightChronon);
+                            if (evaluateTimeInstanceArithmetic(leftChronon, rightChronon, aInt64)) {
+                                dayTime = aInt64.getLongValue();
+                            } else {
+                                dayTimeIsNull = true;
+                            }
 
-                            aDuration.setValue(yearMonth, dayTime);
-                            durationSerde.serialize(aDuration, out);
+                            if (yearMonthIsNull || dayTimeIsNull) {
+                                nullSerde.serialize(ANull.NULL, out);
+                            } else {
+                                aDuration.setValue(yearMonth, dayTime);
+                                durationSerde.serialize(aDuration, out);
+                            }
 
                         } else {
                             long chronon = 0, dayTime = 0;
@@ -455,29 +509,32 @@
                                             bytes1[offset1]);
                             }
 
-                            chronon = evaluateTimeDurationArithmetic(chronon, yearMonth, dayTime, isTimeOnly);
-
-                            switch (resultType) {
-                                case DATE:
-                                    if (chronon < 0 && chronon % GregorianCalendarSystem.CHRONON_OF_DAY != 0) {
-                                        chronon = chronon / GregorianCalendarSystem.CHRONON_OF_DAY - 1;
-                                    } else {
-                                        chronon = chronon / GregorianCalendarSystem.CHRONON_OF_DAY;
-                                    }
-                                    aDate.setValue((int) chronon);
-                                    serde.serialize(aDate, out);
-                                    break;
-                                case TIME:
-                                    aTime.setValue((int) chronon);
-                                    serde.serialize(aTime, out);
-                                    break;
-                                case DATETIME:
-                                    aDatetime.setValue(chronon);
-                                    serde.serialize(aDatetime, out);
-                                    break;
-                                default:
-                                    throw new IncompatibleTypeException(sourceLoc, getIdentifier(), bytes0[offset0],
-                                            bytes1[offset1]);
+                            if (evaluateTimeDurationArithmetic(chronon, yearMonth, dayTime, isTimeOnly, aInt64)) {
+                                chronon = aInt64.getLongValue();
+                                switch (resultType) {
+                                    case DATE:
+                                        if (chronon < 0 && chronon % GregorianCalendarSystem.CHRONON_OF_DAY != 0) {
+                                            chronon = chronon / GregorianCalendarSystem.CHRONON_OF_DAY - 1;
+                                        } else {
+                                            chronon = chronon / GregorianCalendarSystem.CHRONON_OF_DAY;
+                                        }
+                                        aDate.setValue((int) chronon);
+                                        serde.serialize(aDate, out);
+                                        break;
+                                    case TIME:
+                                        aTime.setValue((int) chronon);
+                                        serde.serialize(aTime, out);
+                                        break;
+                                    case DATETIME:
+                                        aDatetime.setValue(chronon);
+                                        serde.serialize(aDatetime, out);
+                                        break;
+                                    default:
+                                        throw new IncompatibleTypeException(sourceLoc, getIdentifier(), bytes0[offset0],
+                                                bytes1[offset1]);
+                                }
+                            } else {
+                                nullSerde.serialize(ANull.NULL, out);
                             }
                         }
                     }
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericAddDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericAddDescriptor.java
index f64b829..9b8ffeb 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericAddDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericAddDescriptor.java
@@ -18,11 +18,14 @@
  */
 package org.apache.asterix.runtime.evaluators.functions;
 
+import org.apache.asterix.om.base.AMutableDouble;
+import org.apache.asterix.om.base.AMutableInt64;
 import org.apache.asterix.om.base.temporal.DurationArithmeticOperations;
 import org.apache.asterix.om.functions.BuiltinFunctions;
 import org.apache.asterix.om.functions.IFunctionDescriptor;
 import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
 import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.runtime.exceptions.OverflowException;
 import org.apache.asterix.runtime.exceptions.UnsupportedTypeException;
 import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
@@ -42,23 +45,34 @@
     }
 
     @Override
-    protected long evaluateInteger(long x, long y) throws HyracksDataException {
-        return Math.addExact(x, y);
+    protected boolean evaluateInteger(long x, long y, AMutableInt64 result) throws HyracksDataException {
+        try {
+            long res = Math.addExact(x, y);
+            result.setValue(res);
+            return true;
+        } catch (ArithmeticException e) {
+            throw new OverflowException(sourceLoc, getIdentifier());
+        }
     }
 
     @Override
-    protected double evaluateDouble(double lhs, double rhs) throws HyracksDataException {
-        return lhs + rhs;
+    protected boolean evaluateDouble(double lhs, double rhs, AMutableDouble result) throws HyracksDataException {
+        double res = lhs + rhs;
+        result.setValue(res);
+        return true;
     }
 
     @Override
-    protected long evaluateTimeDurationArithmetic(long chronon, int yearMonth, long dayTime, boolean isTimeOnly)
+    protected boolean evaluateTimeDurationArithmetic(long chronon, int yearMonth, long dayTime, boolean isTimeOnly,
+            AMutableInt64 result) throws HyracksDataException {
+        long res = DurationArithmeticOperations.addDuration(chronon, yearMonth, dayTime, isTimeOnly);
+        result.setValue(res);
+        return true;
+    }
+
+    @Override
+    protected boolean evaluateTimeInstanceArithmetic(long chronon0, long chronon1, AMutableInt64 result)
             throws HyracksDataException {
-        return DurationArithmeticOperations.addDuration(chronon, yearMonth, dayTime, isTimeOnly);
-    }
-
-    @Override
-    protected long evaluateTimeInstanceArithmetic(long chronon0, long chronon1) throws HyracksDataException {
         throw new UnsupportedTypeException(sourceLoc, getIdentifier(), ATypeTag.SERIALIZED_TIME_TYPE_TAG);
     }
 }
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericDivDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericDivDescriptor.java
index 56d90f7..2eeefe8 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericDivDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericDivDescriptor.java
@@ -19,8 +19,8 @@
 
 package org.apache.asterix.runtime.evaluators.functions;
 
-import org.apache.asterix.common.exceptions.ErrorCode;
-import org.apache.asterix.common.exceptions.RuntimeDataException;
+import org.apache.asterix.om.base.AMutableDouble;
+import org.apache.asterix.om.base.AMutableInt64;
 import org.apache.asterix.om.functions.BuiltinFunctions;
 import org.apache.asterix.om.functions.IFunctionDescriptor;
 import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
@@ -46,28 +46,37 @@
     }
 
     @Override
-    protected double evaluateDouble(double lhs, double rhs) {
-        return lhs / rhs;
+    protected boolean evaluateDouble(double lhs, double rhs, AMutableDouble result) {
+        if (rhs == 0) {
+            return false; // result = NULL
+        }
+        double res = lhs / rhs;
+        result.setValue(res);
+        return true;
     }
 
     @Override
-    protected long evaluateInteger(long lhs, long rhs) throws HyracksDataException {
+    protected boolean evaluateInteger(long lhs, long rhs, AMutableInt64 result) throws HyracksDataException {
         if (rhs == 0) {
-            throw new RuntimeDataException(ErrorCode.DIVISION_BY_ZERO);
+            return false; // result = NULL
         }
         if ((lhs == Long.MIN_VALUE) && (rhs == -1L)) {
             throw new OverflowException(sourceLoc, getIdentifier());
         }
-        return lhs / rhs;
+        long res = lhs / rhs;
+        result.setValue(res);
+        return true;
     }
 
     @Override
-    protected long evaluateTimeDurationArithmetic(long chronon, int yearMonth, long dayTime, boolean isTimeOnly) {
+    protected boolean evaluateTimeDurationArithmetic(long chronon, int yearMonth, long dayTime, boolean isTimeOnly,
+            AMutableInt64 result) {
         throw new NotImplementedException("Divide operation is not defined for temporal types");
     }
 
     @Override
-    protected long evaluateTimeInstanceArithmetic(long chronon0, long chronon1) throws HyracksDataException {
+    protected boolean evaluateTimeInstanceArithmetic(long chronon0, long chronon1, AMutableInt64 result)
+            throws HyracksDataException {
         throw new UnsupportedTypeException(sourceLoc, getIdentifier(), ATypeTag.SERIALIZED_TIME_TYPE_TAG);
     }
 }
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericDivideDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericDivideDescriptor.java
index 0c1a3eb..6e6b5a8 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericDivideDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericDivideDescriptor.java
@@ -18,6 +18,8 @@
  */
 package org.apache.asterix.runtime.evaluators.functions;
 
+import org.apache.asterix.om.base.AMutableDouble;
+import org.apache.asterix.om.base.AMutableInt64;
 import org.apache.asterix.om.functions.BuiltinFunctions;
 import org.apache.asterix.om.functions.IFunctionDescriptor;
 import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
@@ -47,22 +49,29 @@
     }
 
     @Override
-    protected double evaluateDouble(double lhs, double rhs) {
-        return lhs / rhs;
+    protected boolean evaluateDouble(double lhs, double rhs, AMutableDouble result) {
+        if (rhs == 0) {
+            return false; // result = NULL
+        }
+        double res = lhs / rhs;
+        result.setValue(res);
+        return true;
     }
 
     @Override
-    protected long evaluateInteger(long lhs, long rhs) {
+    protected boolean evaluateInteger(long lhs, long rhs, AMutableInt64 result) {
         throw new IllegalStateException();
     }
 
     @Override
-    protected long evaluateTimeDurationArithmetic(long chronon, int yearMonth, long dayTime, boolean isTimeOnly) {
+    protected boolean evaluateTimeDurationArithmetic(long chronon, int yearMonth, long dayTime, boolean isTimeOnly,
+            AMutableInt64 result) {
         throw new NotImplementedException("Divide operation is not defined for temporal types");
     }
 
     @Override
-    protected long evaluateTimeInstanceArithmetic(long chronon0, long chronon1) throws HyracksDataException {
+    protected boolean evaluateTimeInstanceArithmetic(long chronon0, long chronon1, AMutableInt64 result)
+            throws HyracksDataException {
         throw new UnsupportedTypeException(sourceLoc, getIdentifier(), ATypeTag.SERIALIZED_TIME_TYPE_TAG);
     }
 }
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericModuloDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericModuloDescriptor.java
index a967162..e737841 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericModuloDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericModuloDescriptor.java
@@ -18,6 +18,8 @@
  */
 package org.apache.asterix.runtime.evaluators.functions;
 
+import org.apache.asterix.om.base.AMutableDouble;
+import org.apache.asterix.om.base.AMutableInt64;
 import org.apache.asterix.om.functions.BuiltinFunctions;
 import org.apache.asterix.om.functions.IFunctionDescriptor;
 import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
@@ -43,23 +45,34 @@
     }
 
     @Override
-    protected long evaluateInteger(long lhs, long rhs) throws HyracksDataException {
-        return lhs % rhs;
+    protected boolean evaluateInteger(long lhs, long rhs, AMutableInt64 result) throws HyracksDataException {
+        if (rhs == 0) {
+            return false; // result = NULL
+        }
+        long res = lhs % rhs;
+        result.setValue(res);
+        return true;
     }
 
     @Override
-    protected double evaluateDouble(double lhs, double rhs) throws HyracksDataException {
-        return lhs % rhs;
+    protected boolean evaluateDouble(double lhs, double rhs, AMutableDouble result) throws HyracksDataException {
+        if (rhs == 0) {
+            return false; // result = NULL
+        }
+        double res = lhs % rhs;
+        result.setValue(res);
+        return true;
     }
 
     @Override
-    protected long evaluateTimeDurationArithmetic(long chronon, int yearMonth, long dayTime, boolean isTimeOnly)
-            throws HyracksDataException {
+    protected boolean evaluateTimeDurationArithmetic(long chronon, int yearMonth, long dayTime, boolean isTimeOnly,
+            AMutableInt64 result) throws HyracksDataException {
         throw new UnsupportedTypeException(sourceLoc, getIdentifier(), ATypeTag.SERIALIZED_DURATION_TYPE_TAG);
     }
 
     @Override
-    protected long evaluateTimeInstanceArithmetic(long chronon0, long chronon1) throws HyracksDataException {
+    protected boolean evaluateTimeInstanceArithmetic(long chronon0, long chronon1, AMutableInt64 result)
+            throws HyracksDataException {
         throw new UnsupportedTypeException(sourceLoc, getIdentifier(), ATypeTag.SERIALIZED_TIME_TYPE_TAG);
     }
 }
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericMultiplyDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericMultiplyDescriptor.java
index 57de132..64fa2b2 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericMultiplyDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericMultiplyDescriptor.java
@@ -18,10 +18,13 @@
  */
 package org.apache.asterix.runtime.evaluators.functions;
 
+import org.apache.asterix.om.base.AMutableDouble;
+import org.apache.asterix.om.base.AMutableInt64;
 import org.apache.asterix.om.functions.BuiltinFunctions;
 import org.apache.asterix.om.functions.IFunctionDescriptor;
 import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
 import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.runtime.exceptions.OverflowException;
 import org.apache.asterix.runtime.exceptions.UnsupportedTypeException;
 import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
@@ -41,23 +44,32 @@
     }
 
     @Override
-    protected long evaluateInteger(long lhs, long rhs) throws HyracksDataException {
-        return Math.multiplyExact(lhs, rhs);
+    protected boolean evaluateInteger(long lhs, long rhs, AMutableInt64 result) throws HyracksDataException {
+        try {
+            long res = Math.multiplyExact(lhs, rhs);
+            result.setValue(res);
+            return true;
+        } catch (ArithmeticException e) {
+            throw new OverflowException(sourceLoc, getIdentifier());
+        }
     }
 
     @Override
-    protected double evaluateDouble(double lhs, double rhs) throws HyracksDataException {
-        return lhs * rhs;
+    protected boolean evaluateDouble(double lhs, double rhs, AMutableDouble result) throws HyracksDataException {
+        double res = lhs * rhs;
+        result.setValue(res);
+        return true;
     }
 
     @Override
-    protected long evaluateTimeDurationArithmetic(long chronon, int yearMonth, long dayTime, boolean isTimeOnly)
-            throws HyracksDataException {
+    protected boolean evaluateTimeDurationArithmetic(long chronon, int yearMonth, long dayTime, boolean isTimeOnly,
+            AMutableInt64 result) throws HyracksDataException {
         throw new UnsupportedTypeException(sourceLoc, getIdentifier(), ATypeTag.SERIALIZED_DURATION_TYPE_TAG);
     }
 
     @Override
-    protected long evaluateTimeInstanceArithmetic(long chronon0, long chronon1) throws HyracksDataException {
+    protected boolean evaluateTimeInstanceArithmetic(long chronon0, long chronon1, AMutableInt64 result)
+            throws HyracksDataException {
         throw new UnsupportedTypeException(sourceLoc, getIdentifier(), ATypeTag.SERIALIZED_TIME_TYPE_TAG);
     }
 }
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericPowerDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericPowerDescriptor.java
index a5312b9..68ed6e8 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericPowerDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericPowerDescriptor.java
@@ -18,6 +18,8 @@
  */
 package org.apache.asterix.runtime.evaluators.functions;
 
+import org.apache.asterix.om.base.AMutableDouble;
+import org.apache.asterix.om.base.AMutableInt64;
 import org.apache.asterix.om.functions.BuiltinFunctions;
 import org.apache.asterix.om.functions.IFunctionDescriptor;
 import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
@@ -43,19 +45,27 @@
      * @see org.apache.asterix.runtime.evaluators.functions.AbstractNumericArithmeticEval#evaluateInteger(long, long)
      */
     @Override
-    protected long evaluateInteger(long lhs, long rhs) throws HyracksDataException {
+    protected boolean evaluateInteger(long lhs, long rhs, AMutableInt64 result) throws HyracksDataException {
         if (rhs > Integer.MAX_VALUE) {
             throw new OverflowException(sourceLoc, getIdentifier());
         }
-        return LongMath.checkedPow(lhs, (int) rhs);
+        try {
+            long res = LongMath.checkedPow(lhs, (int) rhs);
+            result.setValue(res);
+            return true;
+        } catch (ArithmeticException e) {
+            throw new OverflowException(sourceLoc, getIdentifier());
+        }
     }
 
     /* (non-Javadoc)
      * @see org.apache.asterix.runtime.evaluators.functions.AbstractNumericArithmeticEval#evaluateDouble(double, double)
      */
     @Override
-    protected double evaluateDouble(double lhs, double rhs) throws HyracksDataException {
-        return Math.pow(lhs, rhs);
+    protected boolean evaluateDouble(double lhs, double rhs, AMutableDouble result) throws HyracksDataException {
+        double res = Math.pow(lhs, rhs);
+        result.setValue(res);
+        return true;
     }
 
     /* (non-Javadoc)
@@ -67,14 +77,14 @@
     }
 
     @Override
-    protected long evaluateTimeDurationArithmetic(long chronon, int yearMonth, long dayTime, boolean isTimeOnly)
-            throws HyracksDataException {
+    protected boolean evaluateTimeDurationArithmetic(long chronon, int yearMonth, long dayTime, boolean isTimeOnly,
+            AMutableInt64 result) throws HyracksDataException {
         throw new UnsupportedTypeException(sourceLoc, getIdentifier().getName(), ATypeTag.SERIALIZED_DURATION_TYPE_TAG);
     }
 
     @Override
-    protected long evaluateTimeInstanceArithmetic(long chronon0, long chronon1) throws HyracksDataException {
+    protected boolean evaluateTimeInstanceArithmetic(long chronon0, long chronon1, AMutableInt64 result)
+            throws HyracksDataException {
         throw new UnsupportedTypeException(sourceLoc, getIdentifier().getName(), ATypeTag.SERIALIZED_TIME_TYPE_TAG);
     }
-
 }
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericSubDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericSubDescriptor.java
index f694226..30f6dda 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericSubDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/NumericSubDescriptor.java
@@ -18,10 +18,13 @@
  */
 package org.apache.asterix.runtime.evaluators.functions;
 
+import org.apache.asterix.om.base.AMutableDouble;
+import org.apache.asterix.om.base.AMutableInt64;
 import org.apache.asterix.om.base.temporal.DurationArithmeticOperations;
 import org.apache.asterix.om.functions.BuiltinFunctions;
 import org.apache.asterix.om.functions.IFunctionDescriptor;
 import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.exceptions.OverflowException;
 import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
@@ -43,33 +46,43 @@
      * @see org.apache.asterix.runtime.evaluators.functions.AbstractNumericArithmeticEval#evaluateInteger(long, long)
      */
     @Override
-    protected long evaluateInteger(long lhs, long rhs) throws HyracksDataException {
-        return Math.subtractExact(lhs, rhs);
+    protected boolean evaluateInteger(long lhs, long rhs, AMutableInt64 result) throws HyracksDataException {
+        try {
+            long res = Math.subtractExact(lhs, rhs);
+            result.setValue(res);
+            return true;
+        } catch (ArithmeticException e) {
+            throw new OverflowException(sourceLoc, getIdentifier());
+        }
     }
 
     /* (non-Javadoc)
      * @see org.apache.asterix.runtime.evaluators.functions.AbstractNumericArithmeticEval#evaluateDouble(double, double)
      */
     @Override
-    protected double evaluateDouble(double lhs, double rhs) throws HyracksDataException {
-        return lhs - rhs;
+    protected boolean evaluateDouble(double lhs, double rhs, AMutableDouble result) throws HyracksDataException {
+        double res = lhs - rhs;
+        result.setValue(res);
+        return true;
     }
 
     /* (non-Javadoc)
      * @see org.apache.asterix.runtime.evaluators.functions.AbstractNumericArithmeticEval#evaluateTimeDurationArithmetic(long, int, long, boolean)
      */
     @Override
-    protected long evaluateTimeDurationArithmetic(long chronon, int yearMonth, long dayTime, boolean isTimeOnly)
-            throws HyracksDataException {
-        return DurationArithmeticOperations.addDuration(chronon, -1 * yearMonth, -1 * dayTime, isTimeOnly);
+    protected boolean evaluateTimeDurationArithmetic(long chronon, int yearMonth, long dayTime, boolean isTimeOnly,
+            AMutableInt64 result) throws HyracksDataException {
+        long res = DurationArithmeticOperations.addDuration(chronon, -1 * yearMonth, -1 * dayTime, isTimeOnly);
+        result.setValue(res);
+        return true;
     }
 
     /* (non-Javadoc)
      * @see org.apache.asterix.runtime.evaluators.functions.AbstractNumericArithmeticEval#evaluateTimeInstanceArithmetic(long, long)
      */
     @Override
-    protected long evaluateTimeInstanceArithmetic(long chronon0, long chronon1) throws HyracksDataException {
-        return evaluateInteger(chronon0, chronon1);
+    protected boolean evaluateTimeInstanceArithmetic(long chronon0, long chronon1, AMutableInt64 result)
+            throws HyracksDataException {
+        return evaluateInteger(chronon0, chronon1, result);
     }
-
 }
