You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by ta...@apache.org on 2016/05/12 22:09:58 UTC

[23/50] [abbrv] incubator-impala git commit: IMPALA-3443: Replace BOOST_FOREACH with ranged for()

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/scheduling/admission-controller.cc
----------------------------------------------------------------------
diff --git a/be/src/scheduling/admission-controller.cc b/be/src/scheduling/admission-controller.cc
index 679fcdd..70174a1 100644
--- a/be/src/scheduling/admission-controller.cc
+++ b/be/src/scheduling/admission-controller.cc
@@ -16,7 +16,6 @@
 
 #include <boost/algorithm/string.hpp>
 #include <boost/bind.hpp>
-#include <boost/foreach.hpp>
 #include <boost/mem_fn.hpp>
 #include <gutil/strings/substitute.h>
 
@@ -292,7 +291,7 @@ void AdmissionController::PoolStats::Dequeue(const QuerySchedule& schedule,
 void AdmissionController::UpdateHostMemAdmitted(const QuerySchedule& schedule,
     int64_t per_node_mem) {
   const unordered_set<TNetworkAddress>& hosts = schedule.unique_hosts();
-  BOOST_FOREACH(const TNetworkAddress& host_addr, hosts) {
+  for (const TNetworkAddress& host_addr: hosts) {
     const string host = TNetworkAddressToString(host_addr);
     VLOG_ROW << "Update admitted mem reserved for host=" << host
              << " prev=" << PrintBytes(host_mem_admitted_[host])
@@ -332,7 +331,7 @@ bool AdmissionController::HasAvailableMemResources(const QuerySchedule& schedule
 
   // Case 2:
   int64_t proc_mem_limit = GetProcMemLimit();
-  BOOST_FOREACH(const TNetworkAddress& host, schedule.unique_hosts()) {
+  for (const TNetworkAddress& host: schedule.unique_hosts()) {
     const string host_id = TNetworkAddressToString(host);
     int64_t mem_reserved = host_mem_reserved_[host_id];
     int64_t mem_admitted = host_mem_admitted_[host_id];
@@ -555,7 +554,7 @@ void AdmissionController::UpdatePoolStats(
       // and then re-compute the pool stats for any pools that changed.
       if (!delta.is_delta) {
         VLOG_ROW << "Full impala-request-queue stats update";
-        BOOST_FOREACH(PoolStatsMap::value_type& entry, pool_stats_) {
+        for (PoolStatsMap::value_type& entry: pool_stats_) {
           entry.second.ClearRemoteStats();
         }
       }
@@ -591,7 +590,7 @@ void AdmissionController::PoolStats::UpdateRemoteStats(const string& host_id,
 }
 
 void AdmissionController::HandleTopicUpdates(const vector<TTopicItem>& topic_updates) {
-  BOOST_FOREACH(const TTopicItem& item, topic_updates) {
+  for (const TTopicItem& item: topic_updates) {
     string pool_name;
     string topic_backend_id;
     if (!ParsePoolTopicKey(item.key, &pool_name, &topic_backend_id)) continue;
@@ -611,7 +610,7 @@ void AdmissionController::HandleTopicUpdates(const vector<TTopicItem>& topic_upd
 }
 
 void AdmissionController::HandleTopicDeletions(const vector<string>& topic_deletions) {
-  BOOST_FOREACH(const string& topic_key, topic_deletions) {
+  for (const string& topic_key: topic_deletions) {
     string pool_name;
     string topic_backend_id;
     if (!ParsePoolTopicKey(topic_key, &pool_name, &topic_backend_id)) continue;
@@ -626,8 +625,8 @@ void AdmissionController::PoolStats::UpdateAggregates(
   int64_t num_running = 0;
   int64_t num_queued = 0;
   int64_t mem_reserved = 0;
-  BOOST_FOREACH(const PoolStats::RemoteStatsMap::value_type& remote_entry,
-      remote_stats_) {
+  for (const PoolStats::RemoteStatsMap::value_type& remote_entry:
+       remote_stats_) {
     const string& host = remote_entry.first;
     // Skip an update from this subscriber as the information may be outdated.
     // The stats from this coordinator will be added below.
@@ -675,7 +674,7 @@ void AdmissionController::PoolStats::UpdateAggregates(
 void AdmissionController::UpdateClusterAggregates() {
   // Recompute the host mem reserved.
   HostMemMap updated_mem_reserved;
-  BOOST_FOREACH(PoolStatsMap::value_type& entry, pool_stats_) {
+  for (PoolStatsMap::value_type& entry: pool_stats_) {
     entry.second.UpdateAggregates(&updated_mem_reserved);
   }
 
@@ -683,7 +682,7 @@ void AdmissionController::UpdateClusterAggregates() {
     stringstream ss;
     ss << "Updated mem reserved for hosts:";
     int i = 0;
-    BOOST_FOREACH(const HostMemMap::value_type& e, updated_mem_reserved) {
+    for (const HostMemMap::value_type& e: updated_mem_reserved) {
       if (host_mem_reserved_[e.first] == e.second) continue;
       ss << endl << e.first << ": " << PrintBytes(host_mem_reserved_[e.first]);
       ss << " -> " << PrintBytes(e.second);
@@ -715,14 +714,14 @@ void AdmissionController::PoolStats::UpdateMemTrackerStats() {
 void AdmissionController::AddPoolUpdates(vector<TTopicDelta>* topic_updates) {
   // local_stats_ are updated eagerly except for backend_mem_reserved (which isn't used
   // for local admission control decisions). Update that now before sending local_stats_.
-  BOOST_FOREACH(PoolStatsMap::value_type& entry, pool_stats_) {
+  for (PoolStatsMap::value_type& entry: pool_stats_) {
     entry.second.UpdateMemTrackerStats();
   }
   if (pools_for_updates_.empty()) return;
   topic_updates->push_back(TTopicDelta());
   TTopicDelta& topic_delta = topic_updates->back();
   topic_delta.topic_name = IMPALA_REQUEST_QUEUE_TOPIC;
-  BOOST_FOREACH(const string& pool_name, pools_for_updates_) {
+  for (const string& pool_name: pools_for_updates_) {
     DCHECK(pool_stats_.find(pool_name) != pool_stats_.end());
     PoolStats* stats = GetPoolStats(pool_name);
     VLOG_ROW << "Sending topic update " << stats->DebugString();
@@ -744,7 +743,7 @@ void AdmissionController::DequeueLoop() {
     unique_lock<mutex> lock(admission_ctrl_lock_);
     if (done_) break;
     dequeue_cv_.wait(lock);
-    BOOST_FOREACH(const PoolConfigMap::value_type& entry, pool_config_map_) {
+    for (const PoolConfigMap::value_type& entry: pool_config_map_) {
       const string& pool_name = entry.first;
       const TPoolConfig& pool_config = entry.second;
       const int64_t max_requests = pool_config.max_requests;

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/scheduling/query-resource-mgr.cc
----------------------------------------------------------------------
diff --git a/be/src/scheduling/query-resource-mgr.cc b/be/src/scheduling/query-resource-mgr.cc
index e1e0581..5687269 100644
--- a/be/src/scheduling/query-resource-mgr.cc
+++ b/be/src/scheduling/query-resource-mgr.cc
@@ -14,7 +14,6 @@
 
 #include "scheduling/query-resource-mgr.h"
 
-#include <boost/foreach.hpp>
 #include <boost/uuid/uuid.hpp>
 #include <boost/uuid/uuid_generators.hpp>
 #include <gutil/strings/substitute.h>
@@ -64,7 +63,7 @@ void ResourceResolver::CreateLocalLlamaNodeMapping(
       ExecEnv::GetInstance()->resource_broker()->llama_nodes();
   DCHECK(!llama_nodes.empty());
   int llama_node_ix = 0;
-  BOOST_FOREACH(const TNetworkAddress& host, unique_hosts) {
+  for (const TNetworkAddress& host: unique_hosts) {
     TNetworkAddress dn_hostport = MakeNetworkAddress(llama_nodes[llama_node_ix]);
     impalad_to_dn_[host] = dn_hostport;
     dn_to_impalad_[dn_hostport] = host;

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/scheduling/query-schedule.cc
----------------------------------------------------------------------
diff --git a/be/src/scheduling/query-schedule.cc b/be/src/scheduling/query-schedule.cc
index df2ee01..7edd52d 100644
--- a/be/src/scheduling/query-schedule.cc
+++ b/be/src/scheduling/query-schedule.cc
@@ -16,7 +16,6 @@
 
 #include <sstream>
 #include <boost/algorithm/string/join.hpp>
-#include <boost/foreach.hpp>
 #include <boost/uuid/uuid.hpp>
 #include <boost/uuid/uuid_generators.hpp>
 
@@ -72,7 +71,7 @@ QuerySchedule::QuerySchedule(const TUniqueId& query_id,
   // fragment's plan's nodes list.
   for (int i = 0; i < request.fragments.size(); ++i) {
     int node_idx = 0;
-    BOOST_FOREACH(const TPlanNode& node, request.fragments[i].plan.nodes) {
+    for (const TPlanNode& node: request.fragments[i].plan.nodes) {
       if (plan_node_to_fragment_idx_.size() < node.node_id + 1) {
         plan_node_to_fragment_idx_.resize(node.node_id + 1);
         plan_node_to_plan_node_idx_.resize(node.node_id + 1);
@@ -195,7 +194,7 @@ void QuerySchedule::PrepareReservationRequest(const string& pool, const string&
   DCHECK(resource_resolver_.get() != NULL)
       << "resource_resolver_ is NULL, didn't call SetUniqueHosts()?";
   random_generator uuid_generator;
-  BOOST_FOREACH(const TNetworkAddress& host, unique_hosts_) {
+  for (const TNetworkAddress& host: unique_hosts_) {
     reservation_request_.resources.push_back(llama::TResource());
     llama::TResource& resource = reservation_request_.resources.back();
     uuid id = uuid_generator();
@@ -217,8 +216,8 @@ Status QuerySchedule::ValidateReservation() {
   if (!HasReservation()) return Status("Query schedule does not have a reservation.");
   vector<TNetworkAddress> hosts_missing_resources;
   ResourceResolver resolver(unique_hosts_);
-  BOOST_FOREACH(const FragmentExecParams& params, fragment_exec_params_) {
-    BOOST_FOREACH(const TNetworkAddress& host, params.hosts) {
+  for (const FragmentExecParams& params: fragment_exec_params_) {
+    for (const TNetworkAddress& host: params.hosts) {
       // Ignore the coordinator host which is not contained in unique_hosts_.
       if (unique_hosts_.find(host) == unique_hosts_.end()) continue;
       TNetworkAddress resource_hostport;

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/scheduling/simple-scheduler.cc
----------------------------------------------------------------------
diff --git a/be/src/scheduling/simple-scheduler.cc b/be/src/scheduling/simple-scheduler.cc
index ad22f71..e6121ed 100644
--- a/be/src/scheduling/simple-scheduler.cc
+++ b/be/src/scheduling/simple-scheduler.cc
@@ -20,7 +20,6 @@
 #include <boost/algorithm/string/join.hpp>
 #include <boost/bind.hpp>
 #include <boost/mem_fn.hpp>
-#include <boost/foreach.hpp>
 #include <gutil/strings/substitute.h>
 
 #include "common/logging.h"
@@ -242,7 +241,7 @@ void SimpleScheduler::BackendsUrlCallback(const Webserver::ArgumentMap& args,
   BackendList backends;
   GetAllKnownBackends(&backends);
   Value backends_list(kArrayType);
-  BOOST_FOREACH(const BackendList::value_type& backend, backends) {
+  for (const BackendList::value_type& backend: backends) {
     Value str(TNetworkAddressToString(backend.address).c_str(), document->GetAllocator());
     backends_list.PushBack(str, document->GetAllocator());
   }
@@ -276,7 +275,7 @@ void SimpleScheduler::UpdateMembership(
       }
 
       // Process new entries to the topic
-      BOOST_FOREACH(const TTopicItem& item, delta.topic_entries) {
+      for (const TTopicItem& item: delta.topic_entries) {
         TBackendDescriptor be_desc;
         // Benchmarks have suggested that this method can deserialize
         // ~10m messages per second, so no immediate need to consider optimisation.
@@ -304,7 +303,7 @@ void SimpleScheduler::UpdateMembership(
         current_membership_.insert(make_pair(item.key, be_desc));
       }
       // Process deletions from the topic
-      BOOST_FOREACH(const string& backend_id, delta.topic_deletions) {
+      for (const string& backend_id: delta.topic_deletions) {
         if (current_membership_.find(backend_id) != current_membership_.end()) {
           const TBackendDescriptor& be_desc = current_membership_[backend_id];
           backend_ip_map_.erase(be_desc.address.hostname);
@@ -409,7 +408,7 @@ Status SimpleScheduler::GetBackend(const TNetworkAddress& data_location,
 void SimpleScheduler::GetAllKnownBackends(BackendList* backends) {
   lock_guard<mutex> lock(backend_map_lock_);
   backends->clear();
-  BOOST_FOREACH(const BackendMap::value_type& backend_list, backend_map_) {
+  for (const BackendMap::value_type& backend_list: backend_map_) {
     backends->insert(backends->end(), backend_list.second.begin(),
                      backend_list.second.end());
   }
@@ -477,7 +476,7 @@ Status SimpleScheduler::ComputeScanRangeAssignment(
   int64_t local_bytes = 0L;
   int64_t cached_bytes = 0L;
 
-  BOOST_FOREACH(const TScanRangeLocations& scan_range_locations, locations) {
+  for (const TScanRangeLocations& scan_range_locations: locations) {
     // Assign scans to replica with smallest memory distance.
     TReplicaPreference::type min_distance = TReplicaPreference::REMOTE;
     // Assign this scan range to the host w/ the fewest assigned bytes.
@@ -490,7 +489,7 @@ Status SimpleScheduler::ComputeScanRangeAssignment(
     // Equivalent replicas have the same adjusted memory distance and the same number of
     // assigned bytes.
     int num_equivalent_replicas = 0;
-    BOOST_FOREACH(const TScanRangeLocation& location, scan_range_locations.locations) {
+    for (const TScanRangeLocation& location: scan_range_locations.locations) {
       TReplicaPreference::type memory_distance = TReplicaPreference::REMOTE;
       const TNetworkAddress& replica_host = host_list[location.host_idx];
       if (HasLocalBackend(replica_host)) {
@@ -550,7 +549,7 @@ Status SimpleScheduler::ComputeScanRangeAssignment(
         is_cached = location.is_cached;
         remote_read = min_distance == TReplicaPreference::REMOTE;
       }
-    }  // end of BOOST_FOREACH
+    }  // end of for()
 
     int64_t scan_range_length = 0;
     if (scan_range_locations.scan_range.__isset.hdfs_file_split) {
@@ -606,17 +605,17 @@ Status SimpleScheduler::ComputeScanRangeAssignment(
     if (remote_hosts.size() > 0) {
       stringstream remote_node_log;
       remote_node_log << "Remote data node list: ";
-      BOOST_FOREACH(const TNetworkAddress& remote_host, remote_hosts) {
+      for (const TNetworkAddress& remote_host: remote_hosts) {
         remote_node_log << remote_host << " ";
       }
       VLOG_FILE << remote_node_log.str();
     }
 
-    BOOST_FOREACH(FragmentScanRangeAssignment::value_type& entry, *assignment) {
+    for (FragmentScanRangeAssignment::value_type& entry: *assignment) {
       VLOG_FILE << "ScanRangeAssignment: server=" << ThriftDebugString(entry.first);
-      BOOST_FOREACH(PerNodeScanRanges::value_type& per_node_scan_ranges, entry.second) {
+      for (PerNodeScanRanges::value_type& per_node_scan_ranges: entry.second) {
         stringstream str;
-        BOOST_FOREACH(TScanRangeParams& params, per_node_scan_ranges.second) {
+        for (TScanRangeParams& params: per_node_scan_ranges.second) {
           str << ThriftDebugString(params) << " ";
         }
         VLOG_FILE << "node_id=" << per_node_scan_ranges.first << " ranges=" << str.str();
@@ -632,7 +631,7 @@ void SimpleScheduler::ComputeFragmentExecParams(const TQueryExecRequest& exec_re
   vector<FragmentExecParams>* fragment_exec_params = schedule->exec_params();
   // assign instance ids
   int64_t num_fragment_instances = 0;
-  BOOST_FOREACH(FragmentExecParams& params, *fragment_exec_params) {
+  for (FragmentExecParams& params: *fragment_exec_params) {
     for (int j = 0; j < params.hosts.size(); ++j) {
       int instance_num = num_fragment_instances + j;
       // we add instance_num to query_id.lo to create a globally-unique instance id
@@ -762,7 +761,7 @@ void SimpleScheduler::ComputeFragmentHosts(const TQueryExecRequest& exec_request
   }
 
   unordered_set<TNetworkAddress> unique_hosts;
-  BOOST_FOREACH(const FragmentExecParams& exec_params, *fragment_exec_params) {
+  for (const FragmentExecParams& exec_params: *fragment_exec_params) {
     unique_hosts.insert(exec_params.hosts.begin(), exec_params.hosts.end());
   }
 
@@ -821,7 +820,7 @@ void SimpleScheduler::GetScanHosts(TPlanNodeId scan_id,
   }
 
   // Get the list of impalad host from scan_range_assignment_
-  BOOST_FOREACH(const FragmentScanRangeAssignment::value_type& scan_range_assignment,
+  for (const FragmentScanRangeAssignment::value_type& scan_range_assignment:
       params.scan_range_assignment) {
     scan_hosts->push_back(scan_range_assignment.first);
   }

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/service/impala-beeswax-server.cc
----------------------------------------------------------------------
diff --git a/be/src/service/impala-beeswax-server.cc b/be/src/service/impala-beeswax-server.cc
index 9a880c0..478c1ea 100644
--- a/be/src/service/impala-beeswax-server.cc
+++ b/be/src/service/impala-beeswax-server.cc
@@ -21,7 +21,6 @@
 #include <jni.h>
 #include <thrift/protocol/TDebugProtocol.h>
 #include <gtest/gtest.h>
-#include <boost/foreach.hpp>
 #include <boost/bind.hpp>
 #include <boost/algorithm/string.hpp>
 #include <gperftools/heap-profiler.h>
@@ -533,7 +532,7 @@ Status ImpalaServer::QueryToTQueryContext(const Query& query,
 
   // Override default query options with Query.Configuration
   if (query.__isset.configuration) {
-    BOOST_FOREACH(const string& option, query.configuration) {
+    for (const string& option: query.configuration) {
       RETURN_IF_ERROR(ParseQueryOptions(option, &query_ctx->request.query_options,
           &set_query_options_mask));
     }
@@ -638,8 +637,8 @@ Status ImpalaServer::CloseInsertInternal(const TUniqueId& query_id,
       // need to revisit this, since that might lead us to insert a row without a
       // coordinator, depending on how we choose to drive the table sink.
       if (exec_state->coord() != NULL) {
-        BOOST_FOREACH(const PartitionStatusMap::value_type& v,
-            exec_state->coord()->per_partition_status()) {
+        for (const PartitionStatusMap::value_type& v:
+             exec_state->coord()->per_partition_status()) {
           const pair<string, TInsertPartitionStatus> partition_status = v;
           insert_result->rows_appended[partition_status.first] =
               partition_status.second.num_appended_rows;

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/service/impala-hs2-server.cc
----------------------------------------------------------------------
diff --git a/be/src/service/impala-hs2-server.cc b/be/src/service/impala-hs2-server.cc
index 5ebd38c..1dc4982 100644
--- a/be/src/service/impala-hs2-server.cc
+++ b/be/src/service/impala-hs2-server.cc
@@ -22,7 +22,6 @@
 #include <jni.h>
 #include <thrift/protocol/TDebugProtocol.h>
 #include <gtest/gtest.h>
-#include <boost/foreach.hpp>
 #include <boost/bind.hpp>
 #include <boost/algorithm/string.hpp>
 #include <gperftools/heap-profiler.h>
@@ -89,7 +88,7 @@ int64_t ByteSize(const thrift::TColumnValue& val) {
 
 static int64_t ByteSize(const thrift::TRow& row) {
   int64_t bytes = sizeof(row);
-  BOOST_FOREACH(const thrift::TColumnValue& c, row.colVals) {
+  for (const thrift::TColumnValue& c: row.colVals) {
     bytes += ByteSize(c);
   }
   return bytes;
@@ -248,7 +247,7 @@ class ImpalaServer::HS2ColumnarResultSet : public ImpalaServer::QueryResultSet {
   virtual int64_t ByteSize(int start_idx, int num_rows) {
     const int end = min(start_idx + num_rows, (int)size());
     int64_t bytes = 0L;
-    BOOST_FOREACH(const thrift::TColumn& c, result_set_->columns) {
+    for (const thrift::TColumn& c: result_set_->columns) {
       bytes += TColumnByteSize(c, start_idx, end);
     }
     return bytes;
@@ -271,7 +270,7 @@ class ImpalaServer::HS2ColumnarResultSet : public ImpalaServer::QueryResultSet {
 
   void InitColumns() {
     result_set_->__isset.columns = true;
-    BOOST_FOREACH(const TColumn& col, metadata_.columns) {
+    for (const TColumn& col: metadata_.columns) {
       DCHECK(col.columnType.types.size() == 1) <<
           "Structured columns unsupported in HS2 interface";
       thrift::TColumn column;
@@ -610,7 +609,7 @@ void ImpalaServer::OpenSession(TOpenSessionResp& return_val,
   state->database = "default";
   state->session_timeout = FLAGS_idle_session_timeout;
   typedef map<string, string> ConfigurationMap;
-  BOOST_FOREACH(const ConfigurationMap::value_type& v, request.configuration) {
+  for (const ConfigurationMap::value_type& v: request.configuration) {
     if (iequals(v.first, "use:database")) {
       state->database = v.second;
     } else if (iequals(v.first, "idle_session_timeout")) {

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/service/impala-server-callbacks.cc
----------------------------------------------------------------------
diff --git a/be/src/service/impala-server-callbacks.cc b/be/src/service/impala-server-callbacks.cc
index 89555e4..27806f5 100644
--- a/be/src/service/impala-server-callbacks.cc
+++ b/be/src/service/impala-server-callbacks.cc
@@ -114,7 +114,7 @@ void ImpalaServer::HadoopVarzUrlCallback(const Webserver::ArgumentMap& args,
 
   Value configs(kArrayType);
   typedef map<string, string> ConfigMap;
-  BOOST_FOREACH(const ConfigMap::value_type& config, response.configs) {
+  for (const ConfigMap::value_type& config: response.configs) {
     Value key(config.first.c_str(), document->GetAllocator());
     Value value(config.second.c_str(), document->GetAllocator());
     Value config_json(kObjectType);
@@ -204,7 +204,7 @@ void ImpalaServer::InflightQueryIdsUrlCallback(const Webserver::ArgumentMap& arg
     Document* document) {
   lock_guard<mutex> l(query_exec_state_map_lock_);
   stringstream ss;
-  BOOST_FOREACH(const QueryExecStateMap::value_type& exec_state, query_exec_state_map_) {
+  for (const QueryExecStateMap::value_type& exec_state: query_exec_state_map_) {
     ss << exec_state.second->query_id() << "\n";
   }
   document->AddMember(Webserver::ENABLE_RAW_JSON_KEY, true, document->GetAllocator());
@@ -297,8 +297,7 @@ void ImpalaServer::QueryStateUrlCallback(const Webserver::ArgumentMap& args,
   set<QueryStateRecord, QueryStateRecord> sorted_query_records;
   {
     lock_guard<mutex> l(query_exec_state_map_lock_);
-    BOOST_FOREACH(
-        const QueryExecStateMap::value_type& exec_state, query_exec_state_map_) {
+    for(const QueryExecStateMap::value_type& exec_state: query_exec_state_map_) {
       // TODO: Do this in the browser so that sorts on other keys are possible.
       sorted_query_records.insert(QueryStateRecord(*exec_state.second));
     }
@@ -306,7 +305,7 @@ void ImpalaServer::QueryStateUrlCallback(const Webserver::ArgumentMap& args,
 
   Value in_flight_queries(kArrayType);
   int64_t num_waiting_queries = 0;
-  BOOST_FOREACH(const QueryStateRecord& record, sorted_query_records) {
+  for (const QueryStateRecord& record: sorted_query_records) {
     Value record_json(kObjectType);
     QueryStateToJson(record, &record_json, document);
 
@@ -332,7 +331,7 @@ void ImpalaServer::QueryStateUrlCallback(const Webserver::ArgumentMap& args,
   Value completed_queries(kArrayType);
   {
     lock_guard<mutex> l(query_log_lock_);
-    BOOST_FOREACH(const QueryStateRecord& log_entry, query_log_) {
+    for (const QueryStateRecord& log_entry: query_log_) {
       Value record_json(kObjectType);
       QueryStateToJson(log_entry, &record_json, document);
       completed_queries.PushBack(record_json, document->GetAllocator());
@@ -345,7 +344,7 @@ void ImpalaServer::QueryStateUrlCallback(const Webserver::ArgumentMap& args,
   Value query_locations(kArrayType);
   {
     lock_guard<mutex> l(query_locations_lock_);
-    BOOST_FOREACH(const QueryLocations::value_type& location, query_locations_) {
+    for (const QueryLocations::value_type& location: query_locations_) {
       Value location_json(kObjectType);
       Value location_name(lexical_cast<string>(location.first).c_str(),
           document->GetAllocator());
@@ -363,7 +362,7 @@ void ImpalaServer::SessionsUrlCallback(const Webserver::ArgumentMap& args,
     Document* document) {
   lock_guard<mutex> l(session_state_map_lock_);
   Value sessions(kArrayType);
-  BOOST_FOREACH(const SessionStateMap::value_type& session, session_state_map_) {
+  for (const SessionStateMap::value_type& session: session_state_map_) {
     shared_ptr<SessionState> state = session.second;
     Value session_json(kObjectType);
     Value type(PrintTSessionType(state->session_type).c_str(),
@@ -424,7 +423,7 @@ void ImpalaServer::CatalogUrlCallback(const Webserver::ArgumentMap& args,
   }
 
   Value databases(kArrayType);
-  BOOST_FOREACH(const TDatabase& db, get_dbs_result.dbs) {
+  for (const TDatabase& db: get_dbs_result.dbs) {
     Value database(kObjectType);
     Value str(db.db_name.c_str(), document->GetAllocator());
     database.AddMember("name", str, document->GetAllocator());
@@ -439,7 +438,7 @@ void ImpalaServer::CatalogUrlCallback(const Webserver::ArgumentMap& args,
     }
 
     Value table_array(kArrayType);
-    BOOST_FOREACH(const string& table, get_table_results.tables) {
+    for (const string& table: get_table_results.tables) {
       Value table_obj(kObjectType);
       Value fq_name(Substitute("$0.$1", db.db_name, table).c_str(),
           document->GetAllocator());
@@ -503,7 +502,7 @@ void PlanToJsonHelper(const map<TPlanNodeId, TPlanNodeExecSummary>& summaries,
     int64_t cardinality = 0;
     int64_t max_time = 0L;
     int64_t total_time = 0;
-    BOOST_FOREACH(const TExecStats& stat, summary->second.exec_stats) {
+    for (const TExecStats& stat: summary->second.exec_stats) {
       if (summary->second.is_broadcast) {
         // Avoid multiple-counting for recipients of broadcasts.
         cardinality = ::max(cardinality, stat.cardinality);
@@ -576,19 +575,19 @@ void PlanToJson(const vector<TPlanFragment>& fragments, const TExecSummary& summ
   // Build a map from id to label so that we can resolve the targets of data-stream sinks
   // and connect plan fragments.
   map<TPlanNodeId, string> label_map;
-  BOOST_FOREACH(const TPlanFragment& fragment, fragments) {
-    BOOST_FOREACH(const TPlanNode& node, fragment.plan.nodes) {
+  for (const TPlanFragment& fragment: fragments) {
+    for (const TPlanNode& node: fragment.plan.nodes) {
       label_map[node.node_id] = node.label;
     }
   }
 
   map<TPlanNodeId, TPlanNodeExecSummary> exec_summaries;
-  BOOST_FOREACH(const TPlanNodeExecSummary& s, summary.nodes) {
+  for (const TPlanNodeExecSummary& s: summary.nodes) {
     exec_summaries[s.node_id] = s;
   }
 
   Value nodes(kArrayType);
-  BOOST_FOREACH(const TPlanFragment& fragment, fragments) {
+  for (const TPlanFragment& fragment: fragments) {
     Value plan_fragment(kObjectType);
     vector<TPlanNode>::const_iterator it = fragment.plan.nodes.begin();
     PlanToJsonHelper(exec_summaries, fragment.plan.nodes, &it, document, &plan_fragment);

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/service/impala-server.cc
----------------------------------------------------------------------
diff --git a/be/src/service/impala-server.cc b/be/src/service/impala-server.cc
index 8c8ebcf..2d314b2 100644
--- a/be/src/service/impala-server.cc
+++ b/be/src/service/impala-server.cc
@@ -21,7 +21,6 @@
 #include <boost/filesystem.hpp>
 #include <boost/date_time/posix_time/posix_time_types.hpp>
 #include <boost/unordered_set.hpp>
-#include <boost/foreach.hpp>
 #include <boost/bind.hpp>
 #include <boost/algorithm/string.hpp>
 #include <boost/lexical_cast.hpp>
@@ -286,7 +285,7 @@ ImpalaServer::ImpalaServer(ExecEnv* exec_env)
     split(proxy_user_config, FLAGS_authorized_proxy_user_config, is_any_of(";"),
         token_compress_on);
     if (proxy_user_config.size() > 0) {
-      BOOST_FOREACH(const string& config, proxy_user_config) {
+      for (const string& config: proxy_user_config) {
         size_t pos = config.find("=");
         if (pos == string::npos) {
           CLEAN_EXIT_WITH_ERROR(Substitute("Invalid proxy user configuration. No "
@@ -462,7 +461,7 @@ Status ImpalaServer::LogAuditRecord(const ImpalaServer::QueryExecState& exec_sta
   writer.String(stmt.c_str());
   writer.String("catalog_objects");
   writer.StartArray();
-  BOOST_FOREACH(const TAccessEvent& event, request.access_events) {
+  for (const TAccessEvent& event: request.access_events) {
     writer.StartObject();
     writer.String("name");
     writer.String(event.name.c_str());
@@ -830,7 +829,7 @@ Status ImpalaServer::ExecuteInternal(
         (*exec_state)->schedule()->unique_hosts();
     if (!unique_hosts.empty()) {
       lock_guard<mutex> l(query_locations_lock_);
-      BOOST_FOREACH(const TNetworkAddress& port, unique_hosts) {
+      for (const TNetworkAddress& port: unique_hosts) {
         query_locations_[port].insert((*exec_state)->query_id());
       }
     }
@@ -963,7 +962,7 @@ Status ImpalaServer::UnregisterQuery(const TUniqueId& query_id, bool check_infli
         exec_state->schedule()->unique_hosts();
     if (!unique_hosts.empty()) {
       lock_guard<mutex> l(query_locations_lock_);
-      BOOST_FOREACH(const TNetworkAddress& hostport, unique_hosts) {
+      for (const TNetworkAddress& hostport: unique_hosts) {
         // Query may have been removed already by cancellation path. In particular, if
         // node to fail was last sender to an exchange, the coordinator will realise and
         // fail the query at the same time the failure detection path does the same
@@ -984,7 +983,7 @@ Status ImpalaServer::UpdateCatalogMetrics() {
   RETURN_IF_ERROR(exec_env_->frontend()->GetDbs(NULL, NULL, &dbs));
   ImpaladMetrics::CATALOG_NUM_DBS->set_value(dbs.dbs.size());
   ImpaladMetrics::CATALOG_NUM_TABLES->set_value(0L);
-  BOOST_FOREACH(const TDatabase& db, dbs.dbs) {
+  for (const TDatabase& db: dbs.dbs) {
     TGetTablesResult table_names;
     RETURN_IF_ERROR(exec_env_->frontend()->GetTableNames(db.db_name, NULL, NULL,
         &table_names));
@@ -1046,7 +1045,7 @@ Status ImpalaServer::CloseSessionInternal(const TUniqueId& session_id,
   }
   // Unregister all open queries from this session.
   Status status("Session closed");
-  BOOST_FOREACH(const TUniqueId& query_id, inflight_queries) {
+  for (const TUniqueId& query_id: inflight_queries) {
     UnregisterQuery(query_id, false, &status);
   }
   // Reconfigure the poll period of session_timeout_thread_ if necessary.
@@ -1228,7 +1227,7 @@ Status ImpalaServer::AuthorizeProxyUser(const string& user, const string& do_as_
   ProxyUserMap::const_iterator proxy_user =
       authorized_proxy_user_config_.find(short_user);
   if (proxy_user != authorized_proxy_user_config_.end()) {
-    BOOST_FOREACH(const string& user, proxy_user->second) {
+    for (const string& user: proxy_user->second) {
       if (user == "*" || user == do_as_user) return Status::OK();
     }
   }
@@ -1251,7 +1250,7 @@ void ImpalaServer::CatalogUpdateCallback(
     // Process all Catalog updates (new and modified objects) and determine what the
     // new catalog version will be.
     int64_t new_catalog_version = catalog_update_info_.catalog_version;
-    BOOST_FOREACH(const TTopicItem& item, delta.topic_entries) {
+    for (const TTopicItem& item: delta.topic_entries) {
       uint32_t len = item.value.size();
       TCatalogObject catalog_object;
       Status status = DeserializeThriftMsg(reinterpret_cast<const uint8_t*>(
@@ -1286,7 +1285,7 @@ void ImpalaServer::CatalogUpdateCallback(
 
     // Process all Catalog deletions (dropped objects). We only know the keys (object
     // names) so must parse each key to determine the TCatalogObject.
-    BOOST_FOREACH(const string& key, delta.topic_deletions) {
+    for (const string& key: delta.topic_deletions) {
       LOG(INFO) << "Catalog topic entry deletion: " << key;
       TCatalogObject catalog_object;
       Status status = TCatalogObjectFromEntryKey(key, &catalog_object);
@@ -1340,7 +1339,7 @@ void ImpalaServer::CatalogUpdateCallback(
       UpdateCatalogMetrics();
       // Remove all dropped objects from the library cache.
       // TODO: is this expensive? We'd like to process heartbeats promptly.
-      BOOST_FOREACH(TCatalogObject& object, dropped_objects) {
+      for (TCatalogObject& object: dropped_objects) {
         if (object.type == TCatalogObjectType::FUNCTION) {
           LibCache::instance()->RemoveEntry(object.fn.hdfs_location);
         } else if (object.type == TCatalogObjectType::DATA_SOURCE) {
@@ -1463,7 +1462,7 @@ void ImpalaServer::MembershipCallback(
     if (!delta.is_delta) known_backends_.clear();
 
     // Process membership additions.
-    BOOST_FOREACH(const TTopicItem& item, delta.topic_entries) {
+    for (const TTopicItem& item: delta.topic_entries) {
       uint32_t len = item.value.size();
       TBackendDescriptor backend_descriptor;
       Status status = DeserializeThriftMsg(reinterpret_cast<const uint8_t*>(
@@ -1476,7 +1475,7 @@ void ImpalaServer::MembershipCallback(
       known_backends_.insert(make_pair(item.key, backend_descriptor));
     }
     // Process membership deletions.
-    BOOST_FOREACH(const string& backend_id, delta.topic_deletions) {
+    for (const string& backend_id: delta.topic_deletions) {
       known_backends_.erase(backend_id);
     }
 
@@ -1487,7 +1486,7 @@ void ImpalaServer::MembershipCallback(
     TUpdateMembershipRequest update_req;
     bool any_changes = !delta.topic_entries.empty() || !delta.topic_deletions.empty() ||
         !delta.is_delta;
-    BOOST_FOREACH(const BackendDescriptorMap::value_type& backend, known_backends_) {
+    for (const BackendDescriptorMap::value_type& backend: known_backends_) {
       current_membership.insert(backend.second.address);
       if (any_changes) {
         update_req.hostnames.insert(backend.second.address.hostname);
@@ -1658,7 +1657,7 @@ void ImpalaServer::ConnectionEnd(
   LOG(INFO) << "Connection from client " << connection_context.network_address
             << " closed, closing " << it->second.size() << " associated session(s)";
 
-  BOOST_FOREACH(const TUniqueId& session_id, it->second) {
+  for (const TUniqueId& session_id: it->second) {
     Status status = CloseSessionInternal(session_id, true);
     if (!status.ok()) {
       LOG(WARNING) << "Error closing session " << session_id << ": "
@@ -1695,7 +1694,7 @@ void ImpalaServer::ExpireSessions() {
     VLOG(3) << "Session expiration thread waking up";
     // TODO: If holding session_state_map_lock_ for the duration of this loop is too
     // expensive, consider a priority queue.
-    BOOST_FOREACH(SessionStateMap::value_type& session_state, session_state_map_) {
+    for (SessionStateMap::value_type& session_state: session_state_map_) {
       unordered_set<TUniqueId> inflight_queries;
       {
         lock_guard<mutex> state_lock(session_state.second->lock);
@@ -1719,7 +1718,7 @@ void ImpalaServer::ExpireSessions() {
       }
       // Unregister all open queries from this session.
       Status status("Session expired due to inactivity");
-      BOOST_FOREACH(const TUniqueId& query_id, inflight_queries) {
+      for (const TUniqueId& query_id: inflight_queries) {
         cancellation_thread_pool_->Offer(CancellationWork(query_id, status, true));
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/service/query-exec-state.cc
----------------------------------------------------------------------
diff --git a/be/src/service/query-exec-state.cc b/be/src/service/query-exec-state.cc
index 18c1faf..4f97143 100644
--- a/be/src/service/query-exec-state.cc
+++ b/be/src/service/query-exec-state.cc
@@ -238,7 +238,7 @@ Status ImpalaServer::QueryExecState::ExecLocalCatalogOp(
       vector<string> names, comments;
       names.reserve(dbs.dbs.size());
       comments.reserve(dbs.dbs.size());
-      BOOST_FOREACH(const TDatabase& db, dbs.dbs) {
+      for (const TDatabase& db: dbs.dbs) {
         names.push_back(db.db_name);
         comments.push_back(db.metastore_db.description);
       }
@@ -833,7 +833,7 @@ Status ImpalaServer::QueryExecState::GetRowValue(TupleRow* row, vector<void*>* r
 
 void ImpalaServer::QueryExecState::Cancel(const Status* cause) {
   // Cancel and close child queries before cancelling parent.
-  BOOST_FOREACH(ChildQuery& child_query, child_queries_) {
+  for (ChildQuery& child_query: child_queries_) {
     child_query.Cancel();
   }
 
@@ -971,8 +971,7 @@ void ImpalaServer::QueryExecState::SetCreateTableAsSelectResultSet() {
   // operation.
   if (catalog_op_executor_->ddl_exec_response()->new_table_created) {
     DCHECK(coord_.get());
-    BOOST_FOREACH(
-        const PartitionStatusMap::value_type& p, coord_->per_partition_status()) {
+    for (const PartitionStatusMap::value_type& p: coord_->per_partition_status()) {
       total_num_rows_inserted += p.second.num_appended_rows;
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/service/query-options.cc
----------------------------------------------------------------------
diff --git a/be/src/service/query-options.cc b/be/src/service/query-options.cc
index 08c6625..8f5a682 100644
--- a/be/src/service/query-options.cc
+++ b/be/src/service/query-options.cc
@@ -22,7 +22,6 @@
 #include "gen-cpp/ImpalaInternalService_types.h"
 
 #include <sstream>
-#include <boost/foreach.hpp>
 #include <boost/algorithm/string.hpp>
 #include <gutil/strings/substitute.h>
 
@@ -409,7 +408,7 @@ Status impala::ParseQueryOptions(const string& options, TQueryOptions* query_opt
   if (options.length() == 0) return Status::OK();
   vector<string> kv_pairs;
   split(kv_pairs, options, is_any_of(","), token_compress_on);
-  BOOST_FOREACH(string& kv_string, kv_pairs) {
+  for (string& kv_string: kv_pairs) {
     trim(kv_string);
     if (kv_string.length() == 0) continue;
     vector<string> key_value;

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/statestore/statestore-subscriber.cc
----------------------------------------------------------------------
diff --git a/be/src/statestore/statestore-subscriber.cc b/be/src/statestore/statestore-subscriber.cc
index 4e193b4..4df9aa7 100644
--- a/be/src/statestore/statestore-subscriber.cc
+++ b/be/src/statestore/statestore-subscriber.cc
@@ -18,7 +18,6 @@
 #include <utility>
 
 #include <boost/algorithm/string/join.hpp>
-#include <boost/foreach.hpp>
 #include <boost/date_time/posix_time/posix_time.hpp>
 #include <boost/thread/shared_mutex.hpp>
 #include <gutil/strings/substitute.h>
@@ -141,7 +140,7 @@ Status StatestoreSubscriber::Register() {
 
   TRegisterSubscriberRequest request;
   request.topic_registrations.reserve(update_callbacks_.size());
-  BOOST_FOREACH(const UpdateCallbacks::value_type& topic, update_callbacks_) {
+  for (const UpdateCallbacks::value_type& topic: update_callbacks_) {
     TTopicRegistration thrift_topic;
     thrift_topic.topic_name = topic.first;
     thrift_topic.is_transient = topic_registrations_[topic.first];
@@ -314,7 +313,7 @@ Status StatestoreSubscriber::UpdateState(const TopicDeltaMap& incoming_topic_del
     // to this subscriber. If any invalid ranges are found, request new update(s) with
     // version ranges applicable to this subscriber.
     bool found_unexpected_delta = false;
-    BOOST_FOREACH(const TopicDeltaMap::value_type& delta, incoming_topic_deltas) {
+    for (const TopicDeltaMap::value_type& delta: incoming_topic_deltas) {
       TopicVersionMap::const_iterator itr = current_topic_versions_.find(delta.first);
       if (itr != current_topic_versions_.end()) {
         if (delta.second.is_delta && delta.second.from_version != itr->second) {
@@ -337,10 +336,10 @@ Status StatestoreSubscriber::UpdateState(const TopicDeltaMap& incoming_topic_del
 
     // Skip calling the callbacks when an unexpected delta update is found.
     if (!found_unexpected_delta) {
-      BOOST_FOREACH(const UpdateCallbacks::value_type& callbacks, update_callbacks_) {
+      for (const UpdateCallbacks::value_type& callbacks: update_callbacks_) {
         MonotonicStopWatch sw;
         sw.Start();
-        BOOST_FOREACH(const UpdateCallback& callback, callbacks.second.callbacks) {
+        for (const UpdateCallback& callback: callbacks.second.callbacks) {
           // TODO: Consider filtering the topics to only send registered topics to
           // callbacks
           callback(incoming_topic_deltas, subscriber_topic_updates);

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/statestore/statestore.cc
----------------------------------------------------------------------
diff --git a/be/src/statestore/statestore.cc b/be/src/statestore/statestore.cc
index 7304d0b..d11ba0e 100644
--- a/be/src/statestore/statestore.cc
+++ b/be/src/statestore/statestore.cc
@@ -14,7 +14,6 @@
 
 #include "statestore/statestore.h"
 
-#include <boost/foreach.hpp>
 #include <boost/thread.hpp>
 #include <thrift/Thrift.h>
 #include <gutil/strings/substitute.h>
@@ -178,7 +177,7 @@ Statestore::Subscriber::Subscriber(const SubscriberId& subscriber_id,
     : subscriber_id_(subscriber_id),
       registration_id_(registration_id),
       network_address_(network_address) {
-  BOOST_FOREACH(const TTopicRegistration& topic, subscribed_topics) {
+  for (const TTopicRegistration& topic: subscribed_topics) {
     TopicState topic_state;
     topic_state.is_transient = topic.is_transient;
     topic_state.last_version = TOPIC_INITIAL_VERSION;
@@ -268,7 +267,7 @@ void Statestore::TopicsHandler(const Webserver::ArgumentMap& args,
 
   Value topics(kArrayType);
 
-  BOOST_FOREACH(const TopicMap::value_type& topic, topics_) {
+  for (const TopicMap::value_type& topic: topics_) {
     Value topic_json(kObjectType);
 
     Value topic_id(topic.second.id().c_str(), document->GetAllocator());
@@ -308,7 +307,7 @@ void Statestore::SubscribersHandler(const Webserver::ArgumentMap& args,
     Document* document) {
   lock_guard<mutex> l(subscribers_lock_);
   Value subscribers(kArrayType);
-  BOOST_FOREACH(const SubscriberMap::value_type& subscriber, subscribers_) {
+  for (const SubscriberMap::value_type& subscriber: subscribers_) {
     Value sub_json(kObjectType);
 
     Value subscriber_id(subscriber.second->id().c_str(), document->GetAllocator());
@@ -360,7 +359,7 @@ Status Statestore::RegisterSubscriber(const SubscriberId& subscriber_id,
   // by the worker threads its topics are guaranteed to exist.
   {
     lock_guard<mutex> l(topic_lock_);
-    BOOST_FOREACH(const TTopicRegistration& topic, topic_registrations) {
+    for (const TTopicRegistration& topic: topic_registrations) {
       TopicMap::iterator topic_it = topics_.find(topic.topic_name);
       if (topic_it == topics_.end()) {
         LOG(INFO) << "Creating new topic: ''" << topic.topic_name
@@ -449,7 +448,7 @@ Status Statestore::SendTopicUpdate(Subscriber* subscriber, bool* update_skipped)
   // Thirdly: perform any / all updates returned by the subscriber
   {
     lock_guard<mutex> l(topic_lock_);
-    BOOST_FOREACH(const TTopicDelta& update, response.topic_updates) {
+    for (const TTopicDelta& update: response.topic_updates) {
       TopicMap::iterator topic_it = topics_.find(update.topic_name);
       if (topic_it == topics_.end()) {
         VLOG(1) << "Received update for unexpected topic:" << update.topic_name;
@@ -471,12 +470,12 @@ Status Statestore::SendTopicUpdate(Subscriber* subscriber, bool* update_skipped)
       }
 
       Topic* topic = &topic_it->second;
-      BOOST_FOREACH(const TTopicItem& item, update.topic_entries) {
+      for (const TTopicItem& item: update.topic_entries) {
         TopicEntry::Version version = topic->Put(item.key, item.value);
         subscriber->AddTransientUpdate(update.topic_name, item.key, version);
       }
 
-      BOOST_FOREACH(const string& key, update.topic_deletions) {
+      for (const string& key: update.topic_deletions) {
         TopicEntry::Version version =
             topic->Put(key, Statestore::TopicEntry::NULL_VALUE);
         subscriber->AddTransientUpdate(update.topic_name, key, version);
@@ -491,8 +490,8 @@ void Statestore::GatherTopicUpdates(const Subscriber& subscriber,
     TUpdateStateRequest* update_state_request) {
   {
     lock_guard<mutex> l(topic_lock_);
-    BOOST_FOREACH(const Subscriber::Topics::value_type& subscribed_topic,
-        subscriber.subscribed_topics()) {
+    for (const Subscriber::Topics::value_type& subscribed_topic:
+         subscriber.subscribed_topics()) {
       TopicMap::const_iterator topic_it = topics_.find(subscribed_topic.first);
       DCHECK(topic_it != topics_.end());
 
@@ -552,8 +551,7 @@ void Statestore::GatherTopicUpdates(const Subscriber& subscriber,
   // topic_lock_.
   lock_guard<mutex> l(subscribers_lock_);
   typedef map<TopicId, TTopicDelta> TopicDeltaMap;
-  BOOST_FOREACH(TopicDeltaMap::value_type& topic_delta,
-      update_state_request->topic_deltas) {
+  for (TopicDeltaMap::value_type& topic_delta: update_state_request->topic_deltas) {
     topic_delta.second.__set_min_subscriber_topic_version(
         GetMinSubscriberTopicVersion(topic_delta.first));
   }
@@ -564,7 +562,7 @@ const Statestore::TopicEntry::Version Statestore::GetMinSubscriberTopicVersion(
   TopicEntry::Version min_topic_version = numeric_limits<int64_t>::max();
   bool found = false;
   // Find the minimum version processed for this topic across all topic subscribers.
-  BOOST_FOREACH(const SubscriberMap::value_type& subscriber, subscribers_) {
+  for (const SubscriberMap::value_type& subscriber: subscribers_) {
     if (subscriber.second->subscribed_topics().find(topic_id) !=
         subscriber.second->subscribed_topics().end()) {
       found = true;
@@ -734,8 +732,8 @@ void Statestore::UnregisterSubscriber(Subscriber* subscriber) {
 
   // Delete all transient entries
   lock_guard<mutex> topic_lock(topic_lock_);
-  BOOST_FOREACH(Statestore::Subscriber::TransientEntryMap::value_type entry,
-      subscriber->transient_entries()) {
+  for (Statestore::Subscriber::TransientEntryMap::value_type entry:
+       subscriber->transient_entries()) {
     Statestore::TopicMap::iterator topic_it = topics_.find(entry.first.first);
     DCHECK(topic_it != topics_.end());
     topic_it->second.DeleteIfVersionsMatch(entry.second, // version

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/testutil/mini-impala-cluster.cc
----------------------------------------------------------------------
diff --git a/be/src/testutil/mini-impala-cluster.cc b/be/src/testutil/mini-impala-cluster.cc
index 25f4cf6..469066a 100644
--- a/be/src/testutil/mini-impala-cluster.cc
+++ b/be/src/testutil/mini-impala-cluster.cc
@@ -16,7 +16,6 @@
 // A standalone test utility that starts multiple Impala backends and a state store
 // within a single process.
 
-#include <boost/foreach.hpp>
 
 #include "codegen/llvm-codegen.h"
 #include "common/logging.h"
@@ -85,7 +84,5 @@ int main(int argc, char** argv) {
 
   impala_servers[0]->Join();
 
-  BOOST_FOREACH(InProcessImpalaServer* server, impala_servers) {
-    delete server;
-  }
+  for (InProcessImpalaServer* server: impala_servers) delete server;
 }

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/codec.cc
----------------------------------------------------------------------
diff --git a/be/src/util/codec.cc b/be/src/util/codec.cc
index bf08b62..6863d1f 100644
--- a/be/src/util/codec.cc
+++ b/be/src/util/codec.cc
@@ -48,8 +48,7 @@ const Codec::CodecMap Codec::CODEC_MAP = map_list_of
   (SNAPPY_COMPRESSION, THdfsCompression::SNAPPY_BLOCKED);
 
 string Codec::GetCodecName(THdfsCompression::type type) {
-  BOOST_FOREACH(const CodecMap::value_type& codec,
-      g_CatalogObjects_constants.COMPRESSION_MAP) {
+  for (const CodecMap::value_type& codec: g_CatalogObjects_constants.COMPRESSION_MAP) {
     if (codec.second == type) return codec.first;
   }
   DCHECK(false) << "Missing codec in COMPRESSION_MAP: " << type;
@@ -57,7 +56,7 @@ string Codec::GetCodecName(THdfsCompression::type type) {
 }
 
 Status Codec::GetHadoopCodecClassName(THdfsCompression::type type, string* out_name) {
-  BOOST_FOREACH(const CodecMap::value_type& codec, CODEC_MAP) {
+  for (const CodecMap::value_type& codec: CODEC_MAP) {
     if (codec.second == type) {
       out_name->assign(codec.first);
       return Status::OK();

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/collection-metrics.h
----------------------------------------------------------------------
diff --git a/be/src/util/collection-metrics.h b/be/src/util/collection-metrics.h
index 4698729..276f4b9 100644
--- a/be/src/util/collection-metrics.h
+++ b/be/src/util/collection-metrics.h
@@ -22,7 +22,6 @@
 #include <vector>
 #include <set>
 #include <boost/algorithm/string/join.hpp>
-#include <boost/foreach.hpp>
 #include <boost/accumulators/accumulators.hpp>
 #include <boost/accumulators/statistics/count.hpp>
 #include <boost/accumulators/statistics/mean.hpp>
@@ -76,7 +75,7 @@ class SetMetric : public Metric {
     rapidjson::Value container(rapidjson::kObjectType);
     AddStandardFields(document, &container);
     rapidjson::Value metric_list(rapidjson::kArrayType);
-    BOOST_FOREACH(const T& s, value_) {
+    for (const T& s: value_) {
       rapidjson::Value entry_value;
       ToJsonValue(s, TUnit::NONE, document, &entry_value);
       metric_list.PushBack(entry_value, document->GetAllocator());
@@ -87,7 +86,7 @@ class SetMetric : public Metric {
 
   virtual void ToLegacyJson(rapidjson::Document* document) {
     rapidjson::Value metric_list(rapidjson::kArrayType);
-    BOOST_FOREACH(const T& s, value_) {
+    for (const T& s: value_) {
       rapidjson::Value entry_value;
       ToJsonValue(s, TUnit::NONE, document, &entry_value);
       metric_list.PushBack(entry_value, document->GetAllocator());

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/debug-util.cc
----------------------------------------------------------------------
diff --git a/be/src/util/debug-util.cc b/be/src/util/debug-util.cc
index ddb9455..7e6a290 100644
--- a/be/src/util/debug-util.cc
+++ b/be/src/util/debug-util.cc
@@ -16,7 +16,6 @@
 
 #include <iomanip>
 #include <sstream>
-#include <boost/foreach.hpp>
 
 #include "common/version.h"
 #include "runtime/collection-value.h"
@@ -124,7 +123,7 @@ bool ParseId(const string& s, TUniqueId* id) {
     char_separator<char> sep(" ");
     tokenizer< char_separator<char> > tokens(s, sep);
     int i = 0;
-    BOOST_FOREACH(const string& token, tokens) {
+    for (const string& token: tokens) {
       StringParser::ParseResult parse_result = StringParser::PARSE_SUCCESS;
       int64_t component = StringParser::StringToInt<int64_t>(
           token.c_str(), token.length(), &parse_result);

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/dict-encoding.h
----------------------------------------------------------------------
diff --git a/be/src/util/dict-encoding.h b/be/src/util/dict-encoding.h
index 75e89ac..7a48886 100644
--- a/be/src/util/dict-encoding.h
+++ b/be/src/util/dict-encoding.h
@@ -17,7 +17,6 @@
 
 #include <map>
 
-#include <boost/foreach.hpp>
 #include <boost/unordered_map.hpp>
 
 #include "gutil/bits.h"
@@ -294,7 +293,7 @@ inline bool DictDecoder<Decimal16Value>::GetValue(Decimal16Value* value) {
 
 template<typename T>
 inline void DictEncoder<T>::WriteDict(uint8_t* buffer) {
-  BOOST_FOREACH(const Node& node, nodes_) {
+  for (const Node& node: nodes_) {
     buffer += ParquetPlainEncoder::Encode(buffer, encoded_value_size_, node.value);
   }
 }
@@ -306,7 +305,7 @@ inline int DictEncoderBase::WriteData(uint8_t* buffer, int buffer_len) {
   --buffer_len;
 
   RleEncoder encoder(buffer, buffer_len, bit_width());
-  BOOST_FOREACH(int index, buffered_indices_) {
+  for (int index: buffered_indices_) {
     if (!encoder.Put(index)) return -1;
   }
   encoder.Flush();

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/dict-test.cc
----------------------------------------------------------------------
diff --git a/be/src/util/dict-test.cc b/be/src/util/dict-test.cc
index fec3185..1fb8eaa 100644
--- a/be/src/util/dict-test.cc
+++ b/be/src/util/dict-test.cc
@@ -16,7 +16,6 @@
 #include <stdio.h>
 #include <iostream>
 
-#include <boost/foreach.hpp>
 #include <gtest/gtest.h>
 
 #include "common/init.h"
@@ -36,9 +35,7 @@ void ValidateDict(const vector<T>& values, int fixed_buffer_byte_size) {
   MemTracker tracker;
   MemPool pool(&tracker);
   DictEncoder<T> encoder(&pool, fixed_buffer_byte_size);
-  BOOST_FOREACH(T i, values) {
-    encoder.Put(i);
-  }
+  for (T i: values) encoder.Put(i);
   EXPECT_EQ(encoder.num_entries(), values_set.size());
 
   uint8_t dict_buffer[encoder.dict_encoded_size()];
@@ -53,7 +50,7 @@ void ValidateDict(const vector<T>& values, int fixed_buffer_byte_size) {
   DictDecoder<T> decoder(
       dict_buffer, encoder.dict_encoded_size(), fixed_buffer_byte_size);
   decoder.SetData(data_buffer, data_len);
-  BOOST_FOREACH(T i, values) {
+  for (T i: values) {
     T j;
     decoder.GetValue(&j);
     EXPECT_EQ(i, j);

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/error-util.cc
----------------------------------------------------------------------
diff --git a/be/src/util/error-util.cc b/be/src/util/error-util.cc
index 408864c..81c53a8 100644
--- a/be/src/util/error-util.cc
+++ b/be/src/util/error-util.cc
@@ -14,8 +14,6 @@
 
 #include "util/error-util.h"
 
-#include <boost/foreach.hpp>
-
 #include <errno.h>
 #include <string.h>
 #include <sstream>
@@ -132,11 +130,11 @@ ErrorMsg ErrorMsg::Init(TErrorCode::type error, const ArgType& arg0,
 }
 
 void PrintErrorMap(ostream* stream, const ErrorLogMap& errors) {
-  BOOST_FOREACH(const ErrorLogMap::value_type& v, errors) {
+  for (const ErrorLogMap::value_type& v: errors) {
     const TErrorLogEntry& log_entry = v.second;
     if (v.first == TErrorCode::GENERAL) {
       DCHECK_EQ(log_entry.count, 0);
-      BOOST_FOREACH(const string& s, log_entry.messages) {
+      for (const string& s: log_entry.messages) {
         *stream << s << "\n";
       }
     } else if (!log_entry.messages.empty()) {
@@ -159,7 +157,7 @@ string PrintErrorMapToString(const ErrorLogMap& errors) {
 }
 
 void MergeErrorMaps(ErrorLogMap* left, const ErrorLogMap& right) {
-  BOOST_FOREACH(const ErrorLogMap::value_type& v, right) {
+  for (const ErrorLogMap::value_type& v: right) {
     TErrorLogEntry& target = (*left)[v.first];
     const TErrorLogEntry& source = v.second;
     // Append generic message, append specific codes or increment count if exists

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/error-util.h
----------------------------------------------------------------------
diff --git a/be/src/util/error-util.h b/be/src/util/error-util.h
index 755a232..e8f0871 100644
--- a/be/src/util/error-util.h
+++ b/be/src/util/error-util.h
@@ -16,7 +16,6 @@
 #ifndef IMPALA_UTIL_ERROR_UTIL_H
 #define IMPALA_UTIL_ERROR_UTIL_H
 
-
 #include <string>
 #include <vector>
 

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/hdfs-bulk-ops.cc
----------------------------------------------------------------------
diff --git a/be/src/util/hdfs-bulk-ops.cc b/be/src/util/hdfs-bulk-ops.cc
index d4d94ed..34769dd 100644
--- a/be/src/util/hdfs-bulk-ops.cc
+++ b/be/src/util/hdfs-bulk-ops.cc
@@ -15,7 +15,6 @@
 #include "util/hdfs-bulk-ops.h"
 
 #include <vector>
-#include <boost/foreach.hpp>
 
 #include "util/debug-util.h"
 #include "util/error-util.h"
@@ -156,9 +155,7 @@ bool HdfsOperationSet::Execute(ThreadPool<HdfsOp>* pool, bool abort_on_error) {
   if (num_ops == 0) return true;
 
   ops_complete_barrier_.reset(new CountingBarrier(num_ops));
-  BOOST_FOREACH(const HdfsOp& op, ops_) {
-    pool->Offer(op);
-  }
+  for (const HdfsOp& op: ops_) pool->Offer(op);
 
   ops_complete_barrier_->Wait();
   return errors().size() == 0;

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/logging-support.cc
----------------------------------------------------------------------
diff --git a/be/src/util/logging-support.cc b/be/src/util/logging-support.cc
index 7de7fcf..2ac7be8 100644
--- a/be/src/util/logging-support.cc
+++ b/be/src/util/logging-support.cc
@@ -14,7 +14,6 @@
 
 #include "util/logging-support.h"
 
-#include <boost/foreach.hpp>
 #include <glob.h>
 #include <sys/stat.h>
 
@@ -132,7 +131,7 @@ void LoggingSupport::DeleteOldLogs(const string& path_pattern, int max_log_files
   if (log_file_mtime.size() <= max_log_files) return;
   int files_to_delete = log_file_mtime.size() - max_log_files;
   DCHECK_GT(files_to_delete, 0);
-  BOOST_FOREACH(LogFileMap::const_reference val, log_file_mtime) {
+  for (LogFileMap::const_reference val: log_file_mtime) {
     if (unlink(val.second.c_str()) == 0) {
       LOG(INFO) << "Old log file deleted during log rotation: " << val.second;
     } else {

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/memory-metrics.cc
----------------------------------------------------------------------
diff --git a/be/src/util/memory-metrics.cc b/be/src/util/memory-metrics.cc
index cf8510e..bda926c 100644
--- a/be/src/util/memory-metrics.cc
+++ b/be/src/util/memory-metrics.cc
@@ -15,7 +15,6 @@
 #include "util/memory-metrics.h"
 
 #include <boost/algorithm/string.hpp>
-#include <boost/foreach.hpp>
 #include <gutil/strings/substitute.h>
 
 #include "util/jni-util.h"
@@ -83,7 +82,7 @@ Status JvmMetric::InitMetrics(MetricGroup* metrics) {
   request.get_all = true;
   TGetJvmMetricsResponse response;
   RETURN_IF_ERROR(JniUtil::GetJvmMetrics(request, &response));
-  BOOST_FOREACH(const TJvmMemoryPool& usage, response.memory_pools) {
+  for (const TJvmMemoryPool& usage: response.memory_pools) {
     JvmMetric::CreateAndRegister(metrics, "jvm.$0.max-usage-bytes", usage.name, MAX);
     JvmMetric::CreateAndRegister(metrics, "jvm.$0.current-usage-bytes", usage.name,
         CURRENT);

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/metrics.cc
----------------------------------------------------------------------
diff --git a/be/src/util/metrics.cc b/be/src/util/metrics.cc
index 7f8cde8..0ae18e6 100644
--- a/be/src/util/metrics.cc
+++ b/be/src/util/metrics.cc
@@ -115,10 +115,10 @@ void MetricGroup::CMCompatibleCallback(const Webserver::ArgumentMap& args,
     // expected by CM before we introduced metric groups.
     MetricGroup* group = groups.top();
     groups.pop();
-    BOOST_FOREACH(const ChildGroupMap::value_type& child, group->children_) {
+    for (const ChildGroupMap::value_type& child: group->children_) {
       groups.push(child.second);
     }
-    BOOST_FOREACH(const MetricMap::value_type& m, group->metric_map_) {
+    for (const MetricMap::value_type& m: group->metric_map_) {
       m.second->ToLegacyJson(document);
     }
   } while (!groups.empty());
@@ -148,7 +148,7 @@ void MetricGroup::TemplateCallback(const Webserver::ArgumentMap& args,
     // expected by CM before we introduced metric groups.
     MetricGroup* group = groups.top();
     groups.pop();
-    BOOST_FOREACH(const ChildGroupMap::value_type& child, group->children_) {
+    for (const ChildGroupMap::value_type& child: group->children_) {
       if (child.first == metric_group->second) {
         found_group = child.second;
         break;
@@ -169,7 +169,7 @@ void MetricGroup::TemplateCallback(const Webserver::ArgumentMap& args,
 
 void MetricGroup::ToJson(bool include_children, Document* document, Value* out_val) {
   Value metric_list(kArrayType);
-  BOOST_FOREACH(const MetricMap::value_type& m, metric_map_) {
+  for (const MetricMap::value_type& m: metric_map_) {
     Value metric_value;
     m.second->ToJson(document, &metric_value);
     metric_list.PushBack(metric_value, document->GetAllocator());
@@ -180,7 +180,7 @@ void MetricGroup::ToJson(bool include_children, Document* document, Value* out_v
   container.AddMember("name", name_.c_str(), document->GetAllocator());
   if (include_children) {
     Value child_groups(kArrayType);
-    BOOST_FOREACH(const ChildGroupMap::value_type& child, children_) {
+    for (const ChildGroupMap::value_type& child: children_) {
       Value child_value;
       child.second->ToJson(true, document, &child_value);
       child_groups.PushBack(child_value, document->GetAllocator());

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/metrics.h
----------------------------------------------------------------------
diff --git a/be/src/util/metrics.h b/be/src/util/metrics.h
index 62a48e6..ab4b6c2 100644
--- a/be/src/util/metrics.h
+++ b/be/src/util/metrics.h
@@ -19,7 +19,6 @@
 #include <string>
 #include <sstream>
 #include <stack>
-#include <boost/foreach.hpp>
 #include <boost/function.hpp>
 #include <boost/scoped_ptr.hpp>
 #include <boost/thread/locks.hpp>
@@ -281,7 +280,7 @@ class MetricGroup {
       groups.pop();
       MetricMap::const_iterator it = group->metric_map_.find(key);
       if (it != group->metric_map_.end()) return reinterpret_cast<M*>(it->second);
-      BOOST_FOREACH(const ChildGroupMap::value_type& child, group->children_) {
+      for (const ChildGroupMap::value_type& child: group->children_) {
         groups.push(child.second);
       }
     } while (!groups.empty());

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/network-util.cc
----------------------------------------------------------------------
diff --git a/be/src/util/network-util.cc b/be/src/util/network-util.cc
index edfc953..8d8a38b 100644
--- a/be/src/util/network-util.cc
+++ b/be/src/util/network-util.cc
@@ -22,7 +22,6 @@
 #include <sstream>
 #include <vector>
 #include <boost/algorithm/string.hpp>
-#include <boost/foreach.hpp>
 
 #include "util/debug-util.h"
 #include "util/error-util.h"
@@ -90,7 +89,7 @@ Status HostnameToIpAddrs(const string& name, vector<string>* addresses) {
 }
 
 bool FindFirstNonLocalhost(const vector<string>& addresses, string* addr) {
-  BOOST_FOREACH(const string& candidate, addresses) {
+  for (const string& candidate: addresses) {
     if (candidate != LOCALHOST) {
       *addr = candidate;
       return true;

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/runtime-profile-test.cc
----------------------------------------------------------------------
diff --git a/be/src/util/runtime-profile-test.cc b/be/src/util/runtime-profile-test.cc
index 8315437..d98b54c 100644
--- a/be/src/util/runtime-profile-test.cc
+++ b/be/src/util/runtime-profile-test.cc
@@ -17,7 +17,6 @@
 #include <iostream>
 #include <gtest/gtest.h>
 #include <boost/bind.hpp>
-#include <boost/foreach.hpp>
 #include "common/object-pool.h"
 #include "util/cpu-info.h"
 #include "util/periodic-counter-updater.h"
@@ -455,7 +454,7 @@ TEST(CountersTest, EventSequences) {
 
   uint64_t last_timestamp = 0;
   string last_string = "";
-  BOOST_FOREACH(const RuntimeProfile::EventSequence::Event& ev, events) {
+  for (const RuntimeProfile::EventSequence::Event& ev: events) {
     EXPECT_TRUE(ev.second >= last_timestamp);
     last_timestamp = ev.second;
     EXPECT_TRUE(ev.first > last_string);
@@ -477,7 +476,7 @@ TEST(CountersTest, EventSequences) {
   EXPECT_TRUE(seq != NULL);
   seq->GetEvents(&events);
   EXPECT_EQ(3, events.size());
-  BOOST_FOREACH(const RuntimeProfile::EventSequence::Event& ev, events) {
+  for (const RuntimeProfile::EventSequence::Event& ev: events) {
     EXPECT_TRUE(ev.second >= last_timestamp);
     last_timestamp = ev.second;
     EXPECT_TRUE(ev.first > last_string);

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/runtime-profile.cc
----------------------------------------------------------------------
diff --git a/be/src/util/runtime-profile.cc b/be/src/util/runtime-profile.cc
index e2d0744..bc7447a 100644
--- a/be/src/util/runtime-profile.cc
+++ b/be/src/util/runtime-profile.cc
@@ -18,7 +18,6 @@
 #include <iostream>
 
 #include <boost/bind.hpp>
-#include <boost/foreach.hpp>
 #include <boost/thread/locks.hpp>
 #include <boost/thread/thread.hpp>
 
@@ -119,14 +118,14 @@ RuntimeProfile* RuntimeProfile::CreateFromThrift(ObjectPool* pool,
   }
 
   if (node.__isset.event_sequences) {
-    BOOST_FOREACH(const TEventSequence& sequence, node.event_sequences) {
+    for (const TEventSequence& sequence: node.event_sequences) {
       profile->event_sequence_map_[sequence.name] =
           pool->Add(new EventSequence(sequence.timestamps, sequence.labels));
     }
   }
 
   if (node.__isset.time_series_counters) {
-    BOOST_FOREACH(const TTimeSeriesCounter& val, node.time_series_counters) {
+    for (const TTimeSeriesCounter& val: node.time_series_counters) {
       profile->time_series_counter_map_[val.name] =
           pool->Add(new TimeSeriesCounter(val.name, val.unit, val.period_ms, val.values));
     }
@@ -253,7 +252,7 @@ void RuntimeProfile::Update(const vector<TRuntimeProfileNode>& nodes, int* idx)
   {
     const InfoStrings& info_strings = node.info_strings;
     lock_guard<SpinLock> l(info_strings_lock_);
-    BOOST_FOREACH(const string& key, node.info_strings_display_order) {
+    for (const string& key: node.info_strings_display_order) {
       // Look for existing info strings and update in place. If there
       // are new strings, add them to the end of the display order.
       // TODO: Is nodes.info_strings always a superset of
@@ -551,7 +550,7 @@ void RuntimeProfile::PrettyPrint(ostream* s, const string& prefix) const {
 
   {
     lock_guard<SpinLock> l(info_strings_lock_);
-    BOOST_FOREACH(const string& key, info_strings_display_order_) {
+    for (const string& key: info_strings_display_order_) {
       stream << prefix << "  " << key << ": " << info_strings_.find(key)->second << endl;
     }
   }
@@ -565,8 +564,7 @@ void RuntimeProfile::PrettyPrint(ostream* s, const string& prefix) const {
     // The times in parentheses are the time elapsed since the last event.
     vector<EventSequence::Event> events;
     lock_guard<SpinLock> l(event_sequence_lock_);
-    BOOST_FOREACH(
-        const EventSequenceMap::value_type& event_sequence, event_sequence_map_) {
+    for (const EventSequenceMap::value_type& event_sequence: event_sequence_map_) {
       // If the stopwatch has never been started (e.g. because this sequence came from
       // Thrift), look for the last element to tell us the total runtime. For
       // currently-updating sequences, it's better to use the stopwatch value because that
@@ -580,7 +578,7 @@ void RuntimeProfile::PrettyPrint(ostream* s, const string& prefix) const {
 
       int64_t prev = 0L;
       event_sequence.second->GetEvents(&events);
-      BOOST_FOREACH(const EventSequence::Event& event, events) {
+      for (const EventSequence::Event& event: events) {
         stream << prefix << "     - " << event.first << ": "
                << PrettyPrinter::Print(event.second, TUnit::TIME_NS) << " ("
                << PrettyPrinter::Print(event.second - prev, TUnit::TIME_NS) << ")"
@@ -596,7 +594,7 @@ void RuntimeProfile::PrettyPrint(ostream* s, const string& prefix) const {
     SpinLock* lock;
     int num, period;
     lock_guard<SpinLock> l(time_series_counter_map_lock_);
-    BOOST_FOREACH(const TimeSeriesCounterMap::value_type& v, time_series_counter_map_) {
+    for (const TimeSeriesCounterMap::value_type& v: time_series_counter_map_) {
       const int64_t* samples = v.second->samples_.GetSamples(&num, &period, &lock);
       if (num > 0) {
         stream << prefix << "  " << v.first << "("
@@ -706,11 +704,11 @@ void RuntimeProfile::ToThrift(vector<TRuntimeProfileNode>* nodes) const {
       node.__set_event_sequences(vector<TEventSequence>());
       node.event_sequences.resize(event_sequence_map_.size());
       int idx = 0;
-      BOOST_FOREACH(const EventSequenceMap::value_type& val, event_sequence_map_) {
+      for (const EventSequenceMap::value_type& val: event_sequence_map_) {
         TEventSequence* seq = &node.event_sequences[idx++];
         seq->name = val.first;
         val.second->GetEvents(&events);
-        BOOST_FOREACH(const EventSequence::Event& ev, events) {
+        for (const EventSequence::Event& ev: events) {
           seq->labels.push_back(ev.first);
           seq->timestamps.push_back(ev.second);
         }
@@ -724,8 +722,7 @@ void RuntimeProfile::ToThrift(vector<TRuntimeProfileNode>* nodes) const {
       node.__set_time_series_counters(vector<TTimeSeriesCounter>());
       node.time_series_counters.resize(time_series_counter_map_.size());
       int idx = 0;
-      BOOST_FOREACH(const TimeSeriesCounterMap::value_type& val,
-          time_series_counter_map_) {
+      for (const TimeSeriesCounterMap::value_type& val: time_series_counter_map_) {
         val.second->ToThrift(&node.time_series_counters[idx++]);
       }
     }
@@ -846,7 +843,7 @@ void RuntimeProfile::PrintChildCounters(const string& prefix,
   ChildCounterMap::const_iterator itr = child_counter_map.find(counter_name);
   if (itr != child_counter_map.end()) {
     const set<string>& child_counters = itr->second;
-    BOOST_FOREACH(const string& child_counter, child_counters) {
+    for (const string& child_counter: child_counters) {
       CounterMap::const_iterator iter = counter_map.find(child_counter);
       if (iter == counter_map.end()) continue;
       stream << prefix << "   - " << iter->first << ": "
@@ -901,7 +898,7 @@ string RuntimeProfile::TimeSeriesCounter::DebugString() const {
 }
 
 void RuntimeProfile::EventSequence::ToThrift(TEventSequence* seq) const {
-  BOOST_FOREACH(const EventSequence::Event& ev, events_) {
+  for (const EventSequence::Event& ev: events_) {
     seq->labels.push_back(ev.first);
     seq->timestamps.push_back(ev.second);
   }

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/thread.cc
----------------------------------------------------------------------
diff --git a/be/src/util/thread.cc b/be/src/util/thread.cc
index 1bad25a..6325a0d 100644
--- a/be/src/util/thread.cc
+++ b/be/src/util/thread.cc
@@ -16,7 +16,6 @@
 
 #include <set>
 #include <map>
-#include <boost/foreach.hpp>
 #include <unistd.h>
 #include <sys/syscall.h>
 #include <sys/types.h>
@@ -201,7 +200,7 @@ void ThreadMgr::ThreadOverviewUrlCallback(const Webserver::ArgumentMap& args,
         document->GetAllocator());
   }
   Value lst(kArrayType);
-  BOOST_FOREACH(const ThreadCategoryMap::value_type& category, thread_categories_) {
+  for (const ThreadCategoryMap::value_type& category: thread_categories_) {
     Value val(kObjectType);
     val.AddMember("name", category.first.c_str(), document->GetAllocator());
     val.AddMember("size", static_cast<uint64_t>(category.second.size()),
@@ -231,14 +230,14 @@ void ThreadMgr::ThreadGroupUrlCallback(const Webserver::ArgumentMap& args,
         document->GetAllocator());
     document->AddMember("thread-group", val, document->GetAllocator());
   } else {
-    BOOST_FOREACH(const ThreadCategoryMap::value_type& category, thread_categories_) {
+    for (const ThreadCategoryMap::value_type& category: thread_categories_) {
       categories_to_print.push_back(&category.second);
     }
   }
 
   Value lst(kArrayType);
-  BOOST_FOREACH(const ThreadCategory* category, categories_to_print) {
-    BOOST_FOREACH(const ThreadCategory::value_type& thread, *category) {
+  for (const ThreadCategory* category: categories_to_print) {
+    for (const ThreadCategory::value_type& thread: *category) {
       Value val(kObjectType);
       val.AddMember("name", thread.second.name().c_str(), document->GetAllocator());
       ThreadStats stats;
@@ -327,18 +326,14 @@ Status ThreadGroup::AddThread(Thread* thread) {
 }
 
 void ThreadGroup::JoinAll() {
-  BOOST_FOREACH(const Thread& thread, threads_) {
-    thread.Join();
-  }
+  for (const Thread& thread: threads_) thread.Join();
 }
 
 Status ThreadGroup::SetCgroup(const string& cgroup) {
   DCHECK(cgroups_mgr_ != NULL);
   cgroup_path_ = cgroup;
-  // BOOST_FOREACH + ptr_vector + const are not compatible
-  for (ptr_vector<Thread>::const_iterator it = threads_.begin();
-       it != threads_.end(); ++it) {
-    RETURN_IF_ERROR(cgroups_mgr_->AssignThreadToCgroup(*it, cgroup));
+  for (const Thread& t: threads_) {
+    RETURN_IF_ERROR(cgroups_mgr_->AssignThreadToCgroup(t, cgroup));
   }
   return Status::OK();
 }

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/url-coding.cc
----------------------------------------------------------------------
diff --git a/be/src/util/url-coding.cc b/be/src/util/url-coding.cc
index 017b9ff..b64e609 100644
--- a/be/src/util/url-coding.cc
+++ b/be/src/util/url-coding.cc
@@ -20,7 +20,6 @@
 #include <boost/archive/iterators/base64_from_binary.hpp>
 #include <boost/archive/iterators/binary_from_base64.hpp>
 #include <boost/archive/iterators/transform_width.hpp>
-#include <boost/foreach.hpp>
 
 #include "common/logging.h"
 
@@ -177,7 +176,7 @@ bool Base64Decode(const string& in, string* out) {
 
 void EscapeForHtml(const string& in, stringstream* out) {
   DCHECK(out != NULL);
-  BOOST_FOREACH(const char& c, in) {
+  for (const char c: in) {
     switch (c) {
       case '<': (*out) << "&lt;";
                 break;

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5454086c/be/src/util/webserver.cc
----------------------------------------------------------------------
diff --git a/be/src/util/webserver.cc b/be/src/util/webserver.cc
index 7eecc79..b1ff7f6 100644
--- a/be/src/util/webserver.cc
+++ b/be/src/util/webserver.cc
@@ -17,7 +17,6 @@
 #include <boost/algorithm/string.hpp>
 #include <boost/bind.hpp>
 #include <boost/filesystem.hpp>
-#include <boost/foreach.hpp>
 #include <boost/lexical_cast.hpp>
 #include <boost/mem_fn.hpp>
 #include <boost/thread/locks.hpp>
@@ -92,7 +91,7 @@ DEFINE_string(webserver_password_file, "",
     "(Optional) Location of .htpasswd file containing user names and hashed passwords for"
     " debug webserver authentication");
 
-DEFINE_string(webserver_x_frame_options, "DENY", 
+DEFINE_string(webserver_x_frame_options, "DENY",
     "webserver will add X-Frame-Options HTTP header with this value");
 
 static const char* DOC_FOLDER = "/www/";
@@ -198,7 +197,7 @@ void Webserver::BuildArgumentMap(const string& args, ArgumentMap* output) {
   vector<string> arg_pairs;
   split(arg_pairs, args, is_any_of("&"));
 
-  BOOST_FOREACH(const string& arg_pair, arg_pairs) {
+  for (const string& arg_pair: arg_pairs) {
     vector<string> key_value;
     split(key_value, arg_pair, is_any_of("="));
     if (key_value.empty()) continue;
@@ -247,10 +246,10 @@ Status Webserver::Start() {
       options.push_back("ssl_private_key");
       options.push_back(FLAGS_webserver_private_key_file.c_str());
 
-      if (!FLAGS_webserver_private_key_password_cmd.empty()) {
-        if (!RunShellProcess(FLAGS_webserver_private_key_password_cmd, &key_password, true)) {
-          return Status(TErrorCode::SSL_PASSWORD_CMD_FAILED,
-              FLAGS_webserver_private_key_password_cmd, key_password);
+      const string& password_cmd = FLAGS_webserver_private_key_password_cmd;
+      if (!password_cmd.empty()) {
+        if (!RunShellProcess(password_cmd, &key_password, true)) {
+          return Status(TErrorCode::SSL_PASSWORD_CMD_FAILED, password_cmd, key_password);
         }
         options.push_back("ssl_private_key_password");
         options.push_back(key_password.c_str());
@@ -333,7 +332,7 @@ void Webserver::GetCommonJson(Document* document) {
       document->GetAllocator());
 
   Value lst(kArrayType);
-  BOOST_FOREACH(const UrlHandlerMap::value_type& handler, url_handlers_) {
+  for (const UrlHandlerMap::value_type& handler: url_handlers_) {
     if (handler.second.is_on_nav_bar()) {
       Value obj(kObjectType);
       obj.AddMember("link", handler.first.c_str(), document->GetAllocator());