You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by am...@apache.org on 2016/02/01 09:31:29 UTC

[10/13] incubator-asterixdb git commit: Add Support for Upsert Operation

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/5dc958ce/asterix-app/src/test/resources/runtimets/results/upsert/open-index/open-index.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/upsert/open-index/open-index.1.adm b/asterix-app/src/test/resources/runtimets/results/upsert/open-index/open-index.1.adm
new file mode 100644
index 0000000..a7539e8
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/upsert/open-index/open-index.1.adm
@@ -0,0 +1,1109 @@
+{ "o_orderkey": 2, "o_custkey": 79 }
+{ "o_orderkey": 3, "o_custkey": 124 }
+{ "o_orderkey": 4, "o_custkey": 137 }
+{ "o_orderkey": 5, "o_custkey": 46 }
+{ "o_orderkey": 6, "o_custkey": 56 }
+{ "o_orderkey": 32, "o_custkey": 131 }
+{ "o_orderkey": 33, "o_custkey": 67 }
+{ "o_orderkey": 34, "o_custkey": 62 }
+{ "o_orderkey": 35, "o_custkey": 128 }
+{ "o_orderkey": 36, "o_custkey": 116 }
+{ "o_orderkey": 37, "o_custkey": 88 }
+{ "o_orderkey": 38, "o_custkey": 125 }
+{ "o_orderkey": 39, "o_custkey": 82 }
+{ "o_orderkey": 66, "o_custkey": 130 }
+{ "o_orderkey": 67, "o_custkey": 58 }
+{ "o_orderkey": 69, "o_custkey": 85 }
+{ "o_orderkey": 70, "o_custkey": 65 }
+{ "o_orderkey": 96, "o_custkey": 109 }
+{ "o_orderkey": 98, "o_custkey": 106 }
+{ "o_orderkey": 99, "o_custkey": 89 }
+{ "o_orderkey": 100, "o_custkey": 148 }
+{ "o_orderkey": 128, "o_custkey": 74 }
+{ "o_orderkey": 129, "o_custkey": 73 }
+{ "o_orderkey": 131, "o_custkey": 94 }
+{ "o_orderkey": 133, "o_custkey": 44 }
+{ "o_orderkey": 135, "o_custkey": 61 }
+{ "o_orderkey": 160, "o_custkey": 83 }
+{ "o_orderkey": 163, "o_custkey": 88 }
+{ "o_orderkey": 166, "o_custkey": 109 }
+{ "o_orderkey": 167, "o_custkey": 121 }
+{ "o_orderkey": 192, "o_custkey": 83 }
+{ "o_orderkey": 193, "o_custkey": 80 }
+{ "o_orderkey": 194, "o_custkey": 62 }
+{ "o_orderkey": 195, "o_custkey": 136 }
+{ "o_orderkey": 196, "o_custkey": 65 }
+{ "o_orderkey": 198, "o_custkey": 112 }
+{ "o_orderkey": 199, "o_custkey": 53 }
+{ "o_orderkey": 226, "o_custkey": 128 }
+{ "o_orderkey": 228, "o_custkey": 46 }
+{ "o_orderkey": 229, "o_custkey": 112 }
+{ "o_orderkey": 230, "o_custkey": 103 }
+{ "o_orderkey": 231, "o_custkey": 91 }
+{ "o_orderkey": 256, "o_custkey": 125 }
+{ "o_orderkey": 257, "o_custkey": 124 }
+{ "o_orderkey": 258, "o_custkey": 43 }
+{ "o_orderkey": 259, "o_custkey": 44 }
+{ "o_orderkey": 260, "o_custkey": 106 }
+{ "o_orderkey": 261, "o_custkey": 47 }
+{ "o_orderkey": 263, "o_custkey": 118 }
+{ "o_orderkey": 289, "o_custkey": 104 }
+{ "o_orderkey": 290, "o_custkey": 118 }
+{ "o_orderkey": 291, "o_custkey": 142 }
+{ "o_orderkey": 294, "o_custkey": 52 }
+{ "o_orderkey": 321, "o_custkey": 124 }
+{ "o_orderkey": 322, "o_custkey": 134 }
+{ "o_orderkey": 324, "o_custkey": 106 }
+{ "o_orderkey": 325, "o_custkey": 41 }
+{ "o_orderkey": 326, "o_custkey": 76 }
+{ "o_orderkey": 327, "o_custkey": 145 }
+{ "o_orderkey": 352, "o_custkey": 107 }
+{ "o_orderkey": 354, "o_custkey": 139 }
+{ "o_orderkey": 355, "o_custkey": 71 }
+{ "o_orderkey": 356, "o_custkey": 148 }
+{ "o_orderkey": 357, "o_custkey": 61 }
+{ "o_orderkey": 359, "o_custkey": 79 }
+{ "o_orderkey": 384, "o_custkey": 115 }
+{ "o_orderkey": 386, "o_custkey": 61 }
+{ "o_orderkey": 388, "o_custkey": 46 }
+{ "o_orderkey": 389, "o_custkey": 127 }
+{ "o_orderkey": 390, "o_custkey": 103 }
+{ "o_orderkey": 391, "o_custkey": 112 }
+{ "o_orderkey": 416, "o_custkey": 41 }
+{ "o_orderkey": 417, "o_custkey": 55 }
+{ "o_orderkey": 418, "o_custkey": 95 }
+{ "o_orderkey": 419, "o_custkey": 118 }
+{ "o_orderkey": 420, "o_custkey": 91 }
+{ "o_orderkey": 422, "o_custkey": 74 }
+{ "o_orderkey": 423, "o_custkey": 104 }
+{ "o_orderkey": 448, "o_custkey": 149 }
+{ "o_orderkey": 449, "o_custkey": 97 }
+{ "o_orderkey": 450, "o_custkey": 49 }
+{ "o_orderkey": 451, "o_custkey": 100 }
+{ "o_orderkey": 452, "o_custkey": 61 }
+{ "o_orderkey": 453, "o_custkey": 46 }
+{ "o_orderkey": 454, "o_custkey": 49 }
+{ "o_orderkey": 480, "o_custkey": 73 }
+{ "o_orderkey": 482, "o_custkey": 127 }
+{ "o_orderkey": 484, "o_custkey": 55 }
+{ "o_orderkey": 485, "o_custkey": 101 }
+{ "o_orderkey": 486, "o_custkey": 52 }
+{ "o_orderkey": 487, "o_custkey": 109 }
+{ "o_orderkey": 512, "o_custkey": 64 }
+{ "o_orderkey": 513, "o_custkey": 61 }
+{ "o_orderkey": 514, "o_custkey": 76 }
+{ "o_orderkey": 515, "o_custkey": 142 }
+{ "o_orderkey": 516, "o_custkey": 44 }
+{ "o_orderkey": 518, "o_custkey": 145 }
+{ "o_orderkey": 519, "o_custkey": 64 }
+{ "o_orderkey": 544, "o_custkey": 94 }
+{ "o_orderkey": 545, "o_custkey": 64 }
+{ "o_orderkey": 546, "o_custkey": 145 }
+{ "o_orderkey": 547, "o_custkey": 100 }
+{ "o_orderkey": 548, "o_custkey": 124 }
+{ "o_orderkey": 549, "o_custkey": 110 }
+{ "o_orderkey": 551, "o_custkey": 91 }
+{ "o_orderkey": 577, "o_custkey": 56 }
+{ "o_orderkey": 578, "o_custkey": 94 }
+{ "o_orderkey": 579, "o_custkey": 68 }
+{ "o_orderkey": 580, "o_custkey": 61 }
+{ "o_orderkey": 581, "o_custkey": 70 }
+{ "o_orderkey": 582, "o_custkey": 50 }
+{ "o_orderkey": 583, "o_custkey": 49 }
+{ "o_orderkey": 609, "o_custkey": 127 }
+{ "o_orderkey": 610, "o_custkey": 52 }
+{ "o_orderkey": 611, "o_custkey": 106 }
+{ "o_orderkey": 612, "o_custkey": 82 }
+{ "o_orderkey": 613, "o_custkey": 139 }
+{ "o_orderkey": 614, "o_custkey": 134 }
+{ "o_orderkey": 615, "o_custkey": 67 }
+{ "o_orderkey": 640, "o_custkey": 97 }
+{ "o_orderkey": 641, "o_custkey": 133 }
+{ "o_orderkey": 643, "o_custkey": 58 }
+{ "o_orderkey": 645, "o_custkey": 115 }
+{ "o_orderkey": 646, "o_custkey": 52 }
+{ "o_orderkey": 647, "o_custkey": 143 }
+{ "o_orderkey": 672, "o_custkey": 109 }
+{ "o_orderkey": 673, "o_custkey": 80 }
+{ "o_orderkey": 677, "o_custkey": 124 }
+{ "o_orderkey": 678, "o_custkey": 131 }
+{ "o_orderkey": 679, "o_custkey": 49 }
+{ "o_orderkey": 704, "o_custkey": 85 }
+{ "o_orderkey": 705, "o_custkey": 43 }
+{ "o_orderkey": 706, "o_custkey": 148 }
+{ "o_orderkey": 707, "o_custkey": 118 }
+{ "o_orderkey": 710, "o_custkey": 133 }
+{ "o_orderkey": 711, "o_custkey": 64 }
+{ "o_orderkey": 736, "o_custkey": 47 }
+{ "o_orderkey": 737, "o_custkey": 121 }
+{ "o_orderkey": 740, "o_custkey": 44 }
+{ "o_orderkey": 741, "o_custkey": 106 }
+{ "o_orderkey": 742, "o_custkey": 103 }
+{ "o_orderkey": 743, "o_custkey": 79 }
+{ "o_orderkey": 768, "o_custkey": 98 }
+{ "o_orderkey": 769, "o_custkey": 80 }
+{ "o_orderkey": 771, "o_custkey": 46 }
+{ "o_orderkey": 772, "o_custkey": 97 }
+{ "o_orderkey": 773, "o_custkey": 133 }
+{ "o_orderkey": 774, "o_custkey": 80 }
+{ "o_orderkey": 775, "o_custkey": 134 }
+{ "o_orderkey": 800, "o_custkey": 56 }
+{ "o_orderkey": 801, "o_custkey": 118 }
+{ "o_orderkey": 802, "o_custkey": 137 }
+{ "o_orderkey": 804, "o_custkey": 50 }
+{ "o_orderkey": 805, "o_custkey": 127 }
+{ "o_orderkey": 806, "o_custkey": 131 }
+{ "o_orderkey": 807, "o_custkey": 145 }
+{ "o_orderkey": 833, "o_custkey": 56 }
+{ "o_orderkey": 834, "o_custkey": 43 }
+{ "o_orderkey": 835, "o_custkey": 65 }
+{ "o_orderkey": 836, "o_custkey": 70 }
+{ "o_orderkey": 837, "o_custkey": 116 }
+{ "o_orderkey": 864, "o_custkey": 139 }
+{ "o_orderkey": 868, "o_custkey": 104 }
+{ "o_orderkey": 869, "o_custkey": 136 }
+{ "o_orderkey": 897, "o_custkey": 49 }
+{ "o_orderkey": 898, "o_custkey": 55 }
+{ "o_orderkey": 899, "o_custkey": 109 }
+{ "o_orderkey": 900, "o_custkey": 46 }
+{ "o_orderkey": 928, "o_custkey": 67 }
+{ "o_orderkey": 929, "o_custkey": 83 }
+{ "o_orderkey": 930, "o_custkey": 131 }
+{ "o_orderkey": 931, "o_custkey": 103 }
+{ "o_orderkey": 932, "o_custkey": 41 }
+{ "o_orderkey": 933, "o_custkey": 97 }
+{ "o_orderkey": 934, "o_custkey": 52 }
+{ "o_orderkey": 935, "o_custkey": 50 }
+{ "o_orderkey": 961, "o_custkey": 56 }
+{ "o_orderkey": 964, "o_custkey": 76 }
+{ "o_orderkey": 965, "o_custkey": 70 }
+{ "o_orderkey": 967, "o_custkey": 110 }
+{ "o_orderkey": 992, "o_custkey": 55 }
+{ "o_orderkey": 993, "o_custkey": 80 }
+{ "o_orderkey": 995, "o_custkey": 116 }
+{ "o_orderkey": 996, "o_custkey": 71 }
+{ "o_orderkey": 997, "o_custkey": 109 }
+{ "o_orderkey": 999, "o_custkey": 61 }
+{ "o_orderkey": 1025, "o_custkey": 103 }
+{ "o_orderkey": 1026, "o_custkey": 73 }
+{ "o_orderkey": 1027, "o_custkey": 128 }
+{ "o_orderkey": 1028, "o_custkey": 70 }
+{ "o_orderkey": 1029, "o_custkey": 130 }
+{ "o_orderkey": 1030, "o_custkey": 134 }
+{ "o_orderkey": 1057, "o_custkey": 76 }
+{ "o_orderkey": 1058, "o_custkey": 53 }
+{ "o_orderkey": 1059, "o_custkey": 127 }
+{ "o_orderkey": 1060, "o_custkey": 140 }
+{ "o_orderkey": 1061, "o_custkey": 103 }
+{ "o_orderkey": 1062, "o_custkey": 106 }
+{ "o_orderkey": 1088, "o_custkey": 148 }
+{ "o_orderkey": 1089, "o_custkey": 49 }
+{ "o_orderkey": 1091, "o_custkey": 83 }
+{ "o_orderkey": 1092, "o_custkey": 124 }
+{ "o_orderkey": 1093, "o_custkey": 101 }
+{ "o_orderkey": 1094, "o_custkey": 145 }
+{ "o_orderkey": 1095, "o_custkey": 145 }
+{ "o_orderkey": 1120, "o_custkey": 140 }
+{ "o_orderkey": 1122, "o_custkey": 121 }
+{ "o_orderkey": 1123, "o_custkey": 73 }
+{ "o_orderkey": 1124, "o_custkey": 80 }
+{ "o_orderkey": 1126, "o_custkey": 145 }
+{ "o_orderkey": 1127, "o_custkey": 58 }
+{ "o_orderkey": 1152, "o_custkey": 49 }
+{ "o_orderkey": 1153, "o_custkey": 121 }
+{ "o_orderkey": 1155, "o_custkey": 149 }
+{ "o_orderkey": 1156, "o_custkey": 133 }
+{ "o_orderkey": 1157, "o_custkey": 97 }
+{ "o_orderkey": 1158, "o_custkey": 142 }
+{ "o_orderkey": 1159, "o_custkey": 70 }
+{ "o_orderkey": 1184, "o_custkey": 89 }
+{ "o_orderkey": 1185, "o_custkey": 74 }
+{ "o_orderkey": 1186, "o_custkey": 59 }
+{ "o_orderkey": 1187, "o_custkey": 134 }
+{ "o_orderkey": 1189, "o_custkey": 46 }
+{ "o_orderkey": 1191, "o_custkey": 112 }
+{ "o_orderkey": 1216, "o_custkey": 122 }
+{ "o_orderkey": 1220, "o_custkey": 49 }
+{ "o_orderkey": 1248, "o_custkey": 49 }
+{ "o_orderkey": 1249, "o_custkey": 149 }
+{ "o_orderkey": 1252, "o_custkey": 149 }
+{ "o_orderkey": 1253, "o_custkey": 115 }
+{ "o_orderkey": 1254, "o_custkey": 70 }
+{ "o_orderkey": 1255, "o_custkey": 122 }
+{ "o_orderkey": 1280, "o_custkey": 97 }
+{ "o_orderkey": 1281, "o_custkey": 62 }
+{ "o_orderkey": 1282, "o_custkey": 116 }
+{ "o_orderkey": 1283, "o_custkey": 118 }
+{ "o_orderkey": 1284, "o_custkey": 134 }
+{ "o_orderkey": 1286, "o_custkey": 109 }
+{ "o_orderkey": 1312, "o_custkey": 112 }
+{ "o_orderkey": 1313, "o_custkey": 148 }
+{ "o_orderkey": 1314, "o_custkey": 143 }
+{ "o_orderkey": 1317, "o_custkey": 100 }
+{ "o_orderkey": 1318, "o_custkey": 128 }
+{ "o_orderkey": 1345, "o_custkey": 95 }
+{ "o_orderkey": 1346, "o_custkey": 76 }
+{ "o_orderkey": 1347, "o_custkey": 41 }
+{ "o_orderkey": 1349, "o_custkey": 64 }
+{ "o_orderkey": 1350, "o_custkey": 52 }
+{ "o_orderkey": 1351, "o_custkey": 106 }
+{ "o_orderkey": 1376, "o_custkey": 47 }
+{ "o_orderkey": 1379, "o_custkey": 65 }
+{ "o_orderkey": 1380, "o_custkey": 137 }
+{ "o_orderkey": 1381, "o_custkey": 127 }
+{ "o_orderkey": 1382, "o_custkey": 133 }
+{ "o_orderkey": 1383, "o_custkey": 121 }
+{ "o_orderkey": 1408, "o_custkey": 55 }
+{ "o_orderkey": 1409, "o_custkey": 143 }
+{ "o_orderkey": 1410, "o_custkey": 113 }
+{ "o_orderkey": 1411, "o_custkey": 95 }
+{ "o_orderkey": 1412, "o_custkey": 53 }
+{ "o_orderkey": 1413, "o_custkey": 91 }
+{ "o_orderkey": 1414, "o_custkey": 77 }
+{ "o_orderkey": 1415, "o_custkey": 79 }
+{ "o_orderkey": 1440, "o_custkey": 98 }
+{ "o_orderkey": 1441, "o_custkey": 122 }
+{ "o_orderkey": 1442, "o_custkey": 112 }
+{ "o_orderkey": 1443, "o_custkey": 44 }
+{ "o_orderkey": 1444, "o_custkey": 134 }
+{ "o_orderkey": 1445, "o_custkey": 115 }
+{ "o_orderkey": 1446, "o_custkey": 41 }
+{ "o_orderkey": 1447, "o_custkey": 91 }
+{ "o_orderkey": 1472, "o_custkey": 149 }
+{ "o_orderkey": 1473, "o_custkey": 94 }
+{ "o_orderkey": 1474, "o_custkey": 70 }
+{ "o_orderkey": 1476, "o_custkey": 145 }
+{ "o_orderkey": 1477, "o_custkey": 76 }
+{ "o_orderkey": 1478, "o_custkey": 50 }
+{ "o_orderkey": 1506, "o_custkey": 148 }
+{ "o_orderkey": 1507, "o_custkey": 121 }
+{ "o_orderkey": 1508, "o_custkey": 103 }
+{ "o_orderkey": 1509, "o_custkey": 64 }
+{ "o_orderkey": 1510, "o_custkey": 53 }
+{ "o_orderkey": 1511, "o_custkey": 79 }
+{ "o_orderkey": 1536, "o_custkey": 94 }
+{ "o_orderkey": 1537, "o_custkey": 109 }
+{ "o_orderkey": 1539, "o_custkey": 112 }
+{ "o_orderkey": 1541, "o_custkey": 94 }
+{ "o_orderkey": 1542, "o_custkey": 143 }
+{ "o_orderkey": 1543, "o_custkey": 52 }
+{ "o_orderkey": 1569, "o_custkey": 104 }
+{ "o_orderkey": 1570, "o_custkey": 124 }
+{ "o_orderkey": 1571, "o_custkey": 103 }
+{ "o_orderkey": 1573, "o_custkey": 148 }
+{ "o_orderkey": 1574, "o_custkey": 134 }
+{ "o_orderkey": 1575, "o_custkey": 145 }
+{ "o_orderkey": 1600, "o_custkey": 94 }
+{ "o_orderkey": 1601, "o_custkey": 53 }
+{ "o_orderkey": 1604, "o_custkey": 113 }
+{ "o_orderkey": 1605, "o_custkey": 58 }
+{ "o_orderkey": 1606, "o_custkey": 53 }
+{ "o_orderkey": 1607, "o_custkey": 149 }
+{ "o_orderkey": 1632, "o_custkey": 67 }
+{ "o_orderkey": 1634, "o_custkey": 70 }
+{ "o_orderkey": 1636, "o_custkey": 79 }
+{ "o_orderkey": 1637, "o_custkey": 73 }
+{ "o_orderkey": 1638, "o_custkey": 139 }
+{ "o_orderkey": 1664, "o_custkey": 64 }
+{ "o_orderkey": 1665, "o_custkey": 76 }
+{ "o_orderkey": 1666, "o_custkey": 95 }
+{ "o_orderkey": 1668, "o_custkey": 142 }
+{ "o_orderkey": 1697, "o_custkey": 76 }
+{ "o_orderkey": 1699, "o_custkey": 85 }
+{ "o_orderkey": 1700, "o_custkey": 65 }
+{ "o_orderkey": 1701, "o_custkey": 130 }
+{ "o_orderkey": 1702, "o_custkey": 67 }
+{ "o_orderkey": 1703, "o_custkey": 134 }
+{ "o_orderkey": 1728, "o_custkey": 64 }
+{ "o_orderkey": 1729, "o_custkey": 133 }
+{ "o_orderkey": 1730, "o_custkey": 124 }
+{ "o_orderkey": 1731, "o_custkey": 128 }
+{ "o_orderkey": 1732, "o_custkey": 146 }
+{ "o_orderkey": 1733, "o_custkey": 148 }
+{ "o_orderkey": 1760, "o_custkey": 115 }
+{ "o_orderkey": 1761, "o_custkey": 106 }
+{ "o_orderkey": 1762, "o_custkey": 77 }
+{ "o_orderkey": 1763, "o_custkey": 121 }
+{ "o_orderkey": 1765, "o_custkey": 73 }
+{ "o_orderkey": 1766, "o_custkey": 139 }
+{ "o_orderkey": 1792, "o_custkey": 49 }
+{ "o_orderkey": 1794, "o_custkey": 140 }
+{ "o_orderkey": 1795, "o_custkey": 94 }
+{ "o_orderkey": 1796, "o_custkey": 47 }
+{ "o_orderkey": 1797, "o_custkey": 125 }
+{ "o_orderkey": 1798, "o_custkey": 52 }
+{ "o_orderkey": 1799, "o_custkey": 61 }
+{ "o_orderkey": 1824, "o_custkey": 49 }
+{ "o_orderkey": 1825, "o_custkey": 148 }
+{ "o_orderkey": 1826, "o_custkey": 82 }
+{ "o_orderkey": 1827, "o_custkey": 106 }
+{ "o_orderkey": 1829, "o_custkey": 112 }
+{ "o_orderkey": 1830, "o_custkey": 133 }
+{ "o_orderkey": 1831, "o_custkey": 71 }
+{ "o_orderkey": 1856, "o_custkey": 106 }
+{ "o_orderkey": 1857, "o_custkey": 133 }
+{ "o_orderkey": 1858, "o_custkey": 143 }
+{ "o_orderkey": 1859, "o_custkey": 61 }
+{ "o_orderkey": 1861, "o_custkey": 70 }
+{ "o_orderkey": 1863, "o_custkey": 74 }
+{ "o_orderkey": 1888, "o_custkey": 121 }
+{ "o_orderkey": 1891, "o_custkey": 61 }
+{ "o_orderkey": 1893, "o_custkey": 125 }
+{ "o_orderkey": 1894, "o_custkey": 76 }
+{ "o_orderkey": 1920, "o_custkey": 110 }
+{ "o_orderkey": 1921, "o_custkey": 88 }
+{ "o_orderkey": 1922, "o_custkey": 56 }
+{ "o_orderkey": 1923, "o_custkey": 136 }
+{ "o_orderkey": 1924, "o_custkey": 76 }
+{ "o_orderkey": 1926, "o_custkey": 94 }
+{ "o_orderkey": 1927, "o_custkey": 140 }
+{ "o_orderkey": 1952, "o_custkey": 67 }
+{ "o_orderkey": 1953, "o_custkey": 149 }
+{ "o_orderkey": 1954, "o_custkey": 56 }
+{ "o_orderkey": 1956, "o_custkey": 127 }
+{ "o_orderkey": 1958, "o_custkey": 53 }
+{ "o_orderkey": 1959, "o_custkey": 43 }
+{ "o_orderkey": 1984, "o_custkey": 52 }
+{ "o_orderkey": 1986, "o_custkey": 149 }
+{ "o_orderkey": 1987, "o_custkey": 100 }
+{ "o_orderkey": 1988, "o_custkey": 109 }
+{ "o_orderkey": 1989, "o_custkey": 118 }
+{ "o_orderkey": 1990, "o_custkey": 119 }
+{ "o_orderkey": 2017, "o_custkey": 101 }
+{ "o_orderkey": 2019, "o_custkey": 136 }
+{ "o_orderkey": 2020, "o_custkey": 73 }
+{ "o_orderkey": 2021, "o_custkey": 70 }
+{ "o_orderkey": 2022, "o_custkey": 62 }
+{ "o_orderkey": 2023, "o_custkey": 118 }
+{ "o_orderkey": 2052, "o_custkey": 91 }
+{ "o_orderkey": 2053, "o_custkey": 142 }
+{ "o_orderkey": 2054, "o_custkey": 41 }
+{ "o_orderkey": 2055, "o_custkey": 97 }
+{ "o_orderkey": 2080, "o_custkey": 95 }
+{ "o_orderkey": 2081, "o_custkey": 121 }
+{ "o_orderkey": 2082, "o_custkey": 49 }
+{ "o_orderkey": 2083, "o_custkey": 101 }
+{ "o_orderkey": 2084, "o_custkey": 80 }
+{ "o_orderkey": 2085, "o_custkey": 49 }
+{ "o_orderkey": 2086, "o_custkey": 142 }
+{ "o_orderkey": 2087, "o_custkey": 50 }
+{ "o_orderkey": 2112, "o_custkey": 64 }
+{ "o_orderkey": 2114, "o_custkey": 79 }
+{ "o_orderkey": 2115, "o_custkey": 106 }
+{ "o_orderkey": 2118, "o_custkey": 134 }
+{ "o_orderkey": 2119, "o_custkey": 64 }
+{ "o_orderkey": 2144, "o_custkey": 136 }
+{ "o_orderkey": 2145, "o_custkey": 134 }
+{ "o_orderkey": 2146, "o_custkey": 118 }
+{ "o_orderkey": 2147, "o_custkey": 100 }
+{ "o_orderkey": 2148, "o_custkey": 130 }
+{ "o_orderkey": 2149, "o_custkey": 101 }
+{ "o_orderkey": 2150, "o_custkey": 82 }
+{ "o_orderkey": 2151, "o_custkey": 58 }
+{ "o_orderkey": 2176, "o_custkey": 104 }
+{ "o_orderkey": 2177, "o_custkey": 136 }
+{ "o_orderkey": 2179, "o_custkey": 41 }
+{ "o_orderkey": 2180, "o_custkey": 76 }
+{ "o_orderkey": 2181, "o_custkey": 76 }
+{ "o_orderkey": 2183, "o_custkey": 113 }
+{ "o_orderkey": 2208, "o_custkey": 68 }
+{ "o_orderkey": 2209, "o_custkey": 91 }
+{ "o_orderkey": 2211, "o_custkey": 92 }
+{ "o_orderkey": 2212, "o_custkey": 118 }
+{ "o_orderkey": 2213, "o_custkey": 122 }
+{ "o_orderkey": 2214, "o_custkey": 115 }
+{ "o_orderkey": 2240, "o_custkey": 56 }
+{ "o_orderkey": 2241, "o_custkey": 103 }
+{ "o_orderkey": 2242, "o_custkey": 82 }
+{ "o_orderkey": 2243, "o_custkey": 49 }
+{ "o_orderkey": 2244, "o_custkey": 127 }
+{ "o_orderkey": 2245, "o_custkey": 58 }
+{ "o_orderkey": 2246, "o_custkey": 113 }
+{ "o_orderkey": 2247, "o_custkey": 95 }
+{ "o_orderkey": 2272, "o_custkey": 139 }
+{ "o_orderkey": 2273, "o_custkey": 136 }
+{ "o_orderkey": 2274, "o_custkey": 104 }
+{ "o_orderkey": 2275, "o_custkey": 149 }
+{ "o_orderkey": 2276, "o_custkey": 43 }
+{ "o_orderkey": 2277, "o_custkey": 89 }
+{ "o_orderkey": 2278, "o_custkey": 142 }
+{ "o_orderkey": 2279, "o_custkey": 80 }
+{ "o_orderkey": 2304, "o_custkey": 46 }
+{ "o_orderkey": 2305, "o_custkey": 43 }
+{ "o_orderkey": 2307, "o_custkey": 106 }
+{ "o_orderkey": 2309, "o_custkey": 100 }
+{ "o_orderkey": 2311, "o_custkey": 73 }
+{ "o_orderkey": 2336, "o_custkey": 142 }
+{ "o_orderkey": 2337, "o_custkey": 142 }
+{ "o_orderkey": 2338, "o_custkey": 140 }
+{ "o_orderkey": 2339, "o_custkey": 109 }
+{ "o_orderkey": 2340, "o_custkey": 65 }
+{ "o_orderkey": 2341, "o_custkey": 82 }
+{ "o_orderkey": 2343, "o_custkey": 73 }
+{ "o_orderkey": 2369, "o_custkey": 110 }
+{ "o_orderkey": 2370, "o_custkey": 142 }
+{ "o_orderkey": 2401, "o_custkey": 148 }
+{ "o_orderkey": 2402, "o_custkey": 67 }
+{ "o_orderkey": 2403, "o_custkey": 55 }
+{ "o_orderkey": 2404, "o_custkey": 77 }
+{ "o_orderkey": 2405, "o_custkey": 73 }
+{ "o_orderkey": 2407, "o_custkey": 55 }
+{ "o_orderkey": 2432, "o_custkey": 103 }
+{ "o_orderkey": 2435, "o_custkey": 73 }
+{ "o_orderkey": 2436, "o_custkey": 125 }
+{ "o_orderkey": 2437, "o_custkey": 85 }
+{ "o_orderkey": 2439, "o_custkey": 55 }
+{ "o_orderkey": 2464, "o_custkey": 145 }
+{ "o_orderkey": 2468, "o_custkey": 112 }
+{ "o_orderkey": 2469, "o_custkey": 124 }
+{ "o_orderkey": 2470, "o_custkey": 58 }
+{ "o_orderkey": 2471, "o_custkey": 89 }
+{ "o_orderkey": 2496, "o_custkey": 136 }
+{ "o_orderkey": 2497, "o_custkey": 47 }
+{ "o_orderkey": 2498, "o_custkey": 97 }
+{ "o_orderkey": 2499, "o_custkey": 121 }
+{ "o_orderkey": 2500, "o_custkey": 133 }
+{ "o_orderkey": 2501, "o_custkey": 67 }
+{ "o_orderkey": 2502, "o_custkey": 70 }
+{ "o_orderkey": 2528, "o_custkey": 55 }
+{ "o_orderkey": 2529, "o_custkey": 136 }
+{ "o_orderkey": 2530, "o_custkey": 128 }
+{ "o_orderkey": 2531, "o_custkey": 44 }
+{ "o_orderkey": 2532, "o_custkey": 94 }
+{ "o_orderkey": 2533, "o_custkey": 50 }
+{ "o_orderkey": 2534, "o_custkey": 76 }
+{ "o_orderkey": 2535, "o_custkey": 121 }
+{ "o_orderkey": 2560, "o_custkey": 131 }
+{ "o_orderkey": 2561, "o_custkey": 58 }
+{ "o_orderkey": 2563, "o_custkey": 62 }
+{ "o_orderkey": 2564, "o_custkey": 77 }
+{ "o_orderkey": 2565, "o_custkey": 56 }
+{ "o_orderkey": 2566, "o_custkey": 86 }
+{ "o_orderkey": 2567, "o_custkey": 70 }
+{ "o_orderkey": 2592, "o_custkey": 101 }
+{ "o_orderkey": 2593, "o_custkey": 92 }
+{ "o_orderkey": 2594, "o_custkey": 79 }
+{ "o_orderkey": 2595, "o_custkey": 74 }
+{ "o_orderkey": 2596, "o_custkey": 43 }
+{ "o_orderkey": 2597, "o_custkey": 104 }
+{ "o_orderkey": 2598, "o_custkey": 112 }
+{ "o_orderkey": 2599, "o_custkey": 149 }
+{ "o_orderkey": 2624, "o_custkey": 52 }
+{ "o_orderkey": 2626, "o_custkey": 139 }
+{ "o_orderkey": 2627, "o_custkey": 149 }
+{ "o_orderkey": 2628, "o_custkey": 56 }
+{ "o_orderkey": 2629, "o_custkey": 139 }
+{ "o_orderkey": 2630, "o_custkey": 85 }
+{ "o_orderkey": 2656, "o_custkey": 77 }
+{ "o_orderkey": 2659, "o_custkey": 83 }
+{ "o_orderkey": 2660, "o_custkey": 127 }
+{ "o_orderkey": 2661, "o_custkey": 74 }
+{ "o_orderkey": 2663, "o_custkey": 95 }
+{ "o_orderkey": 2688, "o_custkey": 98 }
+{ "o_orderkey": 2689, "o_custkey": 103 }
+{ "o_orderkey": 2690, "o_custkey": 94 }
+{ "o_orderkey": 2692, "o_custkey": 62 }
+{ "o_orderkey": 2694, "o_custkey": 121 }
+{ "o_orderkey": 2695, "o_custkey": 58 }
+{ "o_orderkey": 2721, "o_custkey": 79 }
+{ "o_orderkey": 2723, "o_custkey": 61 }
+{ "o_orderkey": 2724, "o_custkey": 137 }
+{ "o_orderkey": 2725, "o_custkey": 89 }
+{ "o_orderkey": 2727, "o_custkey": 74 }
+{ "o_orderkey": 2752, "o_custkey": 59 }
+{ "o_orderkey": 2754, "o_custkey": 145 }
+{ "o_orderkey": 2755, "o_custkey": 118 }
+{ "o_orderkey": 2756, "o_custkey": 118 }
+{ "o_orderkey": 2757, "o_custkey": 76 }
+{ "o_orderkey": 2758, "o_custkey": 43 }
+{ "o_orderkey": 2759, "o_custkey": 116 }
+{ "o_orderkey": 2784, "o_custkey": 95 }
+{ "o_orderkey": 2785, "o_custkey": 148 }
+{ "o_orderkey": 2786, "o_custkey": 79 }
+{ "o_orderkey": 2787, "o_custkey": 103 }
+{ "o_orderkey": 2788, "o_custkey": 124 }
+{ "o_orderkey": 2791, "o_custkey": 121 }
+{ "o_orderkey": 2816, "o_custkey": 58 }
+{ "o_orderkey": 2818, "o_custkey": 49 }
+{ "o_orderkey": 2819, "o_custkey": 103 }
+{ "o_orderkey": 2821, "o_custkey": 118 }
+{ "o_orderkey": 2822, "o_custkey": 79 }
+{ "o_orderkey": 2823, "o_custkey": 79 }
+{ "o_orderkey": 2848, "o_custkey": 70 }
+{ "o_orderkey": 2849, "o_custkey": 46 }
+{ "o_orderkey": 2850, "o_custkey": 100 }
+{ "o_orderkey": 2851, "o_custkey": 145 }
+{ "o_orderkey": 2852, "o_custkey": 91 }
+{ "o_orderkey": 2853, "o_custkey": 94 }
+{ "o_orderkey": 2854, "o_custkey": 139 }
+{ "o_orderkey": 2855, "o_custkey": 49 }
+{ "o_orderkey": 2881, "o_custkey": 100 }
+{ "o_orderkey": 2882, "o_custkey": 121 }
+{ "o_orderkey": 2883, "o_custkey": 121 }
+{ "o_orderkey": 2884, "o_custkey": 92 }
+{ "o_orderkey": 2886, "o_custkey": 109 }
+{ "o_orderkey": 2887, "o_custkey": 109 }
+{ "o_orderkey": 2912, "o_custkey": 94 }
+{ "o_orderkey": 2913, "o_custkey": 43 }
+{ "o_orderkey": 2914, "o_custkey": 109 }
+{ "o_orderkey": 2915, "o_custkey": 94 }
+{ "o_orderkey": 2917, "o_custkey": 91 }
+{ "o_orderkey": 2918, "o_custkey": 118 }
+{ "o_orderkey": 2919, "o_custkey": 53 }
+{ "o_orderkey": 2946, "o_custkey": 125 }
+{ "o_orderkey": 2947, "o_custkey": 70 }
+{ "o_orderkey": 2948, "o_custkey": 44 }
+{ "o_orderkey": 2949, "o_custkey": 137 }
+{ "o_orderkey": 2950, "o_custkey": 136 }
+{ "o_orderkey": 2951, "o_custkey": 74 }
+{ "o_orderkey": 2977, "o_custkey": 73 }
+{ "o_orderkey": 2978, "o_custkey": 44 }
+{ "o_orderkey": 2979, "o_custkey": 133 }
+{ "o_orderkey": 2981, "o_custkey": 49 }
+{ "o_orderkey": 2982, "o_custkey": 85 }
+{ "o_orderkey": 2983, "o_custkey": 62 }
+{ "o_orderkey": 3009, "o_custkey": 55 }
+{ "o_orderkey": 3011, "o_custkey": 91 }
+{ "o_orderkey": 3013, "o_custkey": 143 }
+{ "o_orderkey": 3015, "o_custkey": 103 }
+{ "o_orderkey": 3040, "o_custkey": 112 }
+{ "o_orderkey": 3041, "o_custkey": 113 }
+{ "o_orderkey": 3043, "o_custkey": 44 }
+{ "o_orderkey": 3044, "o_custkey": 53 }
+{ "o_orderkey": 3045, "o_custkey": 50 }
+{ "o_orderkey": 3073, "o_custkey": 136 }
+{ "o_orderkey": 3074, "o_custkey": 67 }
+{ "o_orderkey": 3075, "o_custkey": 127 }
+{ "o_orderkey": 3076, "o_custkey": 92 }
+{ "o_orderkey": 3077, "o_custkey": 121 }
+{ "o_orderkey": 3078, "o_custkey": 49 }
+{ "o_orderkey": 3079, "o_custkey": 100 }
+{ "o_orderkey": 3104, "o_custkey": 70 }
+{ "o_orderkey": 3105, "o_custkey": 137 }
+{ "o_orderkey": 3106, "o_custkey": 145 }
+{ "o_orderkey": 3108, "o_custkey": 85 }
+{ "o_orderkey": 3109, "o_custkey": 124 }
+{ "o_orderkey": 3110, "o_custkey": 88 }
+{ "o_orderkey": 3111, "o_custkey": 133 }
+{ "o_orderkey": 3137, "o_custkey": 136 }
+{ "o_orderkey": 3138, "o_custkey": 139 }
+{ "o_orderkey": 3140, "o_custkey": 145 }
+{ "o_orderkey": 3143, "o_custkey": 107 }
+{ "o_orderkey": 3168, "o_custkey": 136 }
+{ "o_orderkey": 3171, "o_custkey": 47 }
+{ "o_orderkey": 3172, "o_custkey": 89 }
+{ "o_orderkey": 3173, "o_custkey": 148 }
+{ "o_orderkey": 3174, "o_custkey": 127 }
+{ "o_orderkey": 3175, "o_custkey": 44 }
+{ "o_orderkey": 3201, "o_custkey": 97 }
+{ "o_orderkey": 3202, "o_custkey": 88 }
+{ "o_orderkey": 3203, "o_custkey": 127 }
+{ "o_orderkey": 3205, "o_custkey": 148 }
+{ "o_orderkey": 3206, "o_custkey": 122 }
+{ "o_orderkey": 3232, "o_custkey": 82 }
+{ "o_orderkey": 3233, "o_custkey": 140 }
+{ "o_orderkey": 3235, "o_custkey": 46 }
+{ "o_orderkey": 3236, "o_custkey": 142 }
+{ "o_orderkey": 3238, "o_custkey": 61 }
+{ "o_orderkey": 3264, "o_custkey": 94 }
+{ "o_orderkey": 3265, "o_custkey": 53 }
+{ "o_orderkey": 3267, "o_custkey": 112 }
+{ "o_orderkey": 3268, "o_custkey": 142 }
+{ "o_orderkey": 3296, "o_custkey": 148 }
+{ "o_orderkey": 3297, "o_custkey": 139 }
+{ "o_orderkey": 3298, "o_custkey": 116 }
+{ "o_orderkey": 3299, "o_custkey": 91 }
+{ "o_orderkey": 3300, "o_custkey": 118 }
+{ "o_orderkey": 3301, "o_custkey": 133 }
+{ "o_orderkey": 3303, "o_custkey": 145 }
+{ "o_orderkey": 3331, "o_custkey": 91 }
+{ "o_orderkey": 3332, "o_custkey": 143 }
+{ "o_orderkey": 3333, "o_custkey": 92 }
+{ "o_orderkey": 3334, "o_custkey": 76 }
+{ "o_orderkey": 3335, "o_custkey": 49 }
+{ "o_orderkey": 3360, "o_custkey": 103 }
+{ "o_orderkey": 3361, "o_custkey": 49 }
+{ "o_orderkey": 3362, "o_custkey": 140 }
+{ "o_orderkey": 3363, "o_custkey": 52 }
+{ "o_orderkey": 3364, "o_custkey": 46 }
+{ "o_orderkey": 3365, "o_custkey": 82 }
+{ "o_orderkey": 3366, "o_custkey": 52 }
+{ "o_orderkey": 3367, "o_custkey": 73 }
+{ "o_orderkey": 3392, "o_custkey": 74 }
+{ "o_orderkey": 3393, "o_custkey": 98 }
+{ "o_orderkey": 3394, "o_custkey": 149 }
+{ "o_orderkey": 3395, "o_custkey": 149 }
+{ "o_orderkey": 3396, "o_custkey": 149 }
+{ "o_orderkey": 3397, "o_custkey": 130 }
+{ "o_orderkey": 3398, "o_custkey": 67 }
+{ "o_orderkey": 3399, "o_custkey": 122 }
+{ "o_orderkey": 3424, "o_custkey": 103 }
+{ "o_orderkey": 3425, "o_custkey": 115 }
+{ "o_orderkey": 3426, "o_custkey": 53 }
+{ "o_orderkey": 3429, "o_custkey": 146 }
+{ "o_orderkey": 3430, "o_custkey": 113 }
+{ "o_orderkey": 3431, "o_custkey": 47 }
+{ "o_orderkey": 3456, "o_custkey": 46 }
+{ "o_orderkey": 3458, "o_custkey": 95 }
+{ "o_orderkey": 3459, "o_custkey": 119 }
+{ "o_orderkey": 3460, "o_custkey": 82 }
+{ "o_orderkey": 3461, "o_custkey": 100 }
+{ "o_orderkey": 3462, "o_custkey": 133 }
+{ "o_orderkey": 3463, "o_custkey": 89 }
+{ "o_orderkey": 3488, "o_custkey": 148 }
+{ "o_orderkey": 3489, "o_custkey": 109 }
+{ "o_orderkey": 3490, "o_custkey": 91 }
+{ "o_orderkey": 3491, "o_custkey": 83 }
+{ "o_orderkey": 3492, "o_custkey": 103 }
+{ "o_orderkey": 3493, "o_custkey": 82 }
+{ "o_orderkey": 3494, "o_custkey": 49 }
+{ "o_orderkey": 3520, "o_custkey": 125 }
+{ "o_orderkey": 3523, "o_custkey": 149 }
+{ "o_orderkey": 3524, "o_custkey": 94 }
+{ "o_orderkey": 3525, "o_custkey": 109 }
+{ "o_orderkey": 3526, "o_custkey": 56 }
+{ "o_orderkey": 3527, "o_custkey": 56 }
+{ "o_orderkey": 3553, "o_custkey": 91 }
+{ "o_orderkey": 3554, "o_custkey": 44 }
+{ "o_orderkey": 3555, "o_custkey": 46 }
+{ "o_orderkey": 3557, "o_custkey": 121 }
+{ "o_orderkey": 3559, "o_custkey": 106 }
+{ "o_orderkey": 3585, "o_custkey": 139 }
+{ "o_orderkey": 3586, "o_custkey": 121 }
+{ "o_orderkey": 3587, "o_custkey": 79 }
+{ "o_orderkey": 3588, "o_custkey": 119 }
+{ "o_orderkey": 3590, "o_custkey": 149 }
+{ "o_orderkey": 3591, "o_custkey": 136 }
+{ "o_orderkey": 3616, "o_custkey": 128 }
+{ "o_orderkey": 3619, "o_custkey": 149 }
+{ "o_orderkey": 3620, "o_custkey": 44 }
+{ "o_orderkey": 3621, "o_custkey": 142 }
+{ "o_orderkey": 3622, "o_custkey": 91 }
+{ "o_orderkey": 3648, "o_custkey": 125 }
+{ "o_orderkey": 3650, "o_custkey": 46 }
+{ "o_orderkey": 3651, "o_custkey": 100 }
+{ "o_orderkey": 3652, "o_custkey": 107 }
+{ "o_orderkey": 3655, "o_custkey": 49 }
+{ "o_orderkey": 3680, "o_custkey": 127 }
+{ "o_orderkey": 3681, "o_custkey": 52 }
+{ "o_orderkey": 3683, "o_custkey": 88 }
+{ "o_orderkey": 3687, "o_custkey": 43 }
+{ "o_orderkey": 3712, "o_custkey": 64 }
+{ "o_orderkey": 3713, "o_custkey": 149 }
+{ "o_orderkey": 3715, "o_custkey": 65 }
+{ "o_orderkey": 3716, "o_custkey": 43 }
+{ "o_orderkey": 3719, "o_custkey": 118 }
+{ "o_orderkey": 3744, "o_custkey": 65 }
+{ "o_orderkey": 3745, "o_custkey": 112 }
+{ "o_orderkey": 3746, "o_custkey": 74 }
+{ "o_orderkey": 3747, "o_custkey": 149 }
+{ "o_orderkey": 3748, "o_custkey": 53 }
+{ "o_orderkey": 3750, "o_custkey": 97 }
+{ "o_orderkey": 3776, "o_custkey": 85 }
+{ "o_orderkey": 3778, "o_custkey": 106 }
+{ "o_orderkey": 3779, "o_custkey": 74 }
+{ "o_orderkey": 3780, "o_custkey": 41 }
+{ "o_orderkey": 3781, "o_custkey": 139 }
+{ "o_orderkey": 3782, "o_custkey": 65 }
+{ "o_orderkey": 3783, "o_custkey": 44 }
+{ "o_orderkey": 3808, "o_custkey": 79 }
+{ "o_orderkey": 3809, "o_custkey": 148 }
+{ "o_orderkey": 3810, "o_custkey": 100 }
+{ "o_orderkey": 3811, "o_custkey": 80 }
+{ "o_orderkey": 3812, "o_custkey": 41 }
+{ "o_orderkey": 3813, "o_custkey": 146 }
+{ "o_orderkey": 3814, "o_custkey": 118 }
+{ "o_orderkey": 3815, "o_custkey": 104 }
+{ "o_orderkey": 3840, "o_custkey": 100 }
+{ "o_orderkey": 3841, "o_custkey": 58 }
+{ "o_orderkey": 3844, "o_custkey": 79 }
+{ "o_orderkey": 3845, "o_custkey": 89 }
+{ "o_orderkey": 3846, "o_custkey": 49 }
+{ "o_orderkey": 3872, "o_custkey": 134 }
+{ "o_orderkey": 3873, "o_custkey": 55 }
+{ "o_orderkey": 3874, "o_custkey": 119 }
+{ "o_orderkey": 3875, "o_custkey": 118 }
+{ "o_orderkey": 3878, "o_custkey": 88 }
+{ "o_orderkey": 3879, "o_custkey": 142 }
+{ "o_orderkey": 3904, "o_custkey": 149 }
+{ "o_orderkey": 3906, "o_custkey": 46 }
+{ "o_orderkey": 3907, "o_custkey": 67 }
+{ "o_orderkey": 3908, "o_custkey": 43 }
+{ "o_orderkey": 3910, "o_custkey": 64 }
+{ "o_orderkey": 3937, "o_custkey": 94 }
+{ "o_orderkey": 3939, "o_custkey": 70 }
+{ "o_orderkey": 3940, "o_custkey": 149 }
+{ "o_orderkey": 3941, "o_custkey": 136 }
+{ "o_orderkey": 3942, "o_custkey": 76 }
+{ "o_orderkey": 3969, "o_custkey": 52 }
+{ "o_orderkey": 3970, "o_custkey": 76 }
+{ "o_orderkey": 3971, "o_custkey": 104 }
+{ "o_orderkey": 3972, "o_custkey": 124 }
+{ "o_orderkey": 3973, "o_custkey": 103 }
+{ "o_orderkey": 3974, "o_custkey": 94 }
+{ "o_orderkey": 3975, "o_custkey": 118 }
+{ "o_orderkey": 4000, "o_custkey": 70 }
+{ "o_orderkey": 4001, "o_custkey": 115 }
+{ "o_orderkey": 4002, "o_custkey": 104 }
+{ "o_orderkey": 4003, "o_custkey": 112 }
+{ "o_orderkey": 4004, "o_custkey": 70 }
+{ "o_orderkey": 4005, "o_custkey": 140 }
+{ "o_orderkey": 4033, "o_custkey": 83 }
+{ "o_orderkey": 4034, "o_custkey": 94 }
+{ "o_orderkey": 4035, "o_custkey": 118 }
+{ "o_orderkey": 4036, "o_custkey": 47 }
+{ "o_orderkey": 4037, "o_custkey": 121 }
+{ "o_orderkey": 4038, "o_custkey": 94 }
+{ "o_orderkey": 4064, "o_custkey": 130 }
+{ "o_orderkey": 4065, "o_custkey": 80 }
+{ "o_orderkey": 4068, "o_custkey": 125 }
+{ "o_orderkey": 4069, "o_custkey": 73 }
+{ "o_orderkey": 4071, "o_custkey": 148 }
+{ "o_orderkey": 4096, "o_custkey": 139 }
+{ "o_orderkey": 4101, "o_custkey": 142 }
+{ "o_orderkey": 4103, "o_custkey": 106 }
+{ "o_orderkey": 4128, "o_custkey": 139 }
+{ "o_orderkey": 4130, "o_custkey": 104 }
+{ "o_orderkey": 4131, "o_custkey": 44 }
+{ "o_orderkey": 4133, "o_custkey": 101 }
+{ "o_orderkey": 4134, "o_custkey": 97 }
+{ "o_orderkey": 4160, "o_custkey": 55 }
+{ "o_orderkey": 4161, "o_custkey": 118 }
+{ "o_orderkey": 4163, "o_custkey": 64 }
+{ "o_orderkey": 4164, "o_custkey": 94 }
+{ "o_orderkey": 4166, "o_custkey": 43 }
+{ "o_orderkey": 4192, "o_custkey": 146 }
+{ "o_orderkey": 4194, "o_custkey": 106 }
+{ "o_orderkey": 4195, "o_custkey": 104 }
+{ "o_orderkey": 4196, "o_custkey": 106 }
+{ "o_orderkey": 4197, "o_custkey": 92 }
+{ "o_orderkey": 4198, "o_custkey": 143 }
+{ "o_orderkey": 4224, "o_custkey": 70 }
+{ "o_orderkey": 4225, "o_custkey": 128 }
+{ "o_orderkey": 4226, "o_custkey": 92 }
+{ "o_orderkey": 4227, "o_custkey": 133 }
+{ "o_orderkey": 4228, "o_custkey": 110 }
+{ "o_orderkey": 4230, "o_custkey": 140 }
+{ "o_orderkey": 4231, "o_custkey": 86 }
+{ "o_orderkey": 4256, "o_custkey": 118 }
+{ "o_orderkey": 4258, "o_custkey": 92 }
+{ "o_orderkey": 4259, "o_custkey": 104 }
+{ "o_orderkey": 4260, "o_custkey": 142 }
+{ "o_orderkey": 4261, "o_custkey": 118 }
+{ "o_orderkey": 4262, "o_custkey": 88 }
+{ "o_orderkey": 4289, "o_custkey": 125 }
+{ "o_orderkey": 4290, "o_custkey": 41 }
+{ "o_orderkey": 4291, "o_custkey": 89 }
+{ "o_orderkey": 4293, "o_custkey": 103 }
+{ "o_orderkey": 4294, "o_custkey": 49 }
+{ "o_orderkey": 4320, "o_custkey": 115 }
+{ "o_orderkey": 4322, "o_custkey": 142 }
+{ "o_orderkey": 4323, "o_custkey": 104 }
+{ "o_orderkey": 4324, "o_custkey": 73 }
+{ "o_orderkey": 4325, "o_custkey": 130 }
+{ "o_orderkey": 4327, "o_custkey": 146 }
+{ "o_orderkey": 4353, "o_custkey": 73 }
+{ "o_orderkey": 4354, "o_custkey": 145 }
+{ "o_orderkey": 4356, "o_custkey": 97 }
+{ "o_orderkey": 4357, "o_custkey": 47 }
+{ "o_orderkey": 4385, "o_custkey": 122 }
+{ "o_orderkey": 4386, "o_custkey": 61 }
+{ "o_orderkey": 4387, "o_custkey": 110 }
+{ "o_orderkey": 4389, "o_custkey": 55 }
+{ "o_orderkey": 4416, "o_custkey": 149 }
+{ "o_orderkey": 4417, "o_custkey": 67 }
+{ "o_orderkey": 4418, "o_custkey": 61 }
+{ "o_orderkey": 4419, "o_custkey": 104 }
+{ "o_orderkey": 4420, "o_custkey": 109 }
+{ "o_orderkey": 4422, "o_custkey": 70 }
+{ "o_orderkey": 4423, "o_custkey": 64 }
+{ "o_orderkey": 4448, "o_custkey": 70 }
+{ "o_orderkey": 4450, "o_custkey": 106 }
+{ "o_orderkey": 4453, "o_custkey": 65 }
+{ "o_orderkey": 4454, "o_custkey": 142 }
+{ "o_orderkey": 4480, "o_custkey": 85 }
+{ "o_orderkey": 4481, "o_custkey": 148 }
+{ "o_orderkey": 4482, "o_custkey": 82 }
+{ "o_orderkey": 4483, "o_custkey": 52 }
+{ "o_orderkey": 4484, "o_custkey": 131 }
+{ "o_orderkey": 4485, "o_custkey": 53 }
+{ "o_orderkey": 4487, "o_custkey": 46 }
+{ "o_orderkey": 4512, "o_custkey": 70 }
+{ "o_orderkey": 4513, "o_custkey": 85 }
+{ "o_orderkey": 4514, "o_custkey": 97 }
+{ "o_orderkey": 4515, "o_custkey": 140 }
+{ "o_orderkey": 4516, "o_custkey": 130 }
+{ "o_orderkey": 4517, "o_custkey": 113 }
+{ "o_orderkey": 4518, "o_custkey": 125 }
+{ "o_orderkey": 4519, "o_custkey": 136 }
+{ "o_orderkey": 4544, "o_custkey": 112 }
+{ "o_orderkey": 4545, "o_custkey": 59 }
+{ "o_orderkey": 4546, "o_custkey": 43 }
+{ "o_orderkey": 4547, "o_custkey": 109 }
+{ "o_orderkey": 4548, "o_custkey": 127 }
+{ "o_orderkey": 4549, "o_custkey": 64 }
+{ "o_orderkey": 4550, "o_custkey": 118 }
+{ "o_orderkey": 4551, "o_custkey": 109 }
+{ "o_orderkey": 4576, "o_custkey": 139 }
+{ "o_orderkey": 4577, "o_custkey": 79 }
+{ "o_orderkey": 4578, "o_custkey": 91 }
+{ "o_orderkey": 4579, "o_custkey": 106 }
+{ "o_orderkey": 4580, "o_custkey": 82 }
+{ "o_orderkey": 4581, "o_custkey": 79 }
+{ "o_orderkey": 4608, "o_custkey": 80 }
+{ "o_orderkey": 4609, "o_custkey": 133 }
+{ "o_orderkey": 4612, "o_custkey": 61 }
+{ "o_orderkey": 4613, "o_custkey": 133 }
+{ "o_orderkey": 4614, "o_custkey": 61 }
+{ "o_orderkey": 4640, "o_custkey": 97 }
+{ "o_orderkey": 4641, "o_custkey": 134 }
+{ "o_orderkey": 4642, "o_custkey": 148 }
+{ "o_orderkey": 4643, "o_custkey": 67 }
+{ "o_orderkey": 4644, "o_custkey": 94 }
+{ "o_orderkey": 4645, "o_custkey": 44 }
+{ "o_orderkey": 4646, "o_custkey": 83 }
+{ "o_orderkey": 4672, "o_custkey": 79 }
+{ "o_orderkey": 4673, "o_custkey": 82 }
+{ "o_orderkey": 4675, "o_custkey": 86 }
+{ "o_orderkey": 4678, "o_custkey": 88 }
+{ "o_orderkey": 4679, "o_custkey": 88 }
+{ "o_orderkey": 4705, "o_custkey": 98 }
+{ "o_orderkey": 4707, "o_custkey": 91 }
+{ "o_orderkey": 4708, "o_custkey": 85 }
+{ "o_orderkey": 4710, "o_custkey": 100 }
+{ "o_orderkey": 4711, "o_custkey": 142 }
+{ "o_orderkey": 4736, "o_custkey": 139 }
+{ "o_orderkey": 4737, "o_custkey": 79 }
+{ "o_orderkey": 4739, "o_custkey": 148 }
+{ "o_orderkey": 4740, "o_custkey": 68 }
+{ "o_orderkey": 4741, "o_custkey": 127 }
+{ "o_orderkey": 4742, "o_custkey": 64 }
+{ "o_orderkey": 4743, "o_custkey": 97 }
+{ "o_orderkey": 4768, "o_custkey": 136 }
+{ "o_orderkey": 4769, "o_custkey": 121 }
+{ "o_orderkey": 4770, "o_custkey": 59 }
+{ "o_orderkey": 4771, "o_custkey": 95 }
+{ "o_orderkey": 4773, "o_custkey": 122 }
+{ "o_orderkey": 4774, "o_custkey": 52 }
+{ "o_orderkey": 4775, "o_custkey": 128 }
+{ "o_orderkey": 4801, "o_custkey": 88 }
+{ "o_orderkey": 4802, "o_custkey": 130 }
+{ "o_orderkey": 4803, "o_custkey": 124 }
+{ "o_orderkey": 4807, "o_custkey": 53 }
+{ "o_orderkey": 4833, "o_custkey": 133 }
+{ "o_orderkey": 4835, "o_custkey": 146 }
+{ "o_orderkey": 4836, "o_custkey": 65 }
+{ "o_orderkey": 4837, "o_custkey": 130 }
+{ "o_orderkey": 4838, "o_custkey": 44 }
+{ "o_orderkey": 4864, "o_custkey": 88 }
+{ "o_orderkey": 4865, "o_custkey": 85 }
+{ "o_orderkey": 4866, "o_custkey": 53 }
+{ "o_orderkey": 4868, "o_custkey": 76 }
+{ "o_orderkey": 4869, "o_custkey": 58 }
+{ "o_orderkey": 4870, "o_custkey": 103 }
+{ "o_orderkey": 4871, "o_custkey": 46 }
+{ "o_orderkey": 4896, "o_custkey": 85 }
+{ "o_orderkey": 4897, "o_custkey": 80 }
+{ "o_orderkey": 4899, "o_custkey": 61 }
+{ "o_orderkey": 4900, "o_custkey": 137 }
+{ "o_orderkey": 4901, "o_custkey": 79 }
+{ "o_orderkey": 4902, "o_custkey": 139 }
+{ "o_orderkey": 4903, "o_custkey": 92 }
+{ "o_orderkey": 4929, "o_custkey": 149 }
+{ "o_orderkey": 4930, "o_custkey": 149 }
+{ "o_orderkey": 4931, "o_custkey": 50 }
+{ "o_orderkey": 4932, "o_custkey": 122 }
+{ "o_orderkey": 4933, "o_custkey": 94 }
+{ "o_orderkey": 4960, "o_custkey": 124 }
+{ "o_orderkey": 4961, "o_custkey": 58 }
+{ "o_orderkey": 4962, "o_custkey": 104 }
+{ "o_orderkey": 4964, "o_custkey": 101 }
+{ "o_orderkey": 4965, "o_custkey": 52 }
+{ "o_orderkey": 4966, "o_custkey": 70 }
+{ "o_orderkey": 4967, "o_custkey": 98 }
+{ "o_orderkey": 4992, "o_custkey": 62 }
+{ "o_orderkey": 4994, "o_custkey": 43 }
+{ "o_orderkey": 4996, "o_custkey": 133 }
+{ "o_orderkey": 4997, "o_custkey": 47 }
+{ "o_orderkey": 4999, "o_custkey": 85 }
+{ "o_orderkey": 5024, "o_custkey": 124 }
+{ "o_orderkey": 5025, "o_custkey": 121 }
+{ "o_orderkey": 5027, "o_custkey": 148 }
+{ "o_orderkey": 5030, "o_custkey": 106 }
+{ "o_orderkey": 5031, "o_custkey": 139 }
+{ "o_orderkey": 5056, "o_custkey": 52 }
+{ "o_orderkey": 5057, "o_custkey": 64 }
+{ "o_orderkey": 5058, "o_custkey": 119 }
+{ "o_orderkey": 5059, "o_custkey": 43 }
+{ "o_orderkey": 5060, "o_custkey": 112 }
+{ "o_orderkey": 5061, "o_custkey": 101 }
+{ "o_orderkey": 5062, "o_custkey": 61 }
+{ "o_orderkey": 5088, "o_custkey": 130 }
+{ "o_orderkey": 5089, "o_custkey": 130 }
+{ "o_orderkey": 5090, "o_custkey": 89 }
+{ "o_orderkey": 5091, "o_custkey": 148 }
+{ "o_orderkey": 5093, "o_custkey": 79 }
+{ "o_orderkey": 5094, "o_custkey": 106 }
+{ "o_orderkey": 5095, "o_custkey": 97 }
+{ "o_orderkey": 5121, "o_custkey": 133 }
+{ "o_orderkey": 5122, "o_custkey": 70 }
+{ "o_orderkey": 5126, "o_custkey": 112 }
+{ "o_orderkey": 5127, "o_custkey": 73 }
+{ "o_orderkey": 5152, "o_custkey": 44 }
+{ "o_orderkey": 5153, "o_custkey": 113 }
+{ "o_orderkey": 5155, "o_custkey": 77 }
+{ "o_orderkey": 5156, "o_custkey": 125 }
+{ "o_orderkey": 5157, "o_custkey": 142 }
+{ "o_orderkey": 5158, "o_custkey": 76 }
+{ "o_orderkey": 5159, "o_custkey": 106 }
+{ "o_orderkey": 5184, "o_custkey": 85 }
+{ "o_orderkey": 5185, "o_custkey": 148 }
+{ "o_orderkey": 5186, "o_custkey": 52 }
+{ "o_orderkey": 5187, "o_custkey": 55 }
+{ "o_orderkey": 5188, "o_custkey": 140 }
+{ "o_orderkey": 5189, "o_custkey": 71 }
+{ "o_orderkey": 5190, "o_custkey": 58 }
+{ "o_orderkey": 5191, "o_custkey": 77 }
+{ "o_orderkey": 5216, "o_custkey": 59 }
+{ "o_orderkey": 5218, "o_custkey": 82 }
+{ "o_orderkey": 5219, "o_custkey": 88 }
+{ "o_orderkey": 5222, "o_custkey": 80 }
+{ "o_orderkey": 5223, "o_custkey": 149 }
+{ "o_orderkey": 5248, "o_custkey": 70 }
+{ "o_orderkey": 5249, "o_custkey": 103 }
+{ "o_orderkey": 5250, "o_custkey": 97 }
+{ "o_orderkey": 5252, "o_custkey": 91 }
+{ "o_orderkey": 5253, "o_custkey": 148 }
+{ "o_orderkey": 5254, "o_custkey": 112 }
+{ "o_orderkey": 5255, "o_custkey": 64 }
+{ "o_orderkey": 5281, "o_custkey": 124 }
+{ "o_orderkey": 5282, "o_custkey": 50 }
+{ "o_orderkey": 5283, "o_custkey": 131 }
+{ "o_orderkey": 5284, "o_custkey": 61 }
+{ "o_orderkey": 5285, "o_custkey": 70 }
+{ "o_orderkey": 5286, "o_custkey": 116 }
+{ "o_orderkey": 5312, "o_custkey": 65 }
+{ "o_orderkey": 5315, "o_custkey": 139 }
+{ "o_orderkey": 5316, "o_custkey": 100 }
+{ "o_orderkey": 5318, "o_custkey": 59 }
+{ "o_orderkey": 5319, "o_custkey": 98 }
+{ "o_orderkey": 5344, "o_custkey": 109 }
+{ "o_orderkey": 5347, "o_custkey": 49 }
+{ "o_orderkey": 5348, "o_custkey": 53 }
+{ "o_orderkey": 5349, "o_custkey": 67 }
+{ "o_orderkey": 5350, "o_custkey": 76 }
+{ "o_orderkey": 5351, "o_custkey": 122 }
+{ "o_orderkey": 5376, "o_custkey": 149 }
+{ "o_orderkey": 5377, "o_custkey": 64 }
+{ "o_orderkey": 5378, "o_custkey": 43 }
+{ "o_orderkey": 5379, "o_custkey": 89 }
+{ "o_orderkey": 5380, "o_custkey": 148 }
+{ "o_orderkey": 5411, "o_custkey": 61 }
+{ "o_orderkey": 5412, "o_custkey": 142 }
+{ "o_orderkey": 5413, "o_custkey": 94 }
+{ "o_orderkey": 5414, "o_custkey": 100 }
+{ "o_orderkey": 5440, "o_custkey": 130 }
+{ "o_orderkey": 5441, "o_custkey": 41 }
+{ "o_orderkey": 5442, "o_custkey": 43 }
+{ "o_orderkey": 5443, "o_custkey": 131 }
+{ "o_orderkey": 5444, "o_custkey": 130 }
+{ "o_orderkey": 5445, "o_custkey": 115 }
+{ "o_orderkey": 5472, "o_custkey": 70 }
+{ "o_orderkey": 5473, "o_custkey": 65 }
+{ "o_orderkey": 5474, "o_custkey": 55 }
+{ "o_orderkey": 5475, "o_custkey": 139 }
+{ "o_orderkey": 5476, "o_custkey": 91 }
+{ "o_orderkey": 5477, "o_custkey": 107 }
+{ "o_orderkey": 5478, "o_custkey": 116 }
+{ "o_orderkey": 5479, "o_custkey": 70 }
+{ "o_orderkey": 5505, "o_custkey": 95 }
+{ "o_orderkey": 5506, "o_custkey": 91 }
+{ "o_orderkey": 5508, "o_custkey": 56 }
+{ "o_orderkey": 5509, "o_custkey": 80 }
+{ "o_orderkey": 5511, "o_custkey": 79 }
+{ "o_orderkey": 5536, "o_custkey": 116 }
+{ "o_orderkey": 5537, "o_custkey": 118 }
+{ "o_orderkey": 5538, "o_custkey": 139 }
+{ "o_orderkey": 5539, "o_custkey": 119 }
+{ "o_orderkey": 5540, "o_custkey": 130 }
+{ "o_orderkey": 5541, "o_custkey": 143 }
+{ "o_orderkey": 5542, "o_custkey": 49 }
+{ "o_orderkey": 5543, "o_custkey": 115 }
+{ "o_orderkey": 5569, "o_custkey": 109 }
+{ "o_orderkey": 5570, "o_custkey": 112 }
+{ "o_orderkey": 5571, "o_custkey": 103 }
+{ "o_orderkey": 5575, "o_custkey": 103 }
+{ "o_orderkey": 5600, "o_custkey": 95 }
+{ "o_orderkey": 5602, "o_custkey": 130 }
+{ "o_orderkey": 5603, "o_custkey": 71 }
+{ "o_orderkey": 5604, "o_custkey": 46 }
+{ "o_orderkey": 5606, "o_custkey": 149 }
+{ "o_orderkey": 5607, "o_custkey": 92 }
+{ "o_orderkey": 5632, "o_custkey": 79 }
+{ "o_orderkey": 5633, "o_custkey": 79 }
+{ "o_orderkey": 5634, "o_custkey": 68 }
+{ "o_orderkey": 5635, "o_custkey": 70 }
+{ "o_orderkey": 5636, "o_custkey": 122 }
+{ "o_orderkey": 5637, "o_custkey": 103 }
+{ "o_orderkey": 5638, "o_custkey": 109 }
+{ "o_orderkey": 5639, "o_custkey": 145 }
+{ "o_orderkey": 5664, "o_custkey": 119 }
+{ "o_orderkey": 5665, "o_custkey": 100 }
+{ "o_orderkey": 5667, "o_custkey": 44 }
+{ "o_orderkey": 5668, "o_custkey": 109 }
+{ "o_orderkey": 5669, "o_custkey": 74 }
+{ "o_orderkey": 5671, "o_custkey": 43 }
+{ "o_orderkey": 5696, "o_custkey": 142 }
+{ "o_orderkey": 5697, "o_custkey": 55 }
+{ "o_orderkey": 5698, "o_custkey": 95 }
+{ "o_orderkey": 5699, "o_custkey": 142 }
+{ "o_orderkey": 5700, "o_custkey": 143 }
+{ "o_orderkey": 5701, "o_custkey": 43 }
+{ "o_orderkey": 5702, "o_custkey": 97 }
+{ "o_orderkey": 5703, "o_custkey": 121 }
+{ "o_orderkey": 5728, "o_custkey": 80 }
+{ "o_orderkey": 5729, "o_custkey": 44 }
+{ "o_orderkey": 5733, "o_custkey": 101 }
+{ "o_orderkey": 5734, "o_custkey": 94 }
+{ "o_orderkey": 5762, "o_custkey": 49 }
+{ "o_orderkey": 5764, "o_custkey": 131 }
+{ "o_orderkey": 5765, "o_custkey": 52 }
+{ "o_orderkey": 5766, "o_custkey": 49 }
+{ "o_orderkey": 5767, "o_custkey": 118 }
+{ "o_orderkey": 5796, "o_custkey": 149 }
+{ "o_orderkey": 5797, "o_custkey": 122 }
+{ "o_orderkey": 5798, "o_custkey": 106 }
+{ "o_orderkey": 5824, "o_custkey": 56 }
+{ "o_orderkey": 5825, "o_custkey": 61 }
+{ "o_orderkey": 5828, "o_custkey": 127 }
+{ "o_orderkey": 5829, "o_custkey": 125 }
+{ "o_orderkey": 5830, "o_custkey": 85 }
+{ "o_orderkey": 5831, "o_custkey": 139 }
+{ "o_orderkey": 5857, "o_custkey": 124 }
+{ "o_orderkey": 5858, "o_custkey": 64 }
+{ "o_orderkey": 5861, "o_custkey": 139 }
+{ "o_orderkey": 5862, "o_custkey": 64 }
+{ "o_orderkey": 5863, "o_custkey": 65 }
+{ "o_orderkey": 5888, "o_custkey": 46 }
+{ "o_orderkey": 5890, "o_custkey": 49 }
+{ "o_orderkey": 5891, "o_custkey": 46 }
+{ "o_orderkey": 5892, "o_custkey": 101 }
+{ "o_orderkey": 5894, "o_custkey": 71 }
+{ "o_orderkey": 5895, "o_custkey": 64 }
+{ "o_orderkey": 5920, "o_custkey": 119 }
+{ "o_orderkey": 5921, "o_custkey": 58 }
+{ "o_orderkey": 5922, "o_custkey": 143 }
+{ "o_orderkey": 5923, "o_custkey": 101 }
+{ "o_orderkey": 5925, "o_custkey": 146 }
+{ "o_orderkey": 5926, "o_custkey": 76 }
+{ "o_orderkey": 5927, "o_custkey": 116 }
+{ "o_orderkey": 5952, "o_custkey": 148 }
+{ "o_orderkey": 5955, "o_custkey": 94 }
+{ "o_orderkey": 5957, "o_custkey": 89 }
+{ "o_orderkey": 5958, "o_custkey": 115 }
+{ "o_orderkey": 5984, "o_custkey": 70 }
+{ "o_orderkey": 5985, "o_custkey": 143 }
+{ "o_orderkey": 5986, "o_custkey": 115 }
+{ "o_orderkey": 5987, "o_custkey": 64 }
+{ "o_orderkey": 10986, "o_custkey": 115 }
+{ "o_orderkey": 10987, "o_custkey": 64 }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/5dc958ce/asterix-app/src/test/resources/runtimets/results/upsert/primary-index/primary-index.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/upsert/primary-index/primary-index.1.adm b/asterix-app/src/test/resources/runtimets/results/upsert/primary-index/primary-index.1.adm
new file mode 100644
index 0000000..2456990
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/upsert/primary-index/primary-index.1.adm
@@ -0,0 +1,9 @@
+{ "id": 6i32, "age": 6i32, "name": "Tracy", "salary": 123.0d }
+{ "id": 12i32, "age": 44i32, "name": "Smith", "salary": 987.0d }
+{ "id": 1i32, "age": 2i32, "name": "Mohammed", "salary": 155.0d }
+{ "id": 2i32, "age": 2i32, "name": "Stephen", "salary": 155.0d }
+{ "id": 4i32, "age": 4i32, "name": "Angela", "salary": 333.0d }
+{ "id": 8i32, "age": 8i32, "name": "George", "salary": 555.0d }
+{ "id": 3i32, "age": 4i32, "name": "Kate", "salary": 333.0d }
+{ "id": 5i32, "age": 6i32, "name": "William", "salary": 123.0d }
+{ "id": 7i32, "age": 8i32, "name": "Stanly", "salary": 555.0d }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/5dc958ce/asterix-app/src/test/resources/runtimets/results/upsert/primary-secondary-btree/primary-secondary-btree.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/upsert/primary-secondary-btree/primary-secondary-btree.1.adm b/asterix-app/src/test/resources/runtimets/results/upsert/primary-secondary-btree/primary-secondary-btree.1.adm
new file mode 100644
index 0000000..fc52536
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/upsert/primary-secondary-btree/primary-secondary-btree.1.adm
@@ -0,0 +1,5 @@
+{ "id": 6i32, "age": 6i32, "name": "Tracy", "salary": 123.0d }
+{ "id": 12i32, "age": 44i32, "name": "Smith", "salary": 987.0d }
+{ "id": 8i32, "age": 8i32, "name": "George", "salary": 555.0d }
+{ "id": 5i32, "age": 6i32, "name": "William", "salary": 123.0d }
+{ "id": 7i32, "age": 8i32, "name": "Stanly", "salary": 555.0d }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/5dc958ce/asterix-app/src/test/resources/runtimets/results/upsert/primary-secondary-inverted/primary-secondary-inverted.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/upsert/primary-secondary-inverted/primary-secondary-inverted.1.adm b/asterix-app/src/test/resources/runtimets/results/upsert/primary-secondary-inverted/primary-secondary-inverted.1.adm
new file mode 100644
index 0000000..9fbfb7f
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/upsert/primary-secondary-inverted/primary-secondary-inverted.1.adm
@@ -0,0 +1,5 @@
+{ "id": 3, "dblpid": "books/acm/kim95/BreitbartGS95", "title": "SQL bbbbbbbbbbbbbbbbbb", "authors": "Yuri Breitbart Hector Garcia-Molina Abraham Silberschatz", "misc": "2004-03-08 573-591 Modern Database Systems books/acm/Kim95 db/books/collections/kim95.html#BreitbartGS95 1995" }
+{ "id": 10, "dblpid": "books/acm/kim95/KelleyGKRG95", "title": "Schema Architecture of the UniSQL/M Multidatabase System", "authors": "William Kelley Sunit K. Gala Won Kim Tom C. Reyes Bruce Graham", "misc": "2004-03-08 Modern Database Systems books/acm/Kim95 621-648 1995 db/books/collections/kim95.html#KelleyGKRG95" }
+{ "id": 31, "dblpid": "books/acm/kim95/Stout95", "title": "EDA/SQL.", "authors": "Ralph L. Stout", "misc": "2004-03-08 649-663 Modern Database Systems books/acm/Kim95 db/books/collections/kim95.html#Stout95 1995" }
+{ "id": 104, "dblpid": "conf/focs/GalilT86", "title": "SQL An O(n^2 (m + n log n) log n) Min-Cost Flow Algorithm", "authors": "Zvi Galil Éva Tardos", "misc": "2006-04-25 1-9 conf/focs/FOCS27 1986 FOCS db/conf/focs/focs86.html#GalilT86" }
+{ "id": 666, "dblpid": "books/acm/kim95/DittrichD95", "title": "hhhhhhhhhhhhBMSs SQL Should Do Better  A Critique Based on Early Experiences.", "authors": "Angelika Kotz Dittrich Klaus R. Dittrich", "misc": "2002-01-03 238-254 1995 Modern Database Systems db/books/collections/kim95.html#DittrichD95" }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/5dc958ce/asterix-app/src/test/resources/runtimets/results/upsert/primary-secondary-rtree/primary-secondary-rtree.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/upsert/primary-secondary-rtree/primary-secondary-rtree.1.adm b/asterix-app/src/test/resources/runtimets/results/upsert/primary-secondary-rtree/primary-secondary-rtree.1.adm
new file mode 100644
index 0000000..9c85166
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/upsert/primary-secondary-rtree/primary-secondary-rtree.1.adm
@@ -0,0 +1 @@
+{ "id": 20 }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/5dc958ce/asterix-app/src/test/resources/runtimets/results/upsert/upsert-with-self-read/upsert-with-self-read.1.adm
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/results/upsert/upsert-with-self-read/upsert-with-self-read.1.adm b/asterix-app/src/test/resources/runtimets/results/upsert/upsert-with-self-read/upsert-with-self-read.1.adm
new file mode 100644
index 0000000..37ef294
--- /dev/null
+++ b/asterix-app/src/test/resources/runtimets/results/upsert/upsert-with-self-read/upsert-with-self-read.1.adm
@@ -0,0 +1,5 @@
+{ "id": 6i32, "age": 11i32, "name": "Silvester", "salary": 135.3d }
+{ "id": 12i32, "age": 45i32, "name": "Smith", "salary": 1085.7d }
+{ "id": 1i32, "age": 12i32, "name": "Cloud", "salary": 854.7d }
+{ "id": 2i32, "age": 11i32, "name": "Nadia", "salary": 170.5d }
+{ "id": 4i32, "age": 11i32, "name": "Igor", "salary": 366.3d }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/5dc958ce/asterix-app/src/test/resources/runtimets/testsuite.xml
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/testsuite.xml b/asterix-app/src/test/resources/runtimets/testsuite.xml
index 5d55f2d..621c73a 100644
--- a/asterix-app/src/test/resources/runtimets/testsuite.xml
+++ b/asterix-app/src/test/resources/runtimets/testsuite.xml
@@ -1240,8 +1240,65 @@
         </test-case>
         -->
     </test-group>
+    <test-group name="upsert">
+        <test-case FilePath="upsert">
+            <compilation-unit name="primary-secondary-rtree">
+                <output-dir compare="Text">primary-secondary-rtree</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="upsert">
+            <compilation-unit name="upsert-with-self-read">
+                <output-dir compare="Text">upsert-with-self-read</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="upsert">
+            <compilation-unit name="filtered-dataset">
+                <output-dir compare="Text">filtered-dataset</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="upsert">
+            <compilation-unit name="nullable-index">
+                <output-dir compare="Text">nullable-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="upsert">
+            <compilation-unit name="nested-index">
+                <output-dir compare="Text">nested-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="upsert">
+            <compilation-unit name="open-index">
+                <output-dir compare="Text">open-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="upsert">
+            <compilation-unit name="primary-index">
+                <output-dir compare="Text">primary-index</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="upsert">
+            <compilation-unit name="primary-secondary-btree">
+                <output-dir compare="Text">primary-secondary-btree</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="upsert">
+            <compilation-unit name="primary-secondary-inverted">
+                <output-dir compare="Text">primary-secondary-inverted</output-dir>
+            </compilation-unit>
+        </test-case>
+        <test-case FilePath="upsert">
+            <compilation-unit name="multiple-secondaries">
+                <output-dir compare="Text">multiple-secondaries</output-dir>
+            </compilation-unit>
+        </test-case>
+    </test-group>
     <test-group name="dml">
          <test-case FilePath="dml">
+            <compilation-unit name="load-with-ngram-index">
+                <output-dir compare="Text">load-with-ngram-index</output-dir>
+            </compilation-unit>
+        </test-case>
+         <test-case FilePath="dml">
             <compilation-unit name="insert-duplicated-keys-from-query">
                 <output-dir compare="Text">insert-duplicated-keys-from-query</output-dir>
                 <expected-error>org.apache.hyracks.storage.am.common.exceptions.TreeIndexDuplicateKeyException: Failed to insert key since key already exists</expected-error>
@@ -1470,11 +1527,6 @@
             </compilation-unit>
         </test-case>
         <test-case FilePath="dml">
-            <compilation-unit name="load-with-ngram-index">
-                <output-dir compare="Text">load-with-ngram-index</output-dir>
-            </compilation-unit>
-        </test-case>
-        <test-case FilePath="dml">
             <compilation-unit name="load-with-rtree-index">
                 <output-dir compare="Text">load-with-rtree-index</output-dir>
             </compilation-unit>

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/5dc958ce/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
----------------------------------------------------------------------
diff --git a/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java b/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
index 93d78e8..53902e1 100644
--- a/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
+++ b/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
@@ -35,6 +35,7 @@ import org.apache.asterix.common.exceptions.ACIDException;
 import org.apache.asterix.common.ioopcallbacks.AbstractLSMIOOperationCallback;
 import org.apache.asterix.common.transactions.ILogManager;
 import org.apache.asterix.common.transactions.LogRecord;
+import org.apache.asterix.common.utils.TransactionUtil;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.lifecycle.ILifeCycleComponent;
 import org.apache.hyracks.storage.am.common.api.IIndex;
@@ -542,7 +543,7 @@ public class DatasetLifecycleManager implements IDatasetLifecycleManager, ILifeC
     private void flushDatasetOpenIndexes(DatasetInfo dsInfo, boolean asyncFlush) throws HyracksDataException {
         if (!dsInfo.isExternal) {
             synchronized (logRecord) {
-                logRecord.formFlushLogRecord(dsInfo.datasetID, null, dsInfo.indexes.size());
+                TransactionUtil.formFlushLogRecord(logRecord, dsInfo.datasetID, null, dsInfo.indexes.size());
                 try {
                     logManager.log(logRecord);
                 } catch (ACIDException e) {

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/5dc958ce/asterix-common/src/main/java/org/apache/asterix/common/context/PrimaryIndexOperationTracker.java
----------------------------------------------------------------------
diff --git a/asterix-common/src/main/java/org/apache/asterix/common/context/PrimaryIndexOperationTracker.java b/asterix-common/src/main/java/org/apache/asterix/common/context/PrimaryIndexOperationTracker.java
index 2b5a0b0..e5a3473 100644
--- a/asterix-common/src/main/java/org/apache/asterix/common/context/PrimaryIndexOperationTracker.java
+++ b/asterix-common/src/main/java/org/apache/asterix/common/context/PrimaryIndexOperationTracker.java
@@ -28,6 +28,7 @@ import org.apache.asterix.common.ioopcallbacks.AbstractLSMIOOperationCallback;
 import org.apache.asterix.common.transactions.AbstractOperationCallback;
 import org.apache.asterix.common.transactions.ILogManager;
 import org.apache.asterix.common.transactions.LogRecord;
+import org.apache.asterix.common.utils.TransactionUtil;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
@@ -120,10 +121,9 @@ public class PrimaryIndexOperationTracker extends BaseOperationTracker {
                     }
                 }
             }
-
             LogRecord logRecord = new LogRecord();
-            logRecord.formFlushLogRecord(datasetID, this, logManager.getNodeId(), dsInfo.getDatasetIndexes().size());
-
+            TransactionUtil.formFlushLogRecord(logRecord, datasetID, this, logManager.getNodeId(),
+                    dsInfo.getDatasetIndexes().size());
             try {
                 logManager.log(logRecord);
             } catch (ACIDException e) {

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/5dc958ce/asterix-common/src/main/java/org/apache/asterix/common/dataflow/AsterixLSMTreeInsertDeleteOperatorDescriptor.java
----------------------------------------------------------------------
diff --git a/asterix-common/src/main/java/org/apache/asterix/common/dataflow/AsterixLSMTreeInsertDeleteOperatorDescriptor.java b/asterix-common/src/main/java/org/apache/asterix/common/dataflow/AsterixLSMTreeInsertDeleteOperatorDescriptor.java
index 53039ce..c7304a1 100644
--- a/asterix-common/src/main/java/org/apache/asterix/common/dataflow/AsterixLSMTreeInsertDeleteOperatorDescriptor.java
+++ b/asterix-common/src/main/java/org/apache/asterix/common/dataflow/AsterixLSMTreeInsertDeleteOperatorDescriptor.java
@@ -21,13 +21,16 @@ package org.apache.asterix.common.dataflow;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.IOperatorNodePushable;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.INullWriterFactory;
 import org.apache.hyracks.api.dataflow.value.IRecordDescriptorProvider;
 import org.apache.hyracks.api.dataflow.value.ITypeTraits;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
 import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
 import org.apache.hyracks.storage.am.common.api.IIndexLifecycleManagerProvider;
 import org.apache.hyracks.storage.am.common.api.IModificationOperationCallbackFactory;
+import org.apache.hyracks.storage.am.common.api.ISearchOperationCallbackFactory;
 import org.apache.hyracks.storage.am.common.api.ITupleFilterFactory;
 import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory;
 import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation;
@@ -43,23 +46,24 @@ public class AsterixLSMTreeInsertDeleteOperatorDescriptor extends LSMTreeIndexIn
     /** the name of the index that is being operated upon **/
     private final String indexName;
 
-    public AsterixLSMTreeInsertDeleteOperatorDescriptor(IOperatorDescriptorRegistry spec,
-            RecordDescriptor recDesc, IStorageManagerInterface storageManager,
-            IIndexLifecycleManagerProvider lifecycleManagerProvider, IFileSplitProvider fileSplitProvider,
-            ITypeTraits[] typeTraits, IBinaryComparatorFactory[] comparatorFactories, int[] bloomFilterKeyFields,
-            int[] fieldPermutation, IndexOperation op, IIndexDataflowHelperFactory dataflowHelperFactory,
-            ITupleFilterFactory tupleFilterFactory,
-            IModificationOperationCallbackFactory modificationOpCallbackProvider, boolean isPrimary, String indexName) {
+    public AsterixLSMTreeInsertDeleteOperatorDescriptor(IOperatorDescriptorRegistry spec, RecordDescriptor recDesc,
+            IStorageManagerInterface storageManager, IIndexLifecycleManagerProvider lifecycleManagerProvider,
+            IFileSplitProvider fileSplitProvider, ITypeTraits[] typeTraits,
+            IBinaryComparatorFactory[] comparatorFactories, int[] bloomFilterKeyFields, int[] fieldPermutation,
+            IndexOperation op, IIndexDataflowHelperFactory dataflowHelperFactory,
+            ITupleFilterFactory tupleFilterFactory, boolean isPrimary, String indexName,
+            INullWriterFactory nullWriterFactory, IModificationOperationCallbackFactory modificationOpCallbackProvider,
+            ISearchOperationCallbackFactory searchOpCallbackProvider) {
         super(spec, recDesc, storageManager, lifecycleManagerProvider, fileSplitProvider, typeTraits,
                 comparatorFactories, bloomFilterKeyFields, fieldPermutation, op, dataflowHelperFactory,
-                tupleFilterFactory, modificationOpCallbackProvider);
+                tupleFilterFactory, nullWriterFactory, modificationOpCallbackProvider, searchOpCallbackProvider);
         this.isPrimary = isPrimary;
         this.indexName = indexName;
     }
 
     @Override
     public IOperatorNodePushable createPushRuntime(IHyracksTaskContext ctx,
-            IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) {
+            IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) throws HyracksDataException {
         return new AsterixLSMInsertDeleteOperatorNodePushable(this, ctx, partition, fieldPermutation,
                 recordDescProvider, op, isPrimary);
     }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/5dc958ce/asterix-common/src/main/java/org/apache/asterix/common/transactions/ILogRecord.java
----------------------------------------------------------------------
diff --git a/asterix-common/src/main/java/org/apache/asterix/common/transactions/ILogRecord.java b/asterix-common/src/main/java/org/apache/asterix/common/transactions/ILogRecord.java
index 7c76e98..a88c985 100644
--- a/asterix-common/src/main/java/org/apache/asterix/common/transactions/ILogRecord.java
+++ b/asterix-common/src/main/java/org/apache/asterix/common/transactions/ILogRecord.java
@@ -25,7 +25,7 @@ import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
 
 public interface ILogRecord {
 
-    public enum RECORD_STATUS{
+    public enum RECORD_STATUS {
         TRUNCATED,
         BAD_CHKSUM,
         OK
@@ -40,11 +40,6 @@ public interface ILogRecord {
 
     public void writeLogRecord(ByteBuffer buffer);
 
-    public void formJobTerminateLogRecord(ITransactionContext txnCtx, boolean isCommit);
-
-    public void formEntityCommitLogRecord(ITransactionContext txnCtx, int datasetId, int PKHashValue,
-            ITupleReference tupleReference, int[] primaryKeyFields);
-
     public ITransactionContext getTxnCtx();
 
     public void setTxnCtx(ITransactionContext txnCtx);
@@ -135,6 +130,4 @@ public interface ILogRecord {
 
     public ByteBuffer getSerializedLog();
 
-    public void formJobTerminateLogRecord(int jobId, boolean isCommit, String nodeId);
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/5dc958ce/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogRecord.java
----------------------------------------------------------------------
diff --git a/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogRecord.java b/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogRecord.java
index 51eca0b..d4a96a5 100644
--- a/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogRecord.java
+++ b/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogRecord.java
@@ -41,7 +41,7 @@ import org.apache.hyracks.storage.am.common.tuples.SimpleTupleWriter;
  * NodeIdLength(4)
  * NodeId(?)
  * ---------------------------
- * [Header2] (12 bytes + PKValueSize) : for entity_commit and update log types
+ * [Header2] (12 bytes + PKValueSize) : for entity_commit, upsert_entity_commit, and update log types
  * DatasetId(4) //stored in dataset_dataset in Metadata Node
  * PKHashValue(4)
  * PKValueSize(4)
@@ -63,7 +63,7 @@ import org.apache.hyracks.storage.am.common.tuples.SimpleTupleWriter;
  * ---------------------------
  * = LogSize =
  * 1) JOB_COMMIT_LOG_SIZE: 13 bytes (5 + 8)
- * 2) ENTITY_COMMIT: 25 + PKSize (5 + 12 + PKSize + 8)
+ * 2) ENTITY_COMMIT || UPSERT_ENTITY_COMMIT: 25 + PKSize (5 + 12 + PKSize + 8)
  *    --> ENTITY_COMMIT_LOG_BASE_SIZE = 25
  * 3) UPDATE: 54 + PKValueSize + NewValueSize (5 + 12 + PKValueSize + 20 + 9 + NewValueSize + 8)
  * 4) FLUSH: 5 + 8 + DatasetId(4) (In case of serialize: + (8 bytes for LSN) + (4 bytes for number of flushed indexes)
@@ -71,7 +71,7 @@ import org.apache.hyracks.storage.am.common.tuples.SimpleTupleWriter;
 
 public class LogRecord implements ILogRecord {
 
-    //------------- fields in a log record (begin) ------------//
+    // ------------- fields in a log record (begin) ------------//
     private byte logSource;
     private String nodeId;
     private int nodeIdLength;
@@ -89,7 +89,7 @@ public class LogRecord implements ILogRecord {
     private int newValueSize;
     private ITupleReference newValue;
     private long checksum;
-    //------------- fields in a log record (end) --------------//
+    // ------------- fields in a log record (end) --------------//
 
     private int PKFieldCnt;
     private ITransactionContext txnCtx;
@@ -104,7 +104,7 @@ public class LogRecord implements ILogRecord {
     private IReplicationThread replicationThread;
     private ByteBuffer serializedLog;
     private final Map<String, byte[]> nodeIdsMap;
-    //this field is used for serialized flush logs only to indicate how many indexes were flushed using its LSN.
+    // this field is used for serialized flush logs only to indicate how many indexes were flushed using its LSN.
     private int numOfFlushedIndexes;
 
     public LogRecord() {
@@ -142,7 +142,7 @@ public class LogRecord implements ILogRecord {
         if (nodeIdsMap.containsKey(nodeId)) {
             buffer.put(nodeIdsMap.get(nodeId));
         } else {
-            //byte array for node id length and string
+            // byte array for node id length and string
             byte[] bytes = new byte[(Integer.SIZE / 8) + nodeId.length()];
             buffer.putInt(nodeId.length());
             buffer.put(nodeId.getBytes(java.nio.charset.StandardCharsets.UTF_8));
@@ -150,7 +150,7 @@ public class LogRecord implements ILogRecord {
             buffer.get(bytes, 0, bytes.length);
             nodeIdsMap.put(nodeId, bytes);
         }
-        if (logType == LogType.UPDATE || logType == LogType.ENTITY_COMMIT) {
+        if (logType == LogType.UPDATE || logType == LogType.ENTITY_COMMIT || logType == LogType.UPSERT_ENTITY_COMMIT) {
             buffer.putInt(datasetId);
             buffer.putInt(PKHashValue);
             if (PKValueSize <= 0) {
@@ -182,14 +182,14 @@ public class LogRecord implements ILogRecord {
         buffer.putLong(checksum);
     }
 
-    //this method is used when replication is enabled to include the log record LSN in the serialized version
+    // this method is used when replication is enabled to include the log record LSN in the serialized version
     @Override
     public void writeLogRecord(ByteBuffer buffer, long appendLSN) {
         int beginOffset = buffer.position();
         writeLogRecordCommonFields(buffer);
 
         if (logSource == LogSource.LOCAL) {
-            //copy the serialized log to send it to replicas
+            // copy the serialized log to send it to replicas
             int serializedLogSize = getSerializedLogSize(logType, logSize);
 
             if (serializedLog == null || serializedLog.capacity() < serializedLogSize) {
@@ -223,14 +223,14 @@ public class LogRecord implements ILogRecord {
                         PKValue.getFieldLength(PKFields[i]));
             }
         } else {
-            //since PKValue is already serialized in remote logs, just put it into buffer
+            // since PKValue is already serialized in remote logs, just put it into buffer
             buffer.put(PKValue.getFieldData(0), 0, PKValueSize);
         }
     }
 
     private void writeTuple(ByteBuffer buffer, ITupleReference tuple, int size) {
         tupleWriter.writeTuple(tuple, buffer.array(), buffer.position());
-        //writeTuple() doesn't change the position of the buffer.
+        // writeTuple() doesn't change the position of the buffer.
         buffer.position(buffer.position() + size);
     }
 
@@ -244,21 +244,21 @@ public class LogRecord implements ILogRecord {
     public RECORD_STATUS readLogRecord(ByteBuffer buffer) {
         int beginOffset = buffer.position();
 
-        //read header
+        // read header
         RECORD_STATUS status = readLogHeader(buffer);
         if (status != RECORD_STATUS.OK) {
             buffer.position(beginOffset);
             return status;
         }
 
-        //read body
+        // read body
         status = readLogBody(buffer, false);
         if (status != RECORD_STATUS.OK) {
             buffer.position(beginOffset);
             return status;
         }
 
-        //attempt to read checksum
+        // attempt to read checksum
         if (buffer.remaining() < CHKSUM_LEN) {
             buffer.position(beginOffset);
             return RECORD_STATUS.TRUNCATED;
@@ -272,7 +272,7 @@ public class LogRecord implements ILogRecord {
     }
 
     private RECORD_STATUS readLogHeader(ByteBuffer buffer) {
-        //first we need the logtype and Job ID, if the buffer isn't that big, then no dice.
+        // first we need the logtype and Job ID, if the buffer isn't that big, then no dice.
         if (buffer.remaining() < ALL_RECORD_HEADER_LEN) {
             return RECORD_STATUS.TRUNCATED;
         }
@@ -280,14 +280,14 @@ public class LogRecord implements ILogRecord {
         logType = buffer.get();
         jobId = buffer.getInt();
         nodeIdLength = buffer.getInt();
-        //attempt to read node id
+        // attempt to read node id
         if (buffer.remaining() < nodeIdLength) {
             return RECORD_STATUS.TRUNCATED;
         }
-        //read node id string
+        // read node id string
         nodeId = new String(buffer.array(), buffer.position() + buffer.arrayOffset(), nodeIdLength,
                 java.nio.charset.StandardCharsets.UTF_8);
-        //skip node id string bytes
+        // skip node id string bytes
         buffer.position(buffer.position() + nodeIdLength);
 
         return RECORD_STATUS.OK;
@@ -299,14 +299,14 @@ public class LogRecord implements ILogRecord {
                 datasetId = -1;
                 PKHashValue = -1;
             } else {
-                //attempt to read in the dsid, PK hash and PK length
+                // attempt to read in the dsid, PK hash and PK length
                 if (buffer.remaining() < ENTITYCOMMIT_UPDATE_HEADER_LEN) {
                     return RECORD_STATUS.TRUNCATED;
                 }
                 datasetId = buffer.getInt();
                 PKHashValue = buffer.getInt();
                 PKValueSize = buffer.getInt();
-                //attempt to read in the PK
+                // attempt to read in the PK
                 if (buffer.remaining() < PKValueSize) {
                     return RECORD_STATUS.TRUNCATED;
                 }
@@ -317,7 +317,7 @@ public class LogRecord implements ILogRecord {
             }
 
             if (logType == LogType.UPDATE) {
-                //attempt to read in the previous LSN, log size, new value size, and new record type
+                // attempt to read in the previous LSN, log size, new value size, and new record type
                 if (buffer.remaining() < UPDATE_LSN_HEADER + UPDATE_BODY_HEADER) {
                     return RECORD_STATUS.TRUNCATED;
                 }
@@ -337,7 +337,7 @@ public class LogRecord implements ILogRecord {
                     tupleBuffer.put(buffer.array(), buffer.position(), newValueSize);
                     tupleBuffer.flip();
                     newValue = readTuple(tupleBuffer, readNewValue, fieldCnt, newValueSize);
-                    //skip tuple bytes
+                    // skip tuple bytes
                     buffer.position(buffer.position() + newValueSize);
                 }
             } else {
@@ -361,8 +361,8 @@ public class LogRecord implements ILogRecord {
         if (!remoteRecoveryLog || !nodeId.equals(localNodeId)) {
             readLogBody(buffer, false);
         } else {
-            //need to allocate buffer for tuple since the logs will be kept in memory to use during remote recovery
-            //TODO when this is redesigned to spill remote recovery logs to disk, this will not be needed
+            // need to allocate buffer for tuple since the logs will be kept in memory to use during remote recovery
+            // TODO when this is redesigned to spill remote recovery logs to disk, this will not be needed
             readLogBody(buffer, true);
         }
 
@@ -371,7 +371,7 @@ public class LogRecord implements ILogRecord {
             numOfFlushedIndexes = buffer.getInt();
         }
 
-        //remote recovery logs need to have the LSN to check which should be replayed
+        // remote recovery logs need to have the LSN to check which should be replayed
         if (remoteRecoveryLog && nodeId.equals(localNodeId)) {
             LSN = buffer.getLong();
         }
@@ -398,54 +398,6 @@ public class LogRecord implements ILogRecord {
     }
 
     @Override
-    public void formJobTerminateLogRecord(ITransactionContext txnCtx, boolean isCommit) {
-        this.txnCtx = txnCtx;
-        formJobTerminateLogRecord(txnCtx.getJobId().getId(), isCommit, nodeId);
-    }
-
-    @Override
-    public void formJobTerminateLogRecord(int jobId, boolean isCommit, String nodeId) {
-        this.logType = isCommit ? LogType.JOB_COMMIT : LogType.ABORT;
-        this.jobId = jobId;
-        this.datasetId = -1;
-        this.PKHashValue = -1;
-        setNodeId(nodeId);
-        computeAndSetLogSize();
-    }
-
-    public void formFlushLogRecord(int datasetId, PrimaryIndexOperationTracker opTracker, int numOfFlushedIndexes) {
-        formFlushLogRecord(datasetId, opTracker, null, numOfFlushedIndexes);
-    }
-
-    public void formFlushLogRecord(int datasetId, PrimaryIndexOperationTracker opTracker, String nodeId,
-            int numberOfIndexes) {
-        this.logType = LogType.FLUSH;
-        this.jobId = -1;
-        this.datasetId = datasetId;
-        this.opTracker = opTracker;
-        this.numOfFlushedIndexes = numberOfIndexes;
-        if (nodeId != null) {
-            setNodeId(nodeId);
-        }
-        computeAndSetLogSize();
-    }
-
-    @Override
-    public void formEntityCommitLogRecord(ITransactionContext txnCtx, int datasetId, int PKHashValue,
-            ITupleReference PKValue, int[] PKFields) {
-        this.txnCtx = txnCtx;
-        this.logType = LogType.ENTITY_COMMIT;
-        this.jobId = txnCtx.getJobId().getId();
-        this.datasetId = datasetId;
-        this.PKHashValue = PKHashValue;
-        this.PKFieldCnt = PKFields.length;
-        this.PKValue = PKValue;
-        this.PKFields = PKFields;
-        computeAndSetPKValueSize();
-        computeAndSetLogSize();
-    }
-
-    @Override
     public void computeAndSetPKValueSize() {
         int i;
         PKValueSize = 0;
@@ -469,6 +421,7 @@ public class LogRecord implements ILogRecord {
                 logSize = JOB_TERMINATE_LOG_SIZE;
                 break;
             case LogType.ENTITY_COMMIT:
+            case LogType.UPSERT_ENTITY_COMMIT:
                 logSize = ENTITY_COMMIT_LOG_BASE_SIZE + PKValueSize;
                 break;
             case LogType.FLUSH:
@@ -511,7 +464,7 @@ public class LogRecord implements ILogRecord {
             buffer.putLong(LSN);
             buffer.putInt(numOfFlushedIndexes);
         }
-        //LSN must be included in all remote recovery logs (not only FLUSH)
+        // LSN must be included in all remote recovery logs (not only FLUSH)
         buffer.putLong(LSN);
         return buffer.position() - bufferBegin;
     }
@@ -612,13 +565,13 @@ public class LogRecord implements ILogRecord {
 
     private static int getSerializedLogSize(Byte logType, int logSize) {
         if (logType == LogType.FLUSH) {
-            //LSN
+            // LSN
             logSize += (Long.SIZE / 8);
-            //num of indexes
+            // num of indexes
             logSize += (Integer.SIZE / 8);
         }
 
-        //checksum not included in serialized version
+        // checksum not included in serialized version
         logSize -= CHKSUM_LEN;
 
         return logSize;
@@ -752,4 +705,12 @@ public class LogRecord implements ILogRecord {
         this.numOfFlushedIndexes = numOfFlushedIndexes;
     }
 
+    public void setPKFieldCnt(int pKFieldCnt) {
+        PKFieldCnt = pKFieldCnt;
+    }
+
+    public void setOpTracker(PrimaryIndexOperationTracker opTracker) {
+        this.opTracker = opTracker;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/5dc958ce/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogType.java
----------------------------------------------------------------------
diff --git a/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogType.java b/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogType.java
index 4048415..d6d2657 100644
--- a/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogType.java
+++ b/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogType.java
@@ -25,12 +25,14 @@ public class LogType {
     public static final byte ENTITY_COMMIT = 2;
     public static final byte ABORT = 3;
     public static final byte FLUSH = 4;
+    public static final byte UPSERT_ENTITY_COMMIT = 5;
 
     private static final String STRING_UPDATE = "UPDATE";
     private static final String STRING_JOB_COMMIT = "JOB_COMMIT";
     private static final String STRING_ENTITY_COMMIT = "ENTITY_COMMIT";
     private static final String STRING_ABORT = "ABORT";
     private static final String STRING_FLUSH = "FLUSH";
+    private static final String STRING_UPSERT_ENTITY_COMMIT = "UPSERT_ENTITY_COMMIT";
 
     private static final String STRING_INVALID_LOG_TYPE = "INVALID_LOG_TYPE";
 
@@ -46,6 +48,8 @@ public class LogType {
                 return STRING_ABORT;
             case LogType.FLUSH:
                 return STRING_FLUSH;
+            case LogType.UPSERT_ENTITY_COMMIT:
+                return STRING_UPSERT_ENTITY_COMMIT;
             default:
                 return STRING_INVALID_LOG_TYPE;
         }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/5dc958ce/asterix-common/src/main/java/org/apache/asterix/common/utils/TransactionUtil.java
----------------------------------------------------------------------
diff --git a/asterix-common/src/main/java/org/apache/asterix/common/utils/TransactionUtil.java b/asterix-common/src/main/java/org/apache/asterix/common/utils/TransactionUtil.java
new file mode 100644
index 0000000..97674e6
--- /dev/null
+++ b/asterix-common/src/main/java/org/apache/asterix/common/utils/TransactionUtil.java
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.common.utils;
+
+import org.apache.asterix.common.context.PrimaryIndexOperationTracker;
+import org.apache.asterix.common.transactions.ITransactionContext;
+import org.apache.asterix.common.transactions.LogRecord;
+import org.apache.asterix.common.transactions.LogType;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+
+public class TransactionUtil {
+
+    public static void formJobTerminateLogRecord(ITransactionContext txnCtx, LogRecord logRecord, boolean isCommit) {
+        logRecord.setTxnCtx(txnCtx);
+        TransactionUtil.formJobTerminateLogRecord(logRecord, txnCtx.getJobId().getId(), isCommit,
+                logRecord.getNodeId());
+    }
+
+    public static void formJobTerminateLogRecord(LogRecord logRecord, int jobId, boolean isCommit, String nodeId) {
+        logRecord.setLogType(isCommit ? LogType.JOB_COMMIT : LogType.ABORT);
+        logRecord.setDatasetId(-1);
+        logRecord.setPKHashValue(-1);
+        logRecord.setJobId(jobId);
+        logRecord.setNodeId(nodeId);
+        logRecord.computeAndSetLogSize();
+    }
+
+    public static void formFlushLogRecord(LogRecord logRecord, int datasetId, PrimaryIndexOperationTracker opTracker,
+            int numOfFlushedIndexes) {
+        formFlushLogRecord(logRecord, datasetId, opTracker, null, numOfFlushedIndexes);
+    }
+
+    public static void formFlushLogRecord(LogRecord logRecord, int datasetId, PrimaryIndexOperationTracker opTracker,
+            String nodeId, int numberOfIndexes) {
+        logRecord.setLogType(LogType.FLUSH);
+        logRecord.setJobId(-1);
+        logRecord.setDatasetId(datasetId);
+        logRecord.setOpTracker(opTracker);
+        logRecord.setNumOfFlushedIndexes(numberOfIndexes);
+        if (nodeId != null) {
+            logRecord.setNodeId(nodeId);
+        }
+        logRecord.computeAndSetLogSize();
+    }
+
+    public static void formEntityCommitLogRecord(LogRecord logRecord, ITransactionContext txnCtx, int datasetId,
+            int PKHashValue, ITupleReference PKValue, int[] PKFields) {
+        logRecord.setTxnCtx(txnCtx);
+        logRecord.setLogType(LogType.ENTITY_COMMIT);
+        logRecord.setJobId(txnCtx.getJobId().getId());
+        logRecord.setDatasetId(datasetId);
+        logRecord.setPKHashValue(PKHashValue);
+        logRecord.setPKFieldCnt(PKFields.length);
+        logRecord.setPKValue(PKValue);
+        logRecord.setPKFields(PKFields);
+        logRecord.computeAndSetPKValueSize();
+        logRecord.computeAndSetLogSize();
+    }
+
+    public static void formEntityUpsertCommitLogRecord(LogRecord logRecord, ITransactionContext txnCtx, int datasetId,
+            int PKHashValue, ITupleReference PKValue, int[] PKFields) {
+        logRecord.setTxnCtx(txnCtx);
+        logRecord.setLogType(LogType.UPSERT_ENTITY_COMMIT);
+        logRecord.setJobId(txnCtx.getJobId().getId());
+        logRecord.setDatasetId(datasetId);
+        logRecord.setPKHashValue(PKHashValue);
+        logRecord.setPKFieldCnt(PKFields.length);
+        logRecord.setPKValue(PKValue);
+        logRecord.setPKFields(PKFields);
+        logRecord.computeAndSetPKValueSize();
+        logRecord.computeAndSetLogSize();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/5dc958ce/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java b/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java
index d10ff6d..e2cf013 100755
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java
@@ -47,8 +47,6 @@ public class ExternalFunctionProvider {
 }
 
 class ExternalScalarFunction extends ExternalFunction implements IExternalScalarFunction, ICopyEvaluator {
-    private final static byte SER_NULL_TYPE_TAG = ATypeTag.NULL.serialize();
-
     public ExternalScalarFunction(IExternalFunctionInfo finfo, ICopyEvaluatorFactory args[],
             IDataOutputProvider outputProvider) throws AlgebricksException {
         super(finfo, args, outputProvider);
@@ -80,8 +78,8 @@ class ExternalScalarFunction extends ExternalFunction implements IExternalScalar
          * we want to discard a null object
          */
         byte byteOutput = ((ArrayBackedValueStorage) out).getByteArray()[0];
-        if (!argumentProvider.isValidResult() || byteOutput == SER_NULL_TYPE_TAG) {
-            out.getDataOutput().writeByte(SER_NULL_TYPE_TAG);
+        if (!argumentProvider.isValidResult() || byteOutput == ATypeTag.SERIALIZED_NULL_TYPE_TAG) {
+            out.getDataOutput().writeByte(ATypeTag.SERIALIZED_NULL_TYPE_TAG);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/5dc958ce/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjects.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjects.java b/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjects.java
index 42b0742..97fe983 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjects.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjects.java
@@ -125,8 +125,6 @@ public class JObjects {
      *
      */
     public static class JNull implements IJObject {
-        public final static byte SER_NULL_TYPE_TAG = ATypeTag.NULL.serialize();
-
         public final static JNull INSTANCE = new JNull();
 
         private JNull() {
@@ -146,7 +144,7 @@ public class JObjects {
         public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
             if (writeTypeTag) {
                 try {
-                    dataOutput.writeByte(SER_NULL_TYPE_TAG);
+                    dataOutput.writeByte(ATypeTag.SERIALIZED_NULL_TYPE_TAG);
                 } catch (IOException e) {
                     throw new HyracksDataException(e);
                 }