Repository: hive
Updated Branches:
  refs/heads/master 0ffff4040 -> 6af512457


http://git-wip-us.apache.org/repos/asf/hive/blob/6af51245/metastore/src/gen/thrift/gen-php/metastore/Types.php
----------------------------------------------------------------------
diff --git a/metastore/src/gen/thrift/gen-php/metastore/Types.php 
b/metastore/src/gen/thrift/gen-php/metastore/Types.php
index 4a3bf85..74f0028 100644
--- a/metastore/src/gen/thrift/gen-php/metastore/Types.php
+++ b/metastore/src/gen/thrift/gen-php/metastore/Types.php
@@ -12082,6 +12082,10 @@ class GetOpenTxnsResponse {
    * @var int
    */
   public $min_open_txn = null;
+  /**
+   * @var string
+   */
+  public $abortedBits = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
@@ -12092,7 +12096,7 @@ class GetOpenTxnsResponse {
           ),
         2 => array(
           'var' => 'open_txns',
-          'type' => TType::SET,
+          'type' => TType::LST,
           'etype' => TType::I64,
           'elem' => array(
             'type' => TType::I64,
@@ -12102,6 +12106,10 @@ class GetOpenTxnsResponse {
           'var' => 'min_open_txn',
           'type' => TType::I64,
           ),
+        4 => array(
+          'var' => 'abortedBits',
+          'type' => TType::STRING,
+          ),
         );
     }
     if (is_array($vals)) {
@@ -12114,6 +12122,9 @@ class GetOpenTxnsResponse {
       if (isset($vals['min_open_txn'])) {
         $this->min_open_txn = $vals['min_open_txn'];
       }
+      if (isset($vals['abortedBits'])) {
+        $this->abortedBits = $vals['abortedBits'];
+      }
     }
   }
 
@@ -12144,22 +12155,18 @@ class GetOpenTxnsResponse {
           }
           break;
         case 2:
-          if ($ftype == TType::SET) {
+          if ($ftype == TType::LST) {
             $this->open_txns = array();
             $_size413 = 0;
             $_etype416 = 0;
-            $xfer += $input->readSetBegin($_etype416, $_size413);
+            $xfer += $input->readListBegin($_etype416, $_size413);
             for ($_i417 = 0; $_i417 < $_size413; ++$_i417)
             {
               $elem418 = null;
               $xfer += $input->readI64($elem418);
-              if (is_scalar($elem418)) {
-                $this->open_txns[$elem418] = true;
-              } else {
-                $this->open_txns []= $elem418;
-              }
+              $this->open_txns []= $elem418;
             }
-            $xfer += $input->readSetEnd();
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -12171,6 +12178,13 @@ class GetOpenTxnsResponse {
             $xfer += $input->skip($ftype);
           }
           break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->abortedBits);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         default:
           $xfer += $input->skip($ftype);
           break;
@@ -12193,20 +12207,16 @@ class GetOpenTxnsResponse {
       if (!is_array($this->open_txns)) {
         throw new TProtocolException('Bad type in structure.', 
TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('open_txns', TType::SET, 2);
+      $xfer += $output->writeFieldBegin('open_txns', TType::LST, 2);
       {
-        $output->writeSetBegin(TType::I64, count($this->open_txns));
+        $output->writeListBegin(TType::I64, count($this->open_txns));
         {
-          foreach ($this->open_txns as $iter419 => $iter420)
+          foreach ($this->open_txns as $iter419)
           {
-            if (is_scalar($iter420)) {
             $xfer += $output->writeI64($iter419);
-            } else {
-            $xfer += $output->writeI64($iter420);
-            }
           }
         }
-        $output->writeSetEnd();
+        $output->writeListEnd();
       }
       $xfer += $output->writeFieldEnd();
     }
@@ -12215,6 +12225,11 @@ class GetOpenTxnsResponse {
       $xfer += $output->writeI64($this->min_open_txn);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->abortedBits !== null) {
+      $xfer += $output->writeFieldBegin('abortedBits', TType::STRING, 4);
+      $xfer += $output->writeString($this->abortedBits);
+      $xfer += $output->writeFieldEnd();
+    }
     $xfer += $output->writeFieldStop();
     $xfer += $output->writeStructEnd();
     return $xfer;
@@ -12416,14 +12431,14 @@ class OpenTxnsResponse {
         case 1:
           if ($ftype == TType::LST) {
             $this->txn_ids = array();
-            $_size421 = 0;
-            $_etype424 = 0;
-            $xfer += $input->readListBegin($_etype424, $_size421);
-            for ($_i425 = 0; $_i425 < $_size421; ++$_i425)
+            $_size420 = 0;
+            $_etype423 = 0;
+            $xfer += $input->readListBegin($_etype423, $_size420);
+            for ($_i424 = 0; $_i424 < $_size420; ++$_i424)
             {
-              $elem426 = null;
-              $xfer += $input->readI64($elem426);
-              $this->txn_ids []= $elem426;
+              $elem425 = null;
+              $xfer += $input->readI64($elem425);
+              $this->txn_ids []= $elem425;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -12451,9 +12466,9 @@ class OpenTxnsResponse {
       {
         $output->writeListBegin(TType::I64, count($this->txn_ids));
         {
-          foreach ($this->txn_ids as $iter427)
+          foreach ($this->txn_ids as $iter426)
           {
-            $xfer += $output->writeI64($iter427);
+            $xfer += $output->writeI64($iter426);
           }
         }
         $output->writeListEnd();
@@ -12592,14 +12607,14 @@ class AbortTxnsRequest {
         case 1:
           if ($ftype == TType::LST) {
             $this->txn_ids = array();
-            $_size428 = 0;
-            $_etype431 = 0;
-            $xfer += $input->readListBegin($_etype431, $_size428);
-            for ($_i432 = 0; $_i432 < $_size428; ++$_i432)
+            $_size427 = 0;
+            $_etype430 = 0;
+            $xfer += $input->readListBegin($_etype430, $_size427);
+            for ($_i431 = 0; $_i431 < $_size427; ++$_i431)
             {
-              $elem433 = null;
-              $xfer += $input->readI64($elem433);
-              $this->txn_ids []= $elem433;
+              $elem432 = null;
+              $xfer += $input->readI64($elem432);
+              $this->txn_ids []= $elem432;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -12627,9 +12642,9 @@ class AbortTxnsRequest {
       {
         $output->writeListBegin(TType::I64, count($this->txn_ids));
         {
-          foreach ($this->txn_ids as $iter434)
+          foreach ($this->txn_ids as $iter433)
           {
-            $xfer += $output->writeI64($iter434);
+            $xfer += $output->writeI64($iter433);
           }
         }
         $output->writeListEnd();
@@ -13049,15 +13064,15 @@ class LockRequest {
         case 1:
           if ($ftype == TType::LST) {
             $this->component = array();
-            $_size435 = 0;
-            $_etype438 = 0;
-            $xfer += $input->readListBegin($_etype438, $_size435);
-            for ($_i439 = 0; $_i439 < $_size435; ++$_i439)
+            $_size434 = 0;
+            $_etype437 = 0;
+            $xfer += $input->readListBegin($_etype437, $_size434);
+            for ($_i438 = 0; $_i438 < $_size434; ++$_i438)
             {
-              $elem440 = null;
-              $elem440 = new \metastore\LockComponent();
-              $xfer += $elem440->read($input);
-              $this->component []= $elem440;
+              $elem439 = null;
+              $elem439 = new \metastore\LockComponent();
+              $xfer += $elem439->read($input);
+              $this->component []= $elem439;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -13113,9 +13128,9 @@ class LockRequest {
       {
         $output->writeListBegin(TType::STRUCT, count($this->component));
         {
-          foreach ($this->component as $iter441)
+          foreach ($this->component as $iter440)
           {
-            $xfer += $iter441->write($output);
+            $xfer += $iter440->write($output);
           }
         }
         $output->writeListEnd();
@@ -14058,15 +14073,15 @@ class ShowLocksResponse {
         case 1:
           if ($ftype == TType::LST) {
             $this->locks = array();
-            $_size442 = 0;
-            $_etype445 = 0;
-            $xfer += $input->readListBegin($_etype445, $_size442);
-            for ($_i446 = 0; $_i446 < $_size442; ++$_i446)
+            $_size441 = 0;
+            $_etype444 = 0;
+            $xfer += $input->readListBegin($_etype444, $_size441);
+            for ($_i445 = 0; $_i445 < $_size441; ++$_i445)
             {
-              $elem447 = null;
-              $elem447 = new \metastore\ShowLocksResponseElement();
-              $xfer += $elem447->read($input);
-              $this->locks []= $elem447;
+              $elem446 = null;
+              $elem446 = new \metastore\ShowLocksResponseElement();
+              $xfer += $elem446->read($input);
+              $this->locks []= $elem446;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -14094,9 +14109,9 @@ class ShowLocksResponse {
       {
         $output->writeListBegin(TType::STRUCT, count($this->locks));
         {
-          foreach ($this->locks as $iter448)
+          foreach ($this->locks as $iter447)
           {
-            $xfer += $iter448->write($output);
+            $xfer += $iter447->write($output);
           }
         }
         $output->writeListEnd();
@@ -14371,17 +14386,17 @@ class HeartbeatTxnRangeResponse {
         case 1:
           if ($ftype == TType::SET) {
             $this->aborted = array();
-            $_size449 = 0;
-            $_etype452 = 0;
-            $xfer += $input->readSetBegin($_etype452, $_size449);
-            for ($_i453 = 0; $_i453 < $_size449; ++$_i453)
+            $_size448 = 0;
+            $_etype451 = 0;
+            $xfer += $input->readSetBegin($_etype451, $_size448);
+            for ($_i452 = 0; $_i452 < $_size448; ++$_i452)
             {
-              $elem454 = null;
-              $xfer += $input->readI64($elem454);
-              if (is_scalar($elem454)) {
-                $this->aborted[$elem454] = true;
+              $elem453 = null;
+              $xfer += $input->readI64($elem453);
+              if (is_scalar($elem453)) {
+                $this->aborted[$elem453] = true;
               } else {
-                $this->aborted []= $elem454;
+                $this->aborted []= $elem453;
               }
             }
             $xfer += $input->readSetEnd();
@@ -14392,17 +14407,17 @@ class HeartbeatTxnRangeResponse {
         case 2:
           if ($ftype == TType::SET) {
             $this->nosuch = array();
-            $_size455 = 0;
-            $_etype458 = 0;
-            $xfer += $input->readSetBegin($_etype458, $_size455);
-            for ($_i459 = 0; $_i459 < $_size455; ++$_i459)
+            $_size454 = 0;
+            $_etype457 = 0;
+            $xfer += $input->readSetBegin($_etype457, $_size454);
+            for ($_i458 = 0; $_i458 < $_size454; ++$_i458)
             {
-              $elem460 = null;
-              $xfer += $input->readI64($elem460);
-              if (is_scalar($elem460)) {
-                $this->nosuch[$elem460] = true;
+              $elem459 = null;
+              $xfer += $input->readI64($elem459);
+              if (is_scalar($elem459)) {
+                $this->nosuch[$elem459] = true;
               } else {
-                $this->nosuch []= $elem460;
+                $this->nosuch []= $elem459;
               }
             }
             $xfer += $input->readSetEnd();
@@ -14431,12 +14446,12 @@ class HeartbeatTxnRangeResponse {
       {
         $output->writeSetBegin(TType::I64, count($this->aborted));
         {
-          foreach ($this->aborted as $iter461 => $iter462)
+          foreach ($this->aborted as $iter460 => $iter461)
           {
-            if (is_scalar($iter462)) {
-            $xfer += $output->writeI64($iter461);
+            if (is_scalar($iter461)) {
+            $xfer += $output->writeI64($iter460);
             } else {
-            $xfer += $output->writeI64($iter462);
+            $xfer += $output->writeI64($iter461);
             }
           }
         }
@@ -14452,12 +14467,12 @@ class HeartbeatTxnRangeResponse {
       {
         $output->writeSetBegin(TType::I64, count($this->nosuch));
         {
-          foreach ($this->nosuch as $iter463 => $iter464)
+          foreach ($this->nosuch as $iter462 => $iter463)
           {
-            if (is_scalar($iter464)) {
-            $xfer += $output->writeI64($iter463);
+            if (is_scalar($iter463)) {
+            $xfer += $output->writeI64($iter462);
             } else {
-            $xfer += $output->writeI64($iter464);
+            $xfer += $output->writeI64($iter463);
             }
           }
         }
@@ -14616,17 +14631,17 @@ class CompactionRequest {
         case 6:
           if ($ftype == TType::MAP) {
             $this->properties = array();
-            $_size465 = 0;
-            $_ktype466 = 0;
-            $_vtype467 = 0;
-            $xfer += $input->readMapBegin($_ktype466, $_vtype467, $_size465);
-            for ($_i469 = 0; $_i469 < $_size465; ++$_i469)
+            $_size464 = 0;
+            $_ktype465 = 0;
+            $_vtype466 = 0;
+            $xfer += $input->readMapBegin($_ktype465, $_vtype466, $_size464);
+            for ($_i468 = 0; $_i468 < $_size464; ++$_i468)
             {
-              $key470 = '';
-              $val471 = '';
-              $xfer += $input->readString($key470);
-              $xfer += $input->readString($val471);
-              $this->properties[$key470] = $val471;
+              $key469 = '';
+              $val470 = '';
+              $xfer += $input->readString($key469);
+              $xfer += $input->readString($val470);
+              $this->properties[$key469] = $val470;
             }
             $xfer += $input->readMapEnd();
           } else {
@@ -14679,10 +14694,10 @@ class CompactionRequest {
       {
         $output->writeMapBegin(TType::STRING, TType::STRING, 
count($this->properties));
         {
-          foreach ($this->properties as $kiter472 => $viter473)
+          foreach ($this->properties as $kiter471 => $viter472)
           {
-            $xfer += $output->writeString($kiter472);
-            $xfer += $output->writeString($viter473);
+            $xfer += $output->writeString($kiter471);
+            $xfer += $output->writeString($viter472);
           }
         }
         $output->writeMapEnd();
@@ -15269,15 +15284,15 @@ class ShowCompactResponse {
         case 1:
           if ($ftype == TType::LST) {
             $this->compacts = array();
-            $_size474 = 0;
-            $_etype477 = 0;
-            $xfer += $input->readListBegin($_etype477, $_size474);
-            for ($_i478 = 0; $_i478 < $_size474; ++$_i478)
+            $_size473 = 0;
+            $_etype476 = 0;
+            $xfer += $input->readListBegin($_etype476, $_size473);
+            for ($_i477 = 0; $_i477 < $_size473; ++$_i477)
             {
-              $elem479 = null;
-              $elem479 = new \metastore\ShowCompactResponseElement();
-              $xfer += $elem479->read($input);
-              $this->compacts []= $elem479;
+              $elem478 = null;
+              $elem478 = new \metastore\ShowCompactResponseElement();
+              $xfer += $elem478->read($input);
+              $this->compacts []= $elem478;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -15305,9 +15320,9 @@ class ShowCompactResponse {
       {
         $output->writeListBegin(TType::STRUCT, count($this->compacts));
         {
-          foreach ($this->compacts as $iter480)
+          foreach ($this->compacts as $iter479)
           {
-            $xfer += $iter480->write($output);
+            $xfer += $iter479->write($output);
           }
         }
         $output->writeListEnd();
@@ -15436,14 +15451,14 @@ class AddDynamicPartitions {
         case 4:
           if ($ftype == TType::LST) {
             $this->partitionnames = array();
-            $_size481 = 0;
-            $_etype484 = 0;
-            $xfer += $input->readListBegin($_etype484, $_size481);
-            for ($_i485 = 0; $_i485 < $_size481; ++$_i485)
+            $_size480 = 0;
+            $_etype483 = 0;
+            $xfer += $input->readListBegin($_etype483, $_size480);
+            for ($_i484 = 0; $_i484 < $_size480; ++$_i484)
             {
-              $elem486 = null;
-              $xfer += $input->readString($elem486);
-              $this->partitionnames []= $elem486;
+              $elem485 = null;
+              $xfer += $input->readString($elem485);
+              $this->partitionnames []= $elem485;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -15493,9 +15508,9 @@ class AddDynamicPartitions {
       {
         $output->writeListBegin(TType::STRING, count($this->partitionnames));
         {
-          foreach ($this->partitionnames as $iter487)
+          foreach ($this->partitionnames as $iter486)
           {
-            $xfer += $output->writeString($iter487);
+            $xfer += $output->writeString($iter486);
           }
         }
         $output->writeListEnd();
@@ -15876,15 +15891,15 @@ class NotificationEventResponse {
         case 1:
           if ($ftype == TType::LST) {
             $this->events = array();
-            $_size488 = 0;
-            $_etype491 = 0;
-            $xfer += $input->readListBegin($_etype491, $_size488);
-            for ($_i492 = 0; $_i492 < $_size488; ++$_i492)
+            $_size487 = 0;
+            $_etype490 = 0;
+            $xfer += $input->readListBegin($_etype490, $_size487);
+            for ($_i491 = 0; $_i491 < $_size487; ++$_i491)
             {
-              $elem493 = null;
-              $elem493 = new \metastore\NotificationEvent();
-              $xfer += $elem493->read($input);
-              $this->events []= $elem493;
+              $elem492 = null;
+              $elem492 = new \metastore\NotificationEvent();
+              $xfer += $elem492->read($input);
+              $this->events []= $elem492;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -15912,9 +15927,9 @@ class NotificationEventResponse {
       {
         $output->writeListBegin(TType::STRUCT, count($this->events));
         {
-          foreach ($this->events as $iter494)
+          foreach ($this->events as $iter493)
           {
-            $xfer += $iter494->write($output);
+            $xfer += $iter493->write($output);
           }
         }
         $output->writeListEnd();
@@ -16086,14 +16101,14 @@ class InsertEventRequestData {
         case 2:
           if ($ftype == TType::LST) {
             $this->filesAdded = array();
-            $_size495 = 0;
-            $_etype498 = 0;
-            $xfer += $input->readListBegin($_etype498, $_size495);
-            for ($_i499 = 0; $_i499 < $_size495; ++$_i499)
+            $_size494 = 0;
+            $_etype497 = 0;
+            $xfer += $input->readListBegin($_etype497, $_size494);
+            for ($_i498 = 0; $_i498 < $_size494; ++$_i498)
             {
-              $elem500 = null;
-              $xfer += $input->readString($elem500);
-              $this->filesAdded []= $elem500;
+              $elem499 = null;
+              $xfer += $input->readString($elem499);
+              $this->filesAdded []= $elem499;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -16103,14 +16118,14 @@ class InsertEventRequestData {
         case 3:
           if ($ftype == TType::LST) {
             $this->filesAddedChecksum = array();
-            $_size501 = 0;
-            $_etype504 = 0;
-            $xfer += $input->readListBegin($_etype504, $_size501);
-            for ($_i505 = 0; $_i505 < $_size501; ++$_i505)
+            $_size500 = 0;
+            $_etype503 = 0;
+            $xfer += $input->readListBegin($_etype503, $_size500);
+            for ($_i504 = 0; $_i504 < $_size500; ++$_i504)
             {
-              $elem506 = null;
-              $xfer += $input->readString($elem506);
-              $this->filesAddedChecksum []= $elem506;
+              $elem505 = null;
+              $xfer += $input->readString($elem505);
+              $this->filesAddedChecksum []= $elem505;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -16143,9 +16158,9 @@ class InsertEventRequestData {
       {
         $output->writeListBegin(TType::STRING, count($this->filesAdded));
         {
-          foreach ($this->filesAdded as $iter507)
+          foreach ($this->filesAdded as $iter506)
           {
-            $xfer += $output->writeString($iter507);
+            $xfer += $output->writeString($iter506);
           }
         }
         $output->writeListEnd();
@@ -16160,9 +16175,9 @@ class InsertEventRequestData {
       {
         $output->writeListBegin(TType::STRING, 
count($this->filesAddedChecksum));
         {
-          foreach ($this->filesAddedChecksum as $iter508)
+          foreach ($this->filesAddedChecksum as $iter507)
           {
-            $xfer += $output->writeString($iter508);
+            $xfer += $output->writeString($iter507);
           }
         }
         $output->writeListEnd();
@@ -16380,14 +16395,14 @@ class FireEventRequest {
         case 5:
           if ($ftype == TType::LST) {
             $this->partitionVals = array();
-            $_size509 = 0;
-            $_etype512 = 0;
-            $xfer += $input->readListBegin($_etype512, $_size509);
-            for ($_i513 = 0; $_i513 < $_size509; ++$_i513)
+            $_size508 = 0;
+            $_etype511 = 0;
+            $xfer += $input->readListBegin($_etype511, $_size508);
+            for ($_i512 = 0; $_i512 < $_size508; ++$_i512)
             {
-              $elem514 = null;
-              $xfer += $input->readString($elem514);
-              $this->partitionVals []= $elem514;
+              $elem513 = null;
+              $xfer += $input->readString($elem513);
+              $this->partitionVals []= $elem513;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -16438,9 +16453,9 @@ class FireEventRequest {
       {
         $output->writeListBegin(TType::STRING, count($this->partitionVals));
         {
-          foreach ($this->partitionVals as $iter515)
+          foreach ($this->partitionVals as $iter514)
           {
-            $xfer += $output->writeString($iter515);
+            $xfer += $output->writeString($iter514);
           }
         }
         $output->writeListEnd();
@@ -16668,18 +16683,18 @@ class GetFileMetadataByExprResult {
         case 1:
           if ($ftype == TType::MAP) {
             $this->metadata = array();
-            $_size516 = 0;
-            $_ktype517 = 0;
-            $_vtype518 = 0;
-            $xfer += $input->readMapBegin($_ktype517, $_vtype518, $_size516);
-            for ($_i520 = 0; $_i520 < $_size516; ++$_i520)
+            $_size515 = 0;
+            $_ktype516 = 0;
+            $_vtype517 = 0;
+            $xfer += $input->readMapBegin($_ktype516, $_vtype517, $_size515);
+            for ($_i519 = 0; $_i519 < $_size515; ++$_i519)
             {
-              $key521 = 0;
-              $val522 = new \metastore\MetadataPpdResult();
-              $xfer += $input->readI64($key521);
-              $val522 = new \metastore\MetadataPpdResult();
-              $xfer += $val522->read($input);
-              $this->metadata[$key521] = $val522;
+              $key520 = 0;
+              $val521 = new \metastore\MetadataPpdResult();
+              $xfer += $input->readI64($key520);
+              $val521 = new \metastore\MetadataPpdResult();
+              $xfer += $val521->read($input);
+              $this->metadata[$key520] = $val521;
             }
             $xfer += $input->readMapEnd();
           } else {
@@ -16714,10 +16729,10 @@ class GetFileMetadataByExprResult {
       {
         $output->writeMapBegin(TType::I64, TType::STRUCT, 
count($this->metadata));
         {
-          foreach ($this->metadata as $kiter523 => $viter524)
+          foreach ($this->metadata as $kiter522 => $viter523)
           {
-            $xfer += $output->writeI64($kiter523);
-            $xfer += $viter524->write($output);
+            $xfer += $output->writeI64($kiter522);
+            $xfer += $viter523->write($output);
           }
         }
         $output->writeMapEnd();
@@ -16819,14 +16834,14 @@ class GetFileMetadataByExprRequest {
         case 1:
           if ($ftype == TType::LST) {
             $this->fileIds = array();
-            $_size525 = 0;
-            $_etype528 = 0;
-            $xfer += $input->readListBegin($_etype528, $_size525);
-            for ($_i529 = 0; $_i529 < $_size525; ++$_i529)
+            $_size524 = 0;
+            $_etype527 = 0;
+            $xfer += $input->readListBegin($_etype527, $_size524);
+            for ($_i528 = 0; $_i528 < $_size524; ++$_i528)
             {
-              $elem530 = null;
-              $xfer += $input->readI64($elem530);
-              $this->fileIds []= $elem530;
+              $elem529 = null;
+              $xfer += $input->readI64($elem529);
+              $this->fileIds []= $elem529;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -16875,9 +16890,9 @@ class GetFileMetadataByExprRequest {
       {
         $output->writeListBegin(TType::I64, count($this->fileIds));
         {
-          foreach ($this->fileIds as $iter531)
+          foreach ($this->fileIds as $iter530)
           {
-            $xfer += $output->writeI64($iter531);
+            $xfer += $output->writeI64($iter530);
           }
         }
         $output->writeListEnd();
@@ -16971,17 +16986,17 @@ class GetFileMetadataResult {
         case 1:
           if ($ftype == TType::MAP) {
             $this->metadata = array();
-            $_size532 = 0;
-            $_ktype533 = 0;
-            $_vtype534 = 0;
-            $xfer += $input->readMapBegin($_ktype533, $_vtype534, $_size532);
-            for ($_i536 = 0; $_i536 < $_size532; ++$_i536)
+            $_size531 = 0;
+            $_ktype532 = 0;
+            $_vtype533 = 0;
+            $xfer += $input->readMapBegin($_ktype532, $_vtype533, $_size531);
+            for ($_i535 = 0; $_i535 < $_size531; ++$_i535)
             {
-              $key537 = 0;
-              $val538 = '';
-              $xfer += $input->readI64($key537);
-              $xfer += $input->readString($val538);
-              $this->metadata[$key537] = $val538;
+              $key536 = 0;
+              $val537 = '';
+              $xfer += $input->readI64($key536);
+              $xfer += $input->readString($val537);
+              $this->metadata[$key536] = $val537;
             }
             $xfer += $input->readMapEnd();
           } else {
@@ -17016,10 +17031,10 @@ class GetFileMetadataResult {
       {
         $output->writeMapBegin(TType::I64, TType::STRING, 
count($this->metadata));
         {
-          foreach ($this->metadata as $kiter539 => $viter540)
+          foreach ($this->metadata as $kiter538 => $viter539)
           {
-            $xfer += $output->writeI64($kiter539);
-            $xfer += $output->writeString($viter540);
+            $xfer += $output->writeI64($kiter538);
+            $xfer += $output->writeString($viter539);
           }
         }
         $output->writeMapEnd();
@@ -17088,14 +17103,14 @@ class GetFileMetadataRequest {
         case 1:
           if ($ftype == TType::LST) {
             $this->fileIds = array();
-            $_size541 = 0;
-            $_etype544 = 0;
-            $xfer += $input->readListBegin($_etype544, $_size541);
-            for ($_i545 = 0; $_i545 < $_size541; ++$_i545)
+            $_size540 = 0;
+            $_etype543 = 0;
+            $xfer += $input->readListBegin($_etype543, $_size540);
+            for ($_i544 = 0; $_i544 < $_size540; ++$_i544)
             {
-              $elem546 = null;
-              $xfer += $input->readI64($elem546);
-              $this->fileIds []= $elem546;
+              $elem545 = null;
+              $xfer += $input->readI64($elem545);
+              $this->fileIds []= $elem545;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -17123,9 +17138,9 @@ class GetFileMetadataRequest {
       {
         $output->writeListBegin(TType::I64, count($this->fileIds));
         {
-          foreach ($this->fileIds as $iter547)
+          foreach ($this->fileIds as $iter546)
           {
-            $xfer += $output->writeI64($iter547);
+            $xfer += $output->writeI64($iter546);
           }
         }
         $output->writeListEnd();
@@ -17265,14 +17280,14 @@ class PutFileMetadataRequest {
         case 1:
           if ($ftype == TType::LST) {
             $this->fileIds = array();
-            $_size548 = 0;
-            $_etype551 = 0;
-            $xfer += $input->readListBegin($_etype551, $_size548);
-            for ($_i552 = 0; $_i552 < $_size548; ++$_i552)
+            $_size547 = 0;
+            $_etype550 = 0;
+            $xfer += $input->readListBegin($_etype550, $_size547);
+            for ($_i551 = 0; $_i551 < $_size547; ++$_i551)
             {
-              $elem553 = null;
-              $xfer += $input->readI64($elem553);
-              $this->fileIds []= $elem553;
+              $elem552 = null;
+              $xfer += $input->readI64($elem552);
+              $this->fileIds []= $elem552;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -17282,14 +17297,14 @@ class PutFileMetadataRequest {
         case 2:
           if ($ftype == TType::LST) {
             $this->metadata = array();
-            $_size554 = 0;
-            $_etype557 = 0;
-            $xfer += $input->readListBegin($_etype557, $_size554);
-            for ($_i558 = 0; $_i558 < $_size554; ++$_i558)
+            $_size553 = 0;
+            $_etype556 = 0;
+            $xfer += $input->readListBegin($_etype556, $_size553);
+            for ($_i557 = 0; $_i557 < $_size553; ++$_i557)
             {
-              $elem559 = null;
-              $xfer += $input->readString($elem559);
-              $this->metadata []= $elem559;
+              $elem558 = null;
+              $xfer += $input->readString($elem558);
+              $this->metadata []= $elem558;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -17324,9 +17339,9 @@ class PutFileMetadataRequest {
       {
         $output->writeListBegin(TType::I64, count($this->fileIds));
         {
-          foreach ($this->fileIds as $iter560)
+          foreach ($this->fileIds as $iter559)
           {
-            $xfer += $output->writeI64($iter560);
+            $xfer += $output->writeI64($iter559);
           }
         }
         $output->writeListEnd();
@@ -17341,9 +17356,9 @@ class PutFileMetadataRequest {
       {
         $output->writeListBegin(TType::STRING, count($this->metadata));
         {
-          foreach ($this->metadata as $iter561)
+          foreach ($this->metadata as $iter560)
           {
-            $xfer += $output->writeString($iter561);
+            $xfer += $output->writeString($iter560);
           }
         }
         $output->writeListEnd();
@@ -17462,14 +17477,14 @@ class ClearFileMetadataRequest {
         case 1:
           if ($ftype == TType::LST) {
             $this->fileIds = array();
-            $_size562 = 0;
-            $_etype565 = 0;
-            $xfer += $input->readListBegin($_etype565, $_size562);
-            for ($_i566 = 0; $_i566 < $_size562; ++$_i566)
+            $_size561 = 0;
+            $_etype564 = 0;
+            $xfer += $input->readListBegin($_etype564, $_size561);
+            for ($_i565 = 0; $_i565 < $_size561; ++$_i565)
             {
-              $elem567 = null;
-              $xfer += $input->readI64($elem567);
-              $this->fileIds []= $elem567;
+              $elem566 = null;
+              $xfer += $input->readI64($elem566);
+              $this->fileIds []= $elem566;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -17497,9 +17512,9 @@ class ClearFileMetadataRequest {
       {
         $output->writeListBegin(TType::I64, count($this->fileIds));
         {
-          foreach ($this->fileIds as $iter568)
+          foreach ($this->fileIds as $iter567)
           {
-            $xfer += $output->writeI64($iter568);
+            $xfer += $output->writeI64($iter567);
           }
         }
         $output->writeListEnd();
@@ -17783,15 +17798,15 @@ class GetAllFunctionsResponse {
         case 1:
           if ($ftype == TType::LST) {
             $this->functions = array();
-            $_size569 = 0;
-            $_etype572 = 0;
-            $xfer += $input->readListBegin($_etype572, $_size569);
-            for ($_i573 = 0; $_i573 < $_size569; ++$_i573)
+            $_size568 = 0;
+            $_etype571 = 0;
+            $xfer += $input->readListBegin($_etype571, $_size568);
+            for ($_i572 = 0; $_i572 < $_size568; ++$_i572)
             {
-              $elem574 = null;
-              $elem574 = new \metastore\Function();
-              $xfer += $elem574->read($input);
-              $this->functions []= $elem574;
+              $elem573 = null;
+              $elem573 = new \metastore\Function();
+              $xfer += $elem573->read($input);
+              $this->functions []= $elem573;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -17819,9 +17834,9 @@ class GetAllFunctionsResponse {
       {
         $output->writeListBegin(TType::STRUCT, count($this->functions));
         {
-          foreach ($this->functions as $iter575)
+          foreach ($this->functions as $iter574)
           {
-            $xfer += $iter575->write($output);
+            $xfer += $iter574->write($output);
           }
         }
         $output->writeListEnd();
@@ -17885,14 +17900,14 @@ class ClientCapabilities {
         case 1:
           if ($ftype == TType::LST) {
             $this->values = array();
-            $_size576 = 0;
-            $_etype579 = 0;
-            $xfer += $input->readListBegin($_etype579, $_size576);
-            for ($_i580 = 0; $_i580 < $_size576; ++$_i580)
+            $_size575 = 0;
+            $_etype578 = 0;
+            $xfer += $input->readListBegin($_etype578, $_size575);
+            for ($_i579 = 0; $_i579 < $_size575; ++$_i579)
             {
-              $elem581 = null;
-              $xfer += $input->readI32($elem581);
-              $this->values []= $elem581;
+              $elem580 = null;
+              $xfer += $input->readI32($elem580);
+              $this->values []= $elem580;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -17920,9 +17935,9 @@ class ClientCapabilities {
       {
         $output->writeListBegin(TType::I32, count($this->values));
         {
-          foreach ($this->values as $iter582)
+          foreach ($this->values as $iter581)
           {
-            $xfer += $output->writeI32($iter582);
+            $xfer += $output->writeI32($iter581);
           }
         }
         $output->writeListEnd();
@@ -18222,14 +18237,14 @@ class GetTablesRequest {
         case 2:
           if ($ftype == TType::LST) {
             $this->tblNames = array();
-            $_size583 = 0;
-            $_etype586 = 0;
-            $xfer += $input->readListBegin($_etype586, $_size583);
-            for ($_i587 = 0; $_i587 < $_size583; ++$_i587)
+            $_size582 = 0;
+            $_etype585 = 0;
+            $xfer += $input->readListBegin($_etype585, $_size582);
+            for ($_i586 = 0; $_i586 < $_size582; ++$_i586)
             {
-              $elem588 = null;
-              $xfer += $input->readString($elem588);
-              $this->tblNames []= $elem588;
+              $elem587 = null;
+              $xfer += $input->readString($elem587);
+              $this->tblNames []= $elem587;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -18270,9 +18285,9 @@ class GetTablesRequest {
       {
         $output->writeListBegin(TType::STRING, count($this->tblNames));
         {
-          foreach ($this->tblNames as $iter589)
+          foreach ($this->tblNames as $iter588)
           {
-            $xfer += $output->writeString($iter589);
+            $xfer += $output->writeString($iter588);
           }
         }
         $output->writeListEnd();
@@ -18345,15 +18360,15 @@ class GetTablesResult {
         case 1:
           if ($ftype == TType::LST) {
             $this->tables = array();
-            $_size590 = 0;
-            $_etype593 = 0;
-            $xfer += $input->readListBegin($_etype593, $_size590);
-            for ($_i594 = 0; $_i594 < $_size590; ++$_i594)
+            $_size589 = 0;
+            $_etype592 = 0;
+            $xfer += $input->readListBegin($_etype592, $_size589);
+            for ($_i593 = 0; $_i593 < $_size589; ++$_i593)
             {
-              $elem595 = null;
-              $elem595 = new \metastore\Table();
-              $xfer += $elem595->read($input);
-              $this->tables []= $elem595;
+              $elem594 = null;
+              $elem594 = new \metastore\Table();
+              $xfer += $elem594->read($input);
+              $this->tables []= $elem594;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -18381,9 +18396,9 @@ class GetTablesResult {
       {
         $output->writeListBegin(TType::STRUCT, count($this->tables));
         {
-          foreach ($this->tables as $iter596)
+          foreach ($this->tables as $iter595)
           {
-            $xfer += $iter596->write($output);
+            $xfer += $iter595->write($output);
           }
         }
         $output->writeListEnd();

http://git-wip-us.apache.org/repos/asf/hive/blob/6af51245/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py
----------------------------------------------------------------------
diff --git a/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py 
b/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py
index 9480c85..f26cb5b 100644
--- a/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py
+++ b/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py
@@ -8315,19 +8315,22 @@ class GetOpenTxnsResponse:
    - txn_high_water_mark
    - open_txns
    - min_open_txn
+   - abortedBits
   """
 
   thrift_spec = (
     None, # 0
     (1, TType.I64, 'txn_high_water_mark', None, None, ), # 1
-    (2, TType.SET, 'open_txns', (TType.I64,None), None, ), # 2
+    (2, TType.LIST, 'open_txns', (TType.I64,None), None, ), # 2
     (3, TType.I64, 'min_open_txn', None, None, ), # 3
+    (4, TType.STRING, 'abortedBits', None, None, ), # 4
   )
 
-  def __init__(self, txn_high_water_mark=None, open_txns=None, 
min_open_txn=None,):
+  def __init__(self, txn_high_water_mark=None, open_txns=None, 
min_open_txn=None, abortedBits=None,):
     self.txn_high_water_mark = txn_high_water_mark
     self.open_txns = open_txns
     self.min_open_txn = min_open_txn
+    self.abortedBits = abortedBits
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and 
isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is 
not None and fastbinary is not None:
@@ -8344,13 +8347,13 @@ class GetOpenTxnsResponse:
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.SET:
-          self.open_txns = set()
-          (_etype416, _size413) = iprot.readSetBegin()
+        if ftype == TType.LIST:
+          self.open_txns = []
+          (_etype416, _size413) = iprot.readListBegin()
           for _i417 in xrange(_size413):
             _elem418 = iprot.readI64()
-            self.open_txns.add(_elem418)
-          iprot.readSetEnd()
+            self.open_txns.append(_elem418)
+          iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 3:
@@ -8358,6 +8361,11 @@ class GetOpenTxnsResponse:
           self.min_open_txn = iprot.readI64()
         else:
           iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.abortedBits = iprot.readString()
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -8373,16 +8381,20 @@ class GetOpenTxnsResponse:
       oprot.writeI64(self.txn_high_water_mark)
       oprot.writeFieldEnd()
     if self.open_txns is not None:
-      oprot.writeFieldBegin('open_txns', TType.SET, 2)
-      oprot.writeSetBegin(TType.I64, len(self.open_txns))
+      oprot.writeFieldBegin('open_txns', TType.LIST, 2)
+      oprot.writeListBegin(TType.I64, len(self.open_txns))
       for iter419 in self.open_txns:
         oprot.writeI64(iter419)
-      oprot.writeSetEnd()
+      oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.min_open_txn is not None:
       oprot.writeFieldBegin('min_open_txn', TType.I64, 3)
       oprot.writeI64(self.min_open_txn)
       oprot.writeFieldEnd()
+    if self.abortedBits is not None:
+      oprot.writeFieldBegin('abortedBits', TType.STRING, 4)
+      oprot.writeString(self.abortedBits)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -8391,6 +8403,8 @@ class GetOpenTxnsResponse:
       raise TProtocol.TProtocolException(message='Required field 
txn_high_water_mark is unset!')
     if self.open_txns is None:
       raise TProtocol.TProtocolException(message='Required field open_txns is 
unset!')
+    if self.abortedBits is None:
+      raise TProtocol.TProtocolException(message='Required field abortedBits 
is unset!')
     return
 
 
@@ -8399,6 +8413,7 @@ class GetOpenTxnsResponse:
     value = (value * 31) ^ hash(self.txn_high_water_mark)
     value = (value * 31) ^ hash(self.open_txns)
     value = (value * 31) ^ hash(self.min_open_txn)
+    value = (value * 31) ^ hash(self.abortedBits)
     return value
 
   def __repr__(self):

http://git-wip-us.apache.org/repos/asf/hive/blob/6af51245/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb
----------------------------------------------------------------------
diff --git a/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb 
b/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb
index 7766071..f1aa9a6 100644
--- a/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb
+++ b/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb
@@ -1856,11 +1856,13 @@ class GetOpenTxnsResponse
   TXN_HIGH_WATER_MARK = 1
   OPEN_TXNS = 2
   MIN_OPEN_TXN = 3
+  ABORTEDBITS = 4
 
   FIELDS = {
     TXN_HIGH_WATER_MARK => {:type => ::Thrift::Types::I64, :name => 
'txn_high_water_mark'},
-    OPEN_TXNS => {:type => ::Thrift::Types::SET, :name => 'open_txns', 
:element => {:type => ::Thrift::Types::I64}},
-    MIN_OPEN_TXN => {:type => ::Thrift::Types::I64, :name => 'min_open_txn', 
:optional => true}
+    OPEN_TXNS => {:type => ::Thrift::Types::LIST, :name => 'open_txns', 
:element => {:type => ::Thrift::Types::I64}},
+    MIN_OPEN_TXN => {:type => ::Thrift::Types::I64, :name => 'min_open_txn', 
:optional => true},
+    ABORTEDBITS => {:type => ::Thrift::Types::STRING, :name => 'abortedBits', 
:binary => true}
   }
 
   def struct_fields; FIELDS; end
@@ -1868,6 +1870,7 @@ class GetOpenTxnsResponse
   def validate
     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field txn_high_water_mark is unset!') unless @txn_high_water_mark
     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field open_txns is unset!') unless @open_txns
+    raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field abortedBits is unset!') unless @abortedBits
   end
 
   ::Thrift::Struct.generate_accessors self

http://git-wip-us.apache.org/repos/asf/hive/blob/6af51245/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
----------------------------------------------------------------------
diff --git 
a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java 
b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
index 12d98c5..970038d 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
@@ -52,6 +52,7 @@ import javax.sql.DataSource;
 
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.nio.ByteBuffer;
 import java.sql.*;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
@@ -394,23 +395,27 @@ abstract class TxnHandler implements TxnStore, 
TxnStore.MutexAPI {
             "initialized, null record found in next_txn_id");
         }
         close(rs);
-        Set<Long> openList = new HashSet<Long>();
+        List<Long> openList = new ArrayList<Long>();
         //need the WHERE clause below to ensure consistent results with 
READ_COMMITTED
-        s = "select txn_id, txn_state from TXNS where txn_id <= " + hwm;
+        s = "select txn_id, txn_state from TXNS where txn_id <= " + hwm + " 
order by txn_id";
         LOG.debug("Going to execute query<" + s + ">");
         rs = stmt.executeQuery(s);
         long minOpenTxn = Long.MAX_VALUE;
+        BitSet abortedBits = new BitSet();
         while (rs.next()) {
           long txnId = rs.getLong(1);
           openList.add(txnId);
           char c = rs.getString(2).charAt(0);
           if(c == TXN_OPEN) {
             minOpenTxn = Math.min(minOpenTxn, txnId);
+          } else if (c == TXN_ABORTED) {
+            abortedBits.set(openList.size() - 1);
           }
         }
         LOG.debug("Going to rollback");
         dbConn.rollback();
-        GetOpenTxnsResponse otr = new GetOpenTxnsResponse(hwm, openList);
+        ByteBuffer byteBuffer = ByteBuffer.wrap(abortedBits.toByteArray());
+        GetOpenTxnsResponse otr = new GetOpenTxnsResponse(hwm, openList, 
byteBuffer);
         if(minOpenTxn < Long.MAX_VALUE) {
           otr.setMin_open_txn(minOpenTxn);
         }

http://git-wip-us.apache.org/repos/asf/hive/blob/6af51245/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java
----------------------------------------------------------------------
diff --git 
a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java 
b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java
index 2df88fd..6e0070b 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java
@@ -32,9 +32,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.Arrays;
+import java.util.BitSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 public class TxnUtils {
   private static final Logger LOG = LoggerFactory.getLogger(TxnUtils.class);
@@ -55,7 +55,8 @@ public class TxnUtils {
      * doesn't make sense for Snapshot Isolation.  Of course for Read 
Committed, the list should
      * inlude the latest committed set.*/
     long highWater = txns.getTxn_high_water_mark();
-    Set<Long> open = txns.getOpen_txns();
+    List<Long> open = txns.getOpen_txns();
+    BitSet abortedBits = BitSet.valueOf(txns.getAbortedBits());
     long[] exceptions = new long[open.size() - (currentTxn > 0 ? 1 : 0)];
     int i = 0;
     for(long txn: open) {
@@ -63,10 +64,10 @@ public class TxnUtils {
       exceptions[i++] = txn;
     }
     if(txns.isSetMin_open_txn()) {
-      return new ValidReadTxnList(exceptions, highWater, 
txns.getMin_open_txn());
+      return new ValidReadTxnList(exceptions, abortedBits, highWater, 
txns.getMin_open_txn());
     }
     else {
-      return new ValidReadTxnList(exceptions, highWater);
+      return new ValidReadTxnList(exceptions, abortedBits, highWater);
     }
   }
 
@@ -97,7 +98,9 @@ public class TxnUtils {
       exceptions = Arrays.copyOf(exceptions, i);
     }
     highWater = minOpenTxn == Long.MAX_VALUE ? highWater : minOpenTxn - 1;
-    return new ValidCompactorTxnList(exceptions, highWater);
+    BitSet bitSet = new BitSet(exceptions.length);
+    bitSet.set(0, bitSet.length()); // for ValidCompactorTxnList, everything 
in exceptions are aborted
+    return new ValidCompactorTxnList(exceptions, bitSet, highWater);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/hive/blob/6af51245/metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestValidCompactorTxnList.java
----------------------------------------------------------------------
diff --git 
a/metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestValidCompactorTxnList.java
 
b/metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestValidCompactorTxnList.java
index 79ccc6b..ec653ed 100644
--- 
a/metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestValidCompactorTxnList.java
+++ 
b/metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestValidCompactorTxnList.java
@@ -22,52 +22,64 @@ import org.apache.hadoop.hive.common.ValidTxnList;
 import org.junit.Assert;
 import org.junit.Test;
 
+import java.util.BitSet;
+
 public class TestValidCompactorTxnList {
 
   @Test
   public void minTxnHigh() {
-    ValidTxnList txns = new ValidCompactorTxnList(new long[]{3, 4}, 2);
+    BitSet bitSet = new BitSet(2);
+    bitSet.set(0, bitSet.length());
+    ValidTxnList txns = new ValidCompactorTxnList(new long[]{3, 4}, bitSet, 2);
     ValidTxnList.RangeResponse rsp = txns.isTxnRangeValid(7, 9);
     Assert.assertEquals(ValidTxnList.RangeResponse.NONE, rsp);
   }
 
   @Test
   public void maxTxnLow() {
-    ValidTxnList txns = new ValidCompactorTxnList(new long[]{13, 14}, 12);
+    BitSet bitSet = new BitSet(2);
+    bitSet.set(0, bitSet.length());
+    ValidTxnList txns = new ValidCompactorTxnList(new long[]{13, 14}, bitSet, 
12);
     ValidTxnList.RangeResponse rsp = txns.isTxnRangeValid(7, 9);
     Assert.assertEquals(ValidTxnList.RangeResponse.ALL, rsp);
   }
 
   @Test
   public void minTxnHighNoExceptions() {
-    ValidTxnList txns = new ValidCompactorTxnList(new long[0], 5);
+    ValidTxnList txns = new ValidCompactorTxnList(new long[0], new BitSet(), 
5);
     ValidTxnList.RangeResponse rsp = txns.isTxnRangeValid(7, 9);
     Assert.assertEquals(ValidTxnList.RangeResponse.NONE, rsp);
   }
 
   @Test
   public void maxTxnLowNoExceptions() {
-    ValidTxnList txns = new ValidCompactorTxnList(new long[0], 15);
+    ValidTxnList txns = new ValidCompactorTxnList(new long[0], new BitSet(), 
15);
     ValidTxnList.RangeResponse rsp = txns.isTxnRangeValid(7, 9);
     Assert.assertEquals(ValidTxnList.RangeResponse.ALL, rsp);
   }
 
   @Test
   public void exceptionsAllBelow() {
-    ValidTxnList txns = new ValidCompactorTxnList(new long[]{3, 6}, 3);
+    BitSet bitSet = new BitSet(2);
+    bitSet.set(0, bitSet.length());
+    ValidTxnList txns = new ValidCompactorTxnList(new long[]{3, 6}, bitSet, 3);
     ValidTxnList.RangeResponse rsp = txns.isTxnRangeValid(7, 9);
     Assert.assertEquals(ValidTxnList.RangeResponse.NONE, rsp);
   }
 
   @Test
   public void exceptionsInMidst() {
-    ValidTxnList txns = new ValidCompactorTxnList(new long[]{8}, 7);
+    BitSet bitSet = new BitSet(1);
+    bitSet.set(0, bitSet.length());
+    ValidTxnList txns = new ValidCompactorTxnList(new long[]{8}, bitSet, 7);
     ValidTxnList.RangeResponse rsp = txns.isTxnRangeValid(7, 9);
     Assert.assertEquals(ValidTxnList.RangeResponse.NONE, rsp);
   }
   @Test
   public void exceptionsAbveHighWaterMark() {
-    ValidTxnList txns = new ValidCompactorTxnList(new long[]{8, 11, 17, 29}, 
15);
+    BitSet bitSet = new BitSet(4);
+    bitSet.set(0, bitSet.length());
+    ValidTxnList txns = new ValidCompactorTxnList(new long[]{8, 11, 17, 29}, 
bitSet, 15);
     Assert.assertArrayEquals("", new long[]{8, 11}, 
txns.getInvalidTransactions());
     ValidTxnList.RangeResponse rsp = txns.isTxnRangeValid(7, 9);
     Assert.assertEquals(ValidTxnList.RangeResponse.ALL, rsp);
@@ -77,17 +89,19 @@ public class TestValidCompactorTxnList {
 
   @Test
   public void writeToString() {
-    ValidTxnList txns = new ValidCompactorTxnList(new long[]{9, 7, 10, 
Long.MAX_VALUE}, 8);
-    Assert.assertEquals("8:" + Long.MAX_VALUE + ":7", txns.writeToString());
+    BitSet bitSet = new BitSet(4);
+    bitSet.set(0, bitSet.length());
+    ValidTxnList txns = new ValidCompactorTxnList(new long[]{7, 9, 10, 
Long.MAX_VALUE}, bitSet, 8);
+    Assert.assertEquals("8:" + Long.MAX_VALUE + ":7:", txns.writeToString());
     txns = new ValidCompactorTxnList();
-    Assert.assertEquals(Long.toString(Long.MAX_VALUE) + ":" + Long.MAX_VALUE + 
":", txns.writeToString());
-    txns = new ValidCompactorTxnList(new long[0], 23);
-    Assert.assertEquals("23:" + Long.MAX_VALUE + ":", txns.writeToString());
+    Assert.assertEquals(Long.toString(Long.MAX_VALUE) + ":" + Long.MAX_VALUE + 
"::", txns.writeToString());
+    txns = new ValidCompactorTxnList(new long[0], new BitSet(), 23);
+    Assert.assertEquals("23:" + Long.MAX_VALUE + "::", txns.writeToString());
   }
 
   @Test
   public void readFromString() {
-    ValidCompactorTxnList txns = new ValidCompactorTxnList("37:" + 
Long.MAX_VALUE + ":7:9:10");
+    ValidCompactorTxnList txns = new ValidCompactorTxnList("37:" + 
Long.MAX_VALUE + "::7,9,10");
     Assert.assertEquals(37L, txns.getHighWatermark());
     Assert.assertEquals(Long.MAX_VALUE, txns.getMinOpenTxn());
     Assert.assertArrayEquals(new long[]{7L, 9L, 10L}, 
txns.getInvalidTransactions());
@@ -96,4 +110,27 @@ public class TestValidCompactorTxnList {
     Assert.assertEquals(Long.MAX_VALUE, txns.getMinOpenTxn());
     Assert.assertEquals(0, txns.getInvalidTransactions().length);
   }
+
+  @Test
+  public void testAbortedTxn() throws Exception {
+    ValidCompactorTxnList txnList = new ValidCompactorTxnList("5:4::1,2,3");
+    Assert.assertEquals(5L, txnList.getHighWatermark());
+    Assert.assertEquals(4, txnList.getMinOpenTxn());
+    Assert.assertArrayEquals(new long[]{1L, 2L, 3L}, 
txnList.getInvalidTransactions());
+  }
+
+  @Test
+  public void testAbortedRange() throws Exception {
+    ValidCompactorTxnList txnList = new ValidCompactorTxnList("11:4::5,6,7,8");
+    ValidTxnList.RangeResponse rsp = txnList.isTxnRangeAborted(1L, 3L);
+    Assert.assertEquals(ValidTxnList.RangeResponse.NONE, rsp);
+    rsp = txnList.isTxnRangeAborted(9L, 10L);
+    Assert.assertEquals(ValidTxnList.RangeResponse.NONE, rsp);
+    rsp = txnList.isTxnRangeAborted(6L, 7L);
+    Assert.assertEquals(ValidTxnList.RangeResponse.ALL, rsp);
+    rsp = txnList.isTxnRangeAborted(4L, 6L);
+    Assert.assertEquals(ValidTxnList.RangeResponse.SOME, rsp);
+    rsp = txnList.isTxnRangeAborted(6L, 13L);
+    Assert.assertEquals(ValidTxnList.RangeResponse.SOME, rsp);
+  }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/6af51245/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Cleaner.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Cleaner.java 
b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Cleaner.java
index 23b1b7f..6adface 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Cleaner.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Cleaner.java
@@ -41,6 +41,7 @@ import org.apache.hadoop.util.StringUtils;
 import java.io.IOException;
 import java.security.PrivilegedExceptionAction;
 import java.util.ArrayList;
+import java.util.BitSet;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -257,7 +258,7 @@ public class Cleaner extends CompactorThread {
        * unless ValidTxnList is "capped" at highestTxnId.
        */
       final ValidTxnList txnList = ci.highestTxnId > 0 ? 
-        new ValidReadTxnList(new long[0], ci.highestTxnId) : new 
ValidReadTxnList();
+        new ValidReadTxnList(new long[0], new BitSet(), ci.highestTxnId) : new 
ValidReadTxnList();
 
       if (runJobAsSelf(ci.runAs)) {
         removeFiles(location, txnList);

Reply via email to