You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by xu...@apache.org on 2015/10/28 13:11:42 UTC
[49/55] [abbrv] hive git commit: HIVE-12061 : add file type support
to file metadata by expr call (Sergey Shelukhin, reviewed by Alan Gates)
http://git-wip-us.apache.org/repos/asf/hive/blob/e5b53032/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
----------------------------------------------------------------------
diff --git a/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp b/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
index cb0ee7a..5fd4a90 100644
--- a/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
+++ b/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
@@ -151,6 +151,14 @@ const char* _kResourceTypeNames[] = {
};
const std::map<int, const char*> _ResourceType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(3, _kResourceTypeValues, _kResourceTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+int _kFileMetadataExprTypeValues[] = {
+ FileMetadataExprType::ORC_SARG
+};
+const char* _kFileMetadataExprTypeNames[] = {
+ "ORC_SARG"
+};
+const std::map<int, const char*> _FileMetadataExprType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(1, _kFileMetadataExprTypeValues, _kFileMetadataExprTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+
Version::~Version() throw() {
}
@@ -14262,6 +14270,11 @@ void GetFileMetadataByExprRequest::__set_doGetFooters(const bool val) {
__isset.doGetFooters = true;
}
+void GetFileMetadataByExprRequest::__set_type(const FileMetadataExprType::type val) {
+ this->type = val;
+__isset.type = true;
+}
+
uint32_t GetFileMetadataByExprRequest::read(::apache::thrift::protocol::TProtocol* iprot) {
apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
@@ -14321,6 +14334,16 @@ uint32_t GetFileMetadataByExprRequest::read(::apache::thrift::protocol::TProtoco
xfer += iprot->skip(ftype);
}
break;
+ case 4:
+ if (ftype == ::apache::thrift::protocol::T_I32) {
+ int32_t ecast626;
+ xfer += iprot->readI32(ecast626);
+ this->type = (FileMetadataExprType::type)ecast626;
+ this->__isset.type = true;
+ } else {
+ xfer += iprot->skip(ftype);
+ }
+ break;
default:
xfer += iprot->skip(ftype);
break;
@@ -14345,10 +14368,10 @@ uint32_t GetFileMetadataByExprRequest::write(::apache::thrift::protocol::TProtoc
xfer += oprot->writeFieldBegin("fileIds", ::apache::thrift::protocol::T_LIST, 1);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_I64, static_cast<uint32_t>(this->fileIds.size()));
- std::vector<int64_t> ::const_iterator _iter626;
- for (_iter626 = this->fileIds.begin(); _iter626 != this->fileIds.end(); ++_iter626)
+ std::vector<int64_t> ::const_iterator _iter627;
+ for (_iter627 = this->fileIds.begin(); _iter627 != this->fileIds.end(); ++_iter627)
{
- xfer += oprot->writeI64((*_iter626));
+ xfer += oprot->writeI64((*_iter627));
}
xfer += oprot->writeListEnd();
}
@@ -14363,6 +14386,11 @@ uint32_t GetFileMetadataByExprRequest::write(::apache::thrift::protocol::TProtoc
xfer += oprot->writeBool(this->doGetFooters);
xfer += oprot->writeFieldEnd();
}
+ if (this->__isset.type) {
+ xfer += oprot->writeFieldBegin("type", ::apache::thrift::protocol::T_I32, 4);
+ xfer += oprot->writeI32((int32_t)this->type);
+ xfer += oprot->writeFieldEnd();
+ }
xfer += oprot->writeFieldStop();
xfer += oprot->writeStructEnd();
return xfer;
@@ -14373,20 +14401,23 @@ void swap(GetFileMetadataByExprRequest &a, GetFileMetadataByExprRequest &b) {
swap(a.fileIds, b.fileIds);
swap(a.expr, b.expr);
swap(a.doGetFooters, b.doGetFooters);
+ swap(a.type, b.type);
swap(a.__isset, b.__isset);
}
-GetFileMetadataByExprRequest::GetFileMetadataByExprRequest(const GetFileMetadataByExprRequest& other627) {
- fileIds = other627.fileIds;
- expr = other627.expr;
- doGetFooters = other627.doGetFooters;
- __isset = other627.__isset;
-}
-GetFileMetadataByExprRequest& GetFileMetadataByExprRequest::operator=(const GetFileMetadataByExprRequest& other628) {
+GetFileMetadataByExprRequest::GetFileMetadataByExprRequest(const GetFileMetadataByExprRequest& other628) {
fileIds = other628.fileIds;
expr = other628.expr;
doGetFooters = other628.doGetFooters;
+ type = other628.type;
__isset = other628.__isset;
+}
+GetFileMetadataByExprRequest& GetFileMetadataByExprRequest::operator=(const GetFileMetadataByExprRequest& other629) {
+ fileIds = other629.fileIds;
+ expr = other629.expr;
+ doGetFooters = other629.doGetFooters;
+ type = other629.type;
+ __isset = other629.__isset;
return *this;
}
void GetFileMetadataByExprRequest::printTo(std::ostream& out) const {
@@ -14395,6 +14426,7 @@ void GetFileMetadataByExprRequest::printTo(std::ostream& out) const {
out << "fileIds=" << to_string(fileIds);
out << ", " << "expr=" << to_string(expr);
out << ", " << "doGetFooters="; (__isset.doGetFooters ? (out << to_string(doGetFooters)) : (out << "<null>"));
+ out << ", " << "type="; (__isset.type ? (out << to_string(type)) : (out << "<null>"));
out << ")";
}
@@ -14438,17 +14470,17 @@ uint32_t GetFileMetadataResult::read(::apache::thrift::protocol::TProtocol* ipro
if (ftype == ::apache::thrift::protocol::T_MAP) {
{
this->metadata.clear();
- uint32_t _size629;
- ::apache::thrift::protocol::TType _ktype630;
- ::apache::thrift::protocol::TType _vtype631;
- xfer += iprot->readMapBegin(_ktype630, _vtype631, _size629);
- uint32_t _i633;
- for (_i633 = 0; _i633 < _size629; ++_i633)
+ uint32_t _size630;
+ ::apache::thrift::protocol::TType _ktype631;
+ ::apache::thrift::protocol::TType _vtype632;
+ xfer += iprot->readMapBegin(_ktype631, _vtype632, _size630);
+ uint32_t _i634;
+ for (_i634 = 0; _i634 < _size630; ++_i634)
{
- int64_t _key634;
- xfer += iprot->readI64(_key634);
- std::string& _val635 = this->metadata[_key634];
- xfer += iprot->readBinary(_val635);
+ int64_t _key635;
+ xfer += iprot->readI64(_key635);
+ std::string& _val636 = this->metadata[_key635];
+ xfer += iprot->readBinary(_val636);
}
xfer += iprot->readMapEnd();
}
@@ -14489,11 +14521,11 @@ uint32_t GetFileMetadataResult::write(::apache::thrift::protocol::TProtocol* opr
xfer += oprot->writeFieldBegin("metadata", ::apache::thrift::protocol::T_MAP, 1);
{
xfer += oprot->writeMapBegin(::apache::thrift::protocol::T_I64, ::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->metadata.size()));
- std::map<int64_t, std::string> ::const_iterator _iter636;
- for (_iter636 = this->metadata.begin(); _iter636 != this->metadata.end(); ++_iter636)
+ std::map<int64_t, std::string> ::const_iterator _iter637;
+ for (_iter637 = this->metadata.begin(); _iter637 != this->metadata.end(); ++_iter637)
{
- xfer += oprot->writeI64(_iter636->first);
- xfer += oprot->writeBinary(_iter636->second);
+ xfer += oprot->writeI64(_iter637->first);
+ xfer += oprot->writeBinary(_iter637->second);
}
xfer += oprot->writeMapEnd();
}
@@ -14514,13 +14546,13 @@ void swap(GetFileMetadataResult &a, GetFileMetadataResult &b) {
swap(a.isSupported, b.isSupported);
}
-GetFileMetadataResult::GetFileMetadataResult(const GetFileMetadataResult& other637) {
- metadata = other637.metadata;
- isSupported = other637.isSupported;
-}
-GetFileMetadataResult& GetFileMetadataResult::operator=(const GetFileMetadataResult& other638) {
+GetFileMetadataResult::GetFileMetadataResult(const GetFileMetadataResult& other638) {
metadata = other638.metadata;
isSupported = other638.isSupported;
+}
+GetFileMetadataResult& GetFileMetadataResult::operator=(const GetFileMetadataResult& other639) {
+ metadata = other639.metadata;
+ isSupported = other639.isSupported;
return *this;
}
void GetFileMetadataResult::printTo(std::ostream& out) const {
@@ -14566,14 +14598,14 @@ uint32_t GetFileMetadataRequest::read(::apache::thrift::protocol::TProtocol* ipr
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->fileIds.clear();
- uint32_t _size639;
- ::apache::thrift::protocol::TType _etype642;
- xfer += iprot->readListBegin(_etype642, _size639);
- this->fileIds.resize(_size639);
- uint32_t _i643;
- for (_i643 = 0; _i643 < _size639; ++_i643)
+ uint32_t _size640;
+ ::apache::thrift::protocol::TType _etype643;
+ xfer += iprot->readListBegin(_etype643, _size640);
+ this->fileIds.resize(_size640);
+ uint32_t _i644;
+ for (_i644 = 0; _i644 < _size640; ++_i644)
{
- xfer += iprot->readI64(this->fileIds[_i643]);
+ xfer += iprot->readI64(this->fileIds[_i644]);
}
xfer += iprot->readListEnd();
}
@@ -14604,10 +14636,10 @@ uint32_t GetFileMetadataRequest::write(::apache::thrift::protocol::TProtocol* op
xfer += oprot->writeFieldBegin("fileIds", ::apache::thrift::protocol::T_LIST, 1);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_I64, static_cast<uint32_t>(this->fileIds.size()));
- std::vector<int64_t> ::const_iterator _iter644;
- for (_iter644 = this->fileIds.begin(); _iter644 != this->fileIds.end(); ++_iter644)
+ std::vector<int64_t> ::const_iterator _iter645;
+ for (_iter645 = this->fileIds.begin(); _iter645 != this->fileIds.end(); ++_iter645)
{
- xfer += oprot->writeI64((*_iter644));
+ xfer += oprot->writeI64((*_iter645));
}
xfer += oprot->writeListEnd();
}
@@ -14623,11 +14655,11 @@ void swap(GetFileMetadataRequest &a, GetFileMetadataRequest &b) {
swap(a.fileIds, b.fileIds);
}
-GetFileMetadataRequest::GetFileMetadataRequest(const GetFileMetadataRequest& other645) {
- fileIds = other645.fileIds;
-}
-GetFileMetadataRequest& GetFileMetadataRequest::operator=(const GetFileMetadataRequest& other646) {
+GetFileMetadataRequest::GetFileMetadataRequest(const GetFileMetadataRequest& other646) {
fileIds = other646.fileIds;
+}
+GetFileMetadataRequest& GetFileMetadataRequest::operator=(const GetFileMetadataRequest& other647) {
+ fileIds = other647.fileIds;
return *this;
}
void GetFileMetadataRequest::printTo(std::ostream& out) const {
@@ -14686,11 +14718,11 @@ void swap(PutFileMetadataResult &a, PutFileMetadataResult &b) {
(void) b;
}
-PutFileMetadataResult::PutFileMetadataResult(const PutFileMetadataResult& other647) {
- (void) other647;
-}
-PutFileMetadataResult& PutFileMetadataResult::operator=(const PutFileMetadataResult& other648) {
+PutFileMetadataResult::PutFileMetadataResult(const PutFileMetadataResult& other648) {
(void) other648;
+}
+PutFileMetadataResult& PutFileMetadataResult::operator=(const PutFileMetadataResult& other649) {
+ (void) other649;
return *this;
}
void PutFileMetadataResult::printTo(std::ostream& out) const {
@@ -14739,14 +14771,14 @@ uint32_t PutFileMetadataRequest::read(::apache::thrift::protocol::TProtocol* ipr
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->fileIds.clear();
- uint32_t _size649;
- ::apache::thrift::protocol::TType _etype652;
- xfer += iprot->readListBegin(_etype652, _size649);
- this->fileIds.resize(_size649);
- uint32_t _i653;
- for (_i653 = 0; _i653 < _size649; ++_i653)
+ uint32_t _size650;
+ ::apache::thrift::protocol::TType _etype653;
+ xfer += iprot->readListBegin(_etype653, _size650);
+ this->fileIds.resize(_size650);
+ uint32_t _i654;
+ for (_i654 = 0; _i654 < _size650; ++_i654)
{
- xfer += iprot->readI64(this->fileIds[_i653]);
+ xfer += iprot->readI64(this->fileIds[_i654]);
}
xfer += iprot->readListEnd();
}
@@ -14759,14 +14791,14 @@ uint32_t PutFileMetadataRequest::read(::apache::thrift::protocol::TProtocol* ipr
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->metadata.clear();
- uint32_t _size654;
- ::apache::thrift::protocol::TType _etype657;
- xfer += iprot->readListBegin(_etype657, _size654);
- this->metadata.resize(_size654);
- uint32_t _i658;
- for (_i658 = 0; _i658 < _size654; ++_i658)
+ uint32_t _size655;
+ ::apache::thrift::protocol::TType _etype658;
+ xfer += iprot->readListBegin(_etype658, _size655);
+ this->metadata.resize(_size655);
+ uint32_t _i659;
+ for (_i659 = 0; _i659 < _size655; ++_i659)
{
- xfer += iprot->readBinary(this->metadata[_i658]);
+ xfer += iprot->readBinary(this->metadata[_i659]);
}
xfer += iprot->readListEnd();
}
@@ -14799,10 +14831,10 @@ uint32_t PutFileMetadataRequest::write(::apache::thrift::protocol::TProtocol* op
xfer += oprot->writeFieldBegin("fileIds", ::apache::thrift::protocol::T_LIST, 1);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_I64, static_cast<uint32_t>(this->fileIds.size()));
- std::vector<int64_t> ::const_iterator _iter659;
- for (_iter659 = this->fileIds.begin(); _iter659 != this->fileIds.end(); ++_iter659)
+ std::vector<int64_t> ::const_iterator _iter660;
+ for (_iter660 = this->fileIds.begin(); _iter660 != this->fileIds.end(); ++_iter660)
{
- xfer += oprot->writeI64((*_iter659));
+ xfer += oprot->writeI64((*_iter660));
}
xfer += oprot->writeListEnd();
}
@@ -14811,10 +14843,10 @@ uint32_t PutFileMetadataRequest::write(::apache::thrift::protocol::TProtocol* op
xfer += oprot->writeFieldBegin("metadata", ::apache::thrift::protocol::T_LIST, 2);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->metadata.size()));
- std::vector<std::string> ::const_iterator _iter660;
- for (_iter660 = this->metadata.begin(); _iter660 != this->metadata.end(); ++_iter660)
+ std::vector<std::string> ::const_iterator _iter661;
+ for (_iter661 = this->metadata.begin(); _iter661 != this->metadata.end(); ++_iter661)
{
- xfer += oprot->writeBinary((*_iter660));
+ xfer += oprot->writeBinary((*_iter661));
}
xfer += oprot->writeListEnd();
}
@@ -14831,13 +14863,13 @@ void swap(PutFileMetadataRequest &a, PutFileMetadataRequest &b) {
swap(a.metadata, b.metadata);
}
-PutFileMetadataRequest::PutFileMetadataRequest(const PutFileMetadataRequest& other661) {
- fileIds = other661.fileIds;
- metadata = other661.metadata;
-}
-PutFileMetadataRequest& PutFileMetadataRequest::operator=(const PutFileMetadataRequest& other662) {
+PutFileMetadataRequest::PutFileMetadataRequest(const PutFileMetadataRequest& other662) {
fileIds = other662.fileIds;
metadata = other662.metadata;
+}
+PutFileMetadataRequest& PutFileMetadataRequest::operator=(const PutFileMetadataRequest& other663) {
+ fileIds = other663.fileIds;
+ metadata = other663.metadata;
return *this;
}
void PutFileMetadataRequest::printTo(std::ostream& out) const {
@@ -14897,11 +14929,11 @@ void swap(ClearFileMetadataResult &a, ClearFileMetadataResult &b) {
(void) b;
}
-ClearFileMetadataResult::ClearFileMetadataResult(const ClearFileMetadataResult& other663) {
- (void) other663;
-}
-ClearFileMetadataResult& ClearFileMetadataResult::operator=(const ClearFileMetadataResult& other664) {
+ClearFileMetadataResult::ClearFileMetadataResult(const ClearFileMetadataResult& other664) {
(void) other664;
+}
+ClearFileMetadataResult& ClearFileMetadataResult::operator=(const ClearFileMetadataResult& other665) {
+ (void) other665;
return *this;
}
void ClearFileMetadataResult::printTo(std::ostream& out) const {
@@ -14945,14 +14977,14 @@ uint32_t ClearFileMetadataRequest::read(::apache::thrift::protocol::TProtocol* i
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->fileIds.clear();
- uint32_t _size665;
- ::apache::thrift::protocol::TType _etype668;
- xfer += iprot->readListBegin(_etype668, _size665);
- this->fileIds.resize(_size665);
- uint32_t _i669;
- for (_i669 = 0; _i669 < _size665; ++_i669)
+ uint32_t _size666;
+ ::apache::thrift::protocol::TType _etype669;
+ xfer += iprot->readListBegin(_etype669, _size666);
+ this->fileIds.resize(_size666);
+ uint32_t _i670;
+ for (_i670 = 0; _i670 < _size666; ++_i670)
{
- xfer += iprot->readI64(this->fileIds[_i669]);
+ xfer += iprot->readI64(this->fileIds[_i670]);
}
xfer += iprot->readListEnd();
}
@@ -14983,10 +15015,10 @@ uint32_t ClearFileMetadataRequest::write(::apache::thrift::protocol::TProtocol*
xfer += oprot->writeFieldBegin("fileIds", ::apache::thrift::protocol::T_LIST, 1);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_I64, static_cast<uint32_t>(this->fileIds.size()));
- std::vector<int64_t> ::const_iterator _iter670;
- for (_iter670 = this->fileIds.begin(); _iter670 != this->fileIds.end(); ++_iter670)
+ std::vector<int64_t> ::const_iterator _iter671;
+ for (_iter671 = this->fileIds.begin(); _iter671 != this->fileIds.end(); ++_iter671)
{
- xfer += oprot->writeI64((*_iter670));
+ xfer += oprot->writeI64((*_iter671));
}
xfer += oprot->writeListEnd();
}
@@ -15002,11 +15034,11 @@ void swap(ClearFileMetadataRequest &a, ClearFileMetadataRequest &b) {
swap(a.fileIds, b.fileIds);
}
-ClearFileMetadataRequest::ClearFileMetadataRequest(const ClearFileMetadataRequest& other671) {
- fileIds = other671.fileIds;
-}
-ClearFileMetadataRequest& ClearFileMetadataRequest::operator=(const ClearFileMetadataRequest& other672) {
+ClearFileMetadataRequest::ClearFileMetadataRequest(const ClearFileMetadataRequest& other672) {
fileIds = other672.fileIds;
+}
+ClearFileMetadataRequest& ClearFileMetadataRequest::operator=(const ClearFileMetadataRequest& other673) {
+ fileIds = other673.fileIds;
return *this;
}
void ClearFileMetadataRequest::printTo(std::ostream& out) const {
@@ -15051,14 +15083,14 @@ uint32_t GetAllFunctionsResponse::read(::apache::thrift::protocol::TProtocol* ip
if (ftype == ::apache::thrift::protocol::T_LIST) {
{
this->functions.clear();
- uint32_t _size673;
- ::apache::thrift::protocol::TType _etype676;
- xfer += iprot->readListBegin(_etype676, _size673);
- this->functions.resize(_size673);
- uint32_t _i677;
- for (_i677 = 0; _i677 < _size673; ++_i677)
+ uint32_t _size674;
+ ::apache::thrift::protocol::TType _etype677;
+ xfer += iprot->readListBegin(_etype677, _size674);
+ this->functions.resize(_size674);
+ uint32_t _i678;
+ for (_i678 = 0; _i678 < _size674; ++_i678)
{
- xfer += this->functions[_i677].read(iprot);
+ xfer += this->functions[_i678].read(iprot);
}
xfer += iprot->readListEnd();
}
@@ -15088,10 +15120,10 @@ uint32_t GetAllFunctionsResponse::write(::apache::thrift::protocol::TProtocol* o
xfer += oprot->writeFieldBegin("functions", ::apache::thrift::protocol::T_LIST, 1);
{
xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->functions.size()));
- std::vector<Function> ::const_iterator _iter678;
- for (_iter678 = this->functions.begin(); _iter678 != this->functions.end(); ++_iter678)
+ std::vector<Function> ::const_iterator _iter679;
+ for (_iter679 = this->functions.begin(); _iter679 != this->functions.end(); ++_iter679)
{
- xfer += (*_iter678).write(oprot);
+ xfer += (*_iter679).write(oprot);
}
xfer += oprot->writeListEnd();
}
@@ -15108,13 +15140,13 @@ void swap(GetAllFunctionsResponse &a, GetAllFunctionsResponse &b) {
swap(a.__isset, b.__isset);
}
-GetAllFunctionsResponse::GetAllFunctionsResponse(const GetAllFunctionsResponse& other679) {
- functions = other679.functions;
- __isset = other679.__isset;
-}
-GetAllFunctionsResponse& GetAllFunctionsResponse::operator=(const GetAllFunctionsResponse& other680) {
+GetAllFunctionsResponse::GetAllFunctionsResponse(const GetAllFunctionsResponse& other680) {
functions = other680.functions;
__isset = other680.__isset;
+}
+GetAllFunctionsResponse& GetAllFunctionsResponse::operator=(const GetAllFunctionsResponse& other681) {
+ functions = other681.functions;
+ __isset = other681.__isset;
return *this;
}
void GetAllFunctionsResponse::printTo(std::ostream& out) const {
@@ -15194,13 +15226,13 @@ void swap(MetaException &a, MetaException &b) {
swap(a.__isset, b.__isset);
}
-MetaException::MetaException(const MetaException& other681) : TException() {
- message = other681.message;
- __isset = other681.__isset;
-}
-MetaException& MetaException::operator=(const MetaException& other682) {
+MetaException::MetaException(const MetaException& other682) : TException() {
message = other682.message;
__isset = other682.__isset;
+}
+MetaException& MetaException::operator=(const MetaException& other683) {
+ message = other683.message;
+ __isset = other683.__isset;
return *this;
}
void MetaException::printTo(std::ostream& out) const {
@@ -15291,13 +15323,13 @@ void swap(UnknownTableException &a, UnknownTableException &b) {
swap(a.__isset, b.__isset);
}
-UnknownTableException::UnknownTableException(const UnknownTableException& other683) : TException() {
- message = other683.message;
- __isset = other683.__isset;
-}
-UnknownTableException& UnknownTableException::operator=(const UnknownTableException& other684) {
+UnknownTableException::UnknownTableException(const UnknownTableException& other684) : TException() {
message = other684.message;
__isset = other684.__isset;
+}
+UnknownTableException& UnknownTableException::operator=(const UnknownTableException& other685) {
+ message = other685.message;
+ __isset = other685.__isset;
return *this;
}
void UnknownTableException::printTo(std::ostream& out) const {
@@ -15388,13 +15420,13 @@ void swap(UnknownDBException &a, UnknownDBException &b) {
swap(a.__isset, b.__isset);
}
-UnknownDBException::UnknownDBException(const UnknownDBException& other685) : TException() {
- message = other685.message;
- __isset = other685.__isset;
-}
-UnknownDBException& UnknownDBException::operator=(const UnknownDBException& other686) {
+UnknownDBException::UnknownDBException(const UnknownDBException& other686) : TException() {
message = other686.message;
__isset = other686.__isset;
+}
+UnknownDBException& UnknownDBException::operator=(const UnknownDBException& other687) {
+ message = other687.message;
+ __isset = other687.__isset;
return *this;
}
void UnknownDBException::printTo(std::ostream& out) const {
@@ -15485,13 +15517,13 @@ void swap(AlreadyExistsException &a, AlreadyExistsException &b) {
swap(a.__isset, b.__isset);
}
-AlreadyExistsException::AlreadyExistsException(const AlreadyExistsException& other687) : TException() {
- message = other687.message;
- __isset = other687.__isset;
-}
-AlreadyExistsException& AlreadyExistsException::operator=(const AlreadyExistsException& other688) {
+AlreadyExistsException::AlreadyExistsException(const AlreadyExistsException& other688) : TException() {
message = other688.message;
__isset = other688.__isset;
+}
+AlreadyExistsException& AlreadyExistsException::operator=(const AlreadyExistsException& other689) {
+ message = other689.message;
+ __isset = other689.__isset;
return *this;
}
void AlreadyExistsException::printTo(std::ostream& out) const {
@@ -15582,13 +15614,13 @@ void swap(InvalidPartitionException &a, InvalidPartitionException &b) {
swap(a.__isset, b.__isset);
}
-InvalidPartitionException::InvalidPartitionException(const InvalidPartitionException& other689) : TException() {
- message = other689.message;
- __isset = other689.__isset;
-}
-InvalidPartitionException& InvalidPartitionException::operator=(const InvalidPartitionException& other690) {
+InvalidPartitionException::InvalidPartitionException(const InvalidPartitionException& other690) : TException() {
message = other690.message;
__isset = other690.__isset;
+}
+InvalidPartitionException& InvalidPartitionException::operator=(const InvalidPartitionException& other691) {
+ message = other691.message;
+ __isset = other691.__isset;
return *this;
}
void InvalidPartitionException::printTo(std::ostream& out) const {
@@ -15679,13 +15711,13 @@ void swap(UnknownPartitionException &a, UnknownPartitionException &b) {
swap(a.__isset, b.__isset);
}
-UnknownPartitionException::UnknownPartitionException(const UnknownPartitionException& other691) : TException() {
- message = other691.message;
- __isset = other691.__isset;
-}
-UnknownPartitionException& UnknownPartitionException::operator=(const UnknownPartitionException& other692) {
+UnknownPartitionException::UnknownPartitionException(const UnknownPartitionException& other692) : TException() {
message = other692.message;
__isset = other692.__isset;
+}
+UnknownPartitionException& UnknownPartitionException::operator=(const UnknownPartitionException& other693) {
+ message = other693.message;
+ __isset = other693.__isset;
return *this;
}
void UnknownPartitionException::printTo(std::ostream& out) const {
@@ -15776,13 +15808,13 @@ void swap(InvalidObjectException &a, InvalidObjectException &b) {
swap(a.__isset, b.__isset);
}
-InvalidObjectException::InvalidObjectException(const InvalidObjectException& other693) : TException() {
- message = other693.message;
- __isset = other693.__isset;
-}
-InvalidObjectException& InvalidObjectException::operator=(const InvalidObjectException& other694) {
+InvalidObjectException::InvalidObjectException(const InvalidObjectException& other694) : TException() {
message = other694.message;
__isset = other694.__isset;
+}
+InvalidObjectException& InvalidObjectException::operator=(const InvalidObjectException& other695) {
+ message = other695.message;
+ __isset = other695.__isset;
return *this;
}
void InvalidObjectException::printTo(std::ostream& out) const {
@@ -15873,13 +15905,13 @@ void swap(NoSuchObjectException &a, NoSuchObjectException &b) {
swap(a.__isset, b.__isset);
}
-NoSuchObjectException::NoSuchObjectException(const NoSuchObjectException& other695) : TException() {
- message = other695.message;
- __isset = other695.__isset;
-}
-NoSuchObjectException& NoSuchObjectException::operator=(const NoSuchObjectException& other696) {
+NoSuchObjectException::NoSuchObjectException(const NoSuchObjectException& other696) : TException() {
message = other696.message;
__isset = other696.__isset;
+}
+NoSuchObjectException& NoSuchObjectException::operator=(const NoSuchObjectException& other697) {
+ message = other697.message;
+ __isset = other697.__isset;
return *this;
}
void NoSuchObjectException::printTo(std::ostream& out) const {
@@ -15970,13 +16002,13 @@ void swap(IndexAlreadyExistsException &a, IndexAlreadyExistsException &b) {
swap(a.__isset, b.__isset);
}
-IndexAlreadyExistsException::IndexAlreadyExistsException(const IndexAlreadyExistsException& other697) : TException() {
- message = other697.message;
- __isset = other697.__isset;
-}
-IndexAlreadyExistsException& IndexAlreadyExistsException::operator=(const IndexAlreadyExistsException& other698) {
+IndexAlreadyExistsException::IndexAlreadyExistsException(const IndexAlreadyExistsException& other698) : TException() {
message = other698.message;
__isset = other698.__isset;
+}
+IndexAlreadyExistsException& IndexAlreadyExistsException::operator=(const IndexAlreadyExistsException& other699) {
+ message = other699.message;
+ __isset = other699.__isset;
return *this;
}
void IndexAlreadyExistsException::printTo(std::ostream& out) const {
@@ -16067,13 +16099,13 @@ void swap(InvalidOperationException &a, InvalidOperationException &b) {
swap(a.__isset, b.__isset);
}
-InvalidOperationException::InvalidOperationException(const InvalidOperationException& other699) : TException() {
- message = other699.message;
- __isset = other699.__isset;
-}
-InvalidOperationException& InvalidOperationException::operator=(const InvalidOperationException& other700) {
+InvalidOperationException::InvalidOperationException(const InvalidOperationException& other700) : TException() {
message = other700.message;
__isset = other700.__isset;
+}
+InvalidOperationException& InvalidOperationException::operator=(const InvalidOperationException& other701) {
+ message = other701.message;
+ __isset = other701.__isset;
return *this;
}
void InvalidOperationException::printTo(std::ostream& out) const {
@@ -16164,13 +16196,13 @@ void swap(ConfigValSecurityException &a, ConfigValSecurityException &b) {
swap(a.__isset, b.__isset);
}
-ConfigValSecurityException::ConfigValSecurityException(const ConfigValSecurityException& other701) : TException() {
- message = other701.message;
- __isset = other701.__isset;
-}
-ConfigValSecurityException& ConfigValSecurityException::operator=(const ConfigValSecurityException& other702) {
+ConfigValSecurityException::ConfigValSecurityException(const ConfigValSecurityException& other702) : TException() {
message = other702.message;
__isset = other702.__isset;
+}
+ConfigValSecurityException& ConfigValSecurityException::operator=(const ConfigValSecurityException& other703) {
+ message = other703.message;
+ __isset = other703.__isset;
return *this;
}
void ConfigValSecurityException::printTo(std::ostream& out) const {
@@ -16261,13 +16293,13 @@ void swap(InvalidInputException &a, InvalidInputException &b) {
swap(a.__isset, b.__isset);
}
-InvalidInputException::InvalidInputException(const InvalidInputException& other703) : TException() {
- message = other703.message;
- __isset = other703.__isset;
-}
-InvalidInputException& InvalidInputException::operator=(const InvalidInputException& other704) {
+InvalidInputException::InvalidInputException(const InvalidInputException& other704) : TException() {
message = other704.message;
__isset = other704.__isset;
+}
+InvalidInputException& InvalidInputException::operator=(const InvalidInputException& other705) {
+ message = other705.message;
+ __isset = other705.__isset;
return *this;
}
void InvalidInputException::printTo(std::ostream& out) const {
@@ -16358,13 +16390,13 @@ void swap(NoSuchTxnException &a, NoSuchTxnException &b) {
swap(a.__isset, b.__isset);
}
-NoSuchTxnException::NoSuchTxnException(const NoSuchTxnException& other705) : TException() {
- message = other705.message;
- __isset = other705.__isset;
-}
-NoSuchTxnException& NoSuchTxnException::operator=(const NoSuchTxnException& other706) {
+NoSuchTxnException::NoSuchTxnException(const NoSuchTxnException& other706) : TException() {
message = other706.message;
__isset = other706.__isset;
+}
+NoSuchTxnException& NoSuchTxnException::operator=(const NoSuchTxnException& other707) {
+ message = other707.message;
+ __isset = other707.__isset;
return *this;
}
void NoSuchTxnException::printTo(std::ostream& out) const {
@@ -16455,13 +16487,13 @@ void swap(TxnAbortedException &a, TxnAbortedException &b) {
swap(a.__isset, b.__isset);
}
-TxnAbortedException::TxnAbortedException(const TxnAbortedException& other707) : TException() {
- message = other707.message;
- __isset = other707.__isset;
-}
-TxnAbortedException& TxnAbortedException::operator=(const TxnAbortedException& other708) {
+TxnAbortedException::TxnAbortedException(const TxnAbortedException& other708) : TException() {
message = other708.message;
__isset = other708.__isset;
+}
+TxnAbortedException& TxnAbortedException::operator=(const TxnAbortedException& other709) {
+ message = other709.message;
+ __isset = other709.__isset;
return *this;
}
void TxnAbortedException::printTo(std::ostream& out) const {
@@ -16552,13 +16584,13 @@ void swap(TxnOpenException &a, TxnOpenException &b) {
swap(a.__isset, b.__isset);
}
-TxnOpenException::TxnOpenException(const TxnOpenException& other709) : TException() {
- message = other709.message;
- __isset = other709.__isset;
-}
-TxnOpenException& TxnOpenException::operator=(const TxnOpenException& other710) {
+TxnOpenException::TxnOpenException(const TxnOpenException& other710) : TException() {
message = other710.message;
__isset = other710.__isset;
+}
+TxnOpenException& TxnOpenException::operator=(const TxnOpenException& other711) {
+ message = other711.message;
+ __isset = other711.__isset;
return *this;
}
void TxnOpenException::printTo(std::ostream& out) const {
@@ -16649,13 +16681,13 @@ void swap(NoSuchLockException &a, NoSuchLockException &b) {
swap(a.__isset, b.__isset);
}
-NoSuchLockException::NoSuchLockException(const NoSuchLockException& other711) : TException() {
- message = other711.message;
- __isset = other711.__isset;
-}
-NoSuchLockException& NoSuchLockException::operator=(const NoSuchLockException& other712) {
+NoSuchLockException::NoSuchLockException(const NoSuchLockException& other712) : TException() {
message = other712.message;
__isset = other712.__isset;
+}
+NoSuchLockException& NoSuchLockException::operator=(const NoSuchLockException& other713) {
+ message = other713.message;
+ __isset = other713.__isset;
return *this;
}
void NoSuchLockException::printTo(std::ostream& out) const {
http://git-wip-us.apache.org/repos/asf/hive/blob/e5b53032/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.h
----------------------------------------------------------------------
diff --git a/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.h b/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.h
index c20badd..53ab272 100644
--- a/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.h
+++ b/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.h
@@ -137,6 +137,14 @@ struct ResourceType {
extern const std::map<int, const char*> _ResourceType_VALUES_TO_NAMES;
+struct FileMetadataExprType {
+ enum type {
+ ORC_SARG = 1
+ };
+};
+
+extern const std::map<int, const char*> _FileMetadataExprType_VALUES_TO_NAMES;
+
class Version;
class FieldSchema;
@@ -5797,8 +5805,9 @@ inline std::ostream& operator<<(std::ostream& out, const GetFileMetadataByExprRe
}
typedef struct _GetFileMetadataByExprRequest__isset {
- _GetFileMetadataByExprRequest__isset() : doGetFooters(false) {}
+ _GetFileMetadataByExprRequest__isset() : doGetFooters(false), type(false) {}
bool doGetFooters :1;
+ bool type :1;
} _GetFileMetadataByExprRequest__isset;
class GetFileMetadataByExprRequest {
@@ -5806,13 +5815,14 @@ class GetFileMetadataByExprRequest {
GetFileMetadataByExprRequest(const GetFileMetadataByExprRequest&);
GetFileMetadataByExprRequest& operator=(const GetFileMetadataByExprRequest&);
- GetFileMetadataByExprRequest() : expr(), doGetFooters(0) {
+ GetFileMetadataByExprRequest() : expr(), doGetFooters(0), type((FileMetadataExprType::type)0) {
}
virtual ~GetFileMetadataByExprRequest() throw();
std::vector<int64_t> fileIds;
std::string expr;
bool doGetFooters;
+ FileMetadataExprType::type type;
_GetFileMetadataByExprRequest__isset __isset;
@@ -5822,6 +5832,8 @@ class GetFileMetadataByExprRequest {
void __set_doGetFooters(const bool val);
+ void __set_type(const FileMetadataExprType::type val);
+
bool operator == (const GetFileMetadataByExprRequest & rhs) const
{
if (!(fileIds == rhs.fileIds))
@@ -5832,6 +5844,10 @@ class GetFileMetadataByExprRequest {
return false;
else if (__isset.doGetFooters && !(doGetFooters == rhs.doGetFooters))
return false;
+ if (__isset.type != rhs.__isset.type)
+ return false;
+ else if (__isset.type && !(type == rhs.type))
+ return false;
return true;
}
bool operator != (const GetFileMetadataByExprRequest &rhs) const {
http://git-wip-us.apache.org/repos/asf/hive/blob/e5b53032/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/FileMetadataExprType.java
----------------------------------------------------------------------
diff --git a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/FileMetadataExprType.java b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/FileMetadataExprType.java
new file mode 100644
index 0000000..4e393e2
--- /dev/null
+++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/FileMetadataExprType.java
@@ -0,0 +1,42 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+package org.apache.hadoop.hive.metastore.api;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import org.apache.thrift.TEnum;
+
+public enum FileMetadataExprType implements org.apache.thrift.TEnum {
+ ORC_SARG(1);
+
+ private final int value;
+
+ private FileMetadataExprType(int value) {
+ this.value = value;
+ }
+
+ /**
+ * Get the integer value of this enum value, as defined in the Thrift IDL.
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * Find a the enum type by its integer value, as defined in the Thrift IDL.
+ * @return null if the value is not found.
+ */
+ public static FileMetadataExprType findByValue(int value) {
+ switch (value) {
+ case 1:
+ return ORC_SARG;
+ default:
+ return null;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/e5b53032/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetFileMetadataByExprRequest.java
----------------------------------------------------------------------
diff --git a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetFileMetadataByExprRequest.java b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetFileMetadataByExprRequest.java
index b880093..0236b4a 100644
--- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetFileMetadataByExprRequest.java
+++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetFileMetadataByExprRequest.java
@@ -41,6 +41,7 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
private static final org.apache.thrift.protocol.TField FILE_IDS_FIELD_DESC = new org.apache.thrift.protocol.TField("fileIds", org.apache.thrift.protocol.TType.LIST, (short)1);
private static final org.apache.thrift.protocol.TField EXPR_FIELD_DESC = new org.apache.thrift.protocol.TField("expr", org.apache.thrift.protocol.TType.STRING, (short)2);
private static final org.apache.thrift.protocol.TField DO_GET_FOOTERS_FIELD_DESC = new org.apache.thrift.protocol.TField("doGetFooters", org.apache.thrift.protocol.TType.BOOL, (short)3);
+ private static final org.apache.thrift.protocol.TField TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("type", org.apache.thrift.protocol.TType.I32, (short)4);
private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
static {
@@ -51,12 +52,18 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
private List<Long> fileIds; // required
private ByteBuffer expr; // required
private boolean doGetFooters; // optional
+ private FileMetadataExprType type; // optional
/** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
public enum _Fields implements org.apache.thrift.TFieldIdEnum {
FILE_IDS((short)1, "fileIds"),
EXPR((short)2, "expr"),
- DO_GET_FOOTERS((short)3, "doGetFooters");
+ DO_GET_FOOTERS((short)3, "doGetFooters"),
+ /**
+ *
+ * @see FileMetadataExprType
+ */
+ TYPE((short)4, "type");
private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
@@ -77,6 +84,8 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
return EXPR;
case 3: // DO_GET_FOOTERS
return DO_GET_FOOTERS;
+ case 4: // TYPE
+ return TYPE;
default:
return null;
}
@@ -119,7 +128,7 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
// isset id assignments
private static final int __DOGETFOOTERS_ISSET_ID = 0;
private byte __isset_bitfield = 0;
- private static final _Fields optionals[] = {_Fields.DO_GET_FOOTERS};
+ private static final _Fields optionals[] = {_Fields.DO_GET_FOOTERS,_Fields.TYPE};
public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
static {
Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -130,6 +139,8 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING , true)));
tmpMap.put(_Fields.DO_GET_FOOTERS, new org.apache.thrift.meta_data.FieldMetaData("doGetFooters", org.apache.thrift.TFieldRequirementType.OPTIONAL,
new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+ tmpMap.put(_Fields.TYPE, new org.apache.thrift.meta_data.FieldMetaData("type", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, FileMetadataExprType.class)));
metaDataMap = Collections.unmodifiableMap(tmpMap);
org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(GetFileMetadataByExprRequest.class, metaDataMap);
}
@@ -159,6 +170,9 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
this.expr = org.apache.thrift.TBaseHelper.copyBinary(other.expr);
}
this.doGetFooters = other.doGetFooters;
+ if (other.isSetType()) {
+ this.type = other.type;
+ }
}
public GetFileMetadataByExprRequest deepCopy() {
@@ -171,6 +185,7 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
this.expr = null;
setDoGetFootersIsSet(false);
this.doGetFooters = false;
+ this.type = null;
}
public int getFileIdsSize() {
@@ -265,6 +280,37 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
__isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DOGETFOOTERS_ISSET_ID, value);
}
+ /**
+ *
+ * @see FileMetadataExprType
+ */
+ public FileMetadataExprType getType() {
+ return this.type;
+ }
+
+ /**
+ *
+ * @see FileMetadataExprType
+ */
+ public void setType(FileMetadataExprType type) {
+ this.type = type;
+ }
+
+ public void unsetType() {
+ this.type = null;
+ }
+
+ /** Returns true if field type is set (has been assigned a value) and false otherwise */
+ public boolean isSetType() {
+ return this.type != null;
+ }
+
+ public void setTypeIsSet(boolean value) {
+ if (!value) {
+ this.type = null;
+ }
+ }
+
public void setFieldValue(_Fields field, Object value) {
switch (field) {
case FILE_IDS:
@@ -291,6 +337,14 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
}
break;
+ case TYPE:
+ if (value == null) {
+ unsetType();
+ } else {
+ setType((FileMetadataExprType)value);
+ }
+ break;
+
}
}
@@ -305,6 +359,9 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
case DO_GET_FOOTERS:
return isDoGetFooters();
+ case TYPE:
+ return getType();
+
}
throw new IllegalStateException();
}
@@ -322,6 +379,8 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
return isSetExpr();
case DO_GET_FOOTERS:
return isSetDoGetFooters();
+ case TYPE:
+ return isSetType();
}
throw new IllegalStateException();
}
@@ -366,6 +425,15 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
return false;
}
+ boolean this_present_type = true && this.isSetType();
+ boolean that_present_type = true && that.isSetType();
+ if (this_present_type || that_present_type) {
+ if (!(this_present_type && that_present_type))
+ return false;
+ if (!this.type.equals(that.type))
+ return false;
+ }
+
return true;
}
@@ -388,6 +456,11 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
if (present_doGetFooters)
list.add(doGetFooters);
+ boolean present_type = true && (isSetType());
+ list.add(present_type);
+ if (present_type)
+ list.add(type.getValue());
+
return list.hashCode();
}
@@ -429,6 +502,16 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
return lastComparison;
}
}
+ lastComparison = Boolean.valueOf(isSetType()).compareTo(other.isSetType());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetType()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.type, other.type);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
return 0;
}
@@ -470,6 +553,16 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
sb.append(this.doGetFooters);
first = false;
}
+ if (isSetType()) {
+ if (!first) sb.append(", ");
+ sb.append("type:");
+ if (this.type == null) {
+ sb.append("null");
+ } else {
+ sb.append(this.type);
+ }
+ first = false;
+ }
sb.append(")");
return sb.toString();
}
@@ -557,6 +650,14 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
}
break;
+ case 4: // TYPE
+ if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+ struct.type = org.apache.hadoop.hive.metastore.api.FileMetadataExprType.findByValue(iprot.readI32());
+ struct.setTypeIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
default:
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
}
@@ -592,6 +693,13 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
oprot.writeBool(struct.doGetFooters);
oprot.writeFieldEnd();
}
+ if (struct.type != null) {
+ if (struct.isSetType()) {
+ oprot.writeFieldBegin(TYPE_FIELD_DESC);
+ oprot.writeI32(struct.type.getValue());
+ oprot.writeFieldEnd();
+ }
+ }
oprot.writeFieldStop();
oprot.writeStructEnd();
}
@@ -621,10 +729,16 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
if (struct.isSetDoGetFooters()) {
optionals.set(0);
}
- oprot.writeBitSet(optionals, 1);
+ if (struct.isSetType()) {
+ optionals.set(1);
+ }
+ oprot.writeBitSet(optionals, 2);
if (struct.isSetDoGetFooters()) {
oprot.writeBool(struct.doGetFooters);
}
+ if (struct.isSetType()) {
+ oprot.writeI32(struct.type.getValue());
+ }
}
@Override
@@ -643,11 +757,15 @@ public class GetFileMetadataByExprRequest implements org.apache.thrift.TBase<Get
struct.setFileIdsIsSet(true);
struct.expr = iprot.readBinary();
struct.setExprIsSet(true);
- BitSet incoming = iprot.readBitSet(1);
+ BitSet incoming = iprot.readBitSet(2);
if (incoming.get(0)) {
struct.doGetFooters = iprot.readBool();
struct.setDoGetFootersIsSet(true);
}
+ if (incoming.get(1)) {
+ struct.type = org.apache.hadoop.hive.metastore.api.FileMetadataExprType.findByValue(iprot.readI32());
+ struct.setTypeIsSet(true);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/e5b53032/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 3ec2b1c..e63213d 100644
--- a/metastore/src/gen/thrift/gen-php/metastore/Types.php
+++ b/metastore/src/gen/thrift/gen-php/metastore/Types.php
@@ -143,6 +143,13 @@ final class ResourceType {
);
}
+final class FileMetadataExprType {
+ const ORC_SARG = 1;
+ static public $__names = array(
+ 1 => 'ORC_SARG',
+ );
+}
+
class Version {
static $_TSPEC;
@@ -14108,6 +14115,10 @@ class GetFileMetadataByExprRequest {
* @var bool
*/
public $doGetFooters = null;
+ /**
+ * @var int
+ */
+ public $type = null;
public function __construct($vals=null) {
if (!isset(self::$_TSPEC)) {
@@ -14128,6 +14139,10 @@ class GetFileMetadataByExprRequest {
'var' => 'doGetFooters',
'type' => TType::BOOL,
),
+ 4 => array(
+ 'var' => 'type',
+ 'type' => TType::I32,
+ ),
);
}
if (is_array($vals)) {
@@ -14140,6 +14155,9 @@ class GetFileMetadataByExprRequest {
if (isset($vals['doGetFooters'])) {
$this->doGetFooters = $vals['doGetFooters'];
}
+ if (isset($vals['type'])) {
+ $this->type = $vals['type'];
+ }
}
}
@@ -14193,6 +14211,13 @@ class GetFileMetadataByExprRequest {
$xfer += $input->skip($ftype);
}
break;
+ case 4:
+ if ($ftype == TType::I32) {
+ $xfer += $input->readI32($this->type);
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ break;
default:
$xfer += $input->skip($ftype);
break;
@@ -14233,6 +14258,11 @@ class GetFileMetadataByExprRequest {
$xfer += $output->writeBool($this->doGetFooters);
$xfer += $output->writeFieldEnd();
}
+ if ($this->type !== null) {
+ $xfer += $output->writeFieldBegin('type', TType::I32, 4);
+ $xfer += $output->writeI32($this->type);
+ $xfer += $output->writeFieldEnd();
+ }
$xfer += $output->writeFieldStop();
$xfer += $output->writeStructEnd();
return $xfer;
http://git-wip-us.apache.org/repos/asf/hive/blob/e5b53032/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 221d602..8940dff 100644
--- a/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py
+++ b/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py
@@ -213,6 +213,17 @@ class ResourceType:
"ARCHIVE": 3,
}
+class FileMetadataExprType:
+ ORC_SARG = 1
+
+ _VALUES_TO_NAMES = {
+ 1: "ORC_SARG",
+ }
+
+ _NAMES_TO_VALUES = {
+ "ORC_SARG": 1,
+ }
+
class Version:
"""
@@ -9927,6 +9938,7 @@ class GetFileMetadataByExprRequest:
- fileIds
- expr
- doGetFooters
+ - type
"""
thrift_spec = (
@@ -9934,12 +9946,14 @@ class GetFileMetadataByExprRequest:
(1, TType.LIST, 'fileIds', (TType.I64,None), None, ), # 1
(2, TType.STRING, 'expr', None, None, ), # 2
(3, TType.BOOL, 'doGetFooters', None, None, ), # 3
+ (4, TType.I32, 'type', None, None, ), # 4
)
- def __init__(self, fileIds=None, expr=None, doGetFooters=None,):
+ def __init__(self, fileIds=None, expr=None, doGetFooters=None, type=None,):
self.fileIds = fileIds
self.expr = expr
self.doGetFooters = doGetFooters
+ self.type = type
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:
@@ -9970,6 +9984,11 @@ class GetFileMetadataByExprRequest:
self.doGetFooters = iprot.readBool()
else:
iprot.skip(ftype)
+ elif fid == 4:
+ if ftype == TType.I32:
+ self.type = iprot.readI32()
+ else:
+ iprot.skip(ftype)
else:
iprot.skip(ftype)
iprot.readFieldEnd()
@@ -9995,6 +10014,10 @@ class GetFileMetadataByExprRequest:
oprot.writeFieldBegin('doGetFooters', TType.BOOL, 3)
oprot.writeBool(self.doGetFooters)
oprot.writeFieldEnd()
+ if self.type is not None:
+ oprot.writeFieldBegin('type', TType.I32, 4)
+ oprot.writeI32(self.type)
+ oprot.writeFieldEnd()
oprot.writeFieldStop()
oprot.writeStructEnd()
@@ -10011,6 +10034,7 @@ class GetFileMetadataByExprRequest:
value = (value * 31) ^ hash(self.fileIds)
value = (value * 31) ^ hash(self.expr)
value = (value * 31) ^ hash(self.doGetFooters)
+ value = (value * 31) ^ hash(self.type)
return value
def __repr__(self):
http://git-wip-us.apache.org/repos/asf/hive/blob/e5b53032/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 cfabbb8..08b9b06 100644
--- a/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb
+++ b/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb
@@ -101,6 +101,12 @@ module ResourceType
VALID_VALUES = Set.new([JAR, FILE, ARCHIVE]).freeze
end
+module FileMetadataExprType
+ ORC_SARG = 1
+ VALUE_MAP = {1 => "ORC_SARG"}
+ VALID_VALUES = Set.new([ORC_SARG]).freeze
+end
+
class Version
include ::Thrift::Struct, ::Thrift::Struct_Union
VERSION = 1
@@ -2274,11 +2280,13 @@ class GetFileMetadataByExprRequest
FILEIDS = 1
EXPR = 2
DOGETFOOTERS = 3
+ TYPE = 4
FIELDS = {
FILEIDS => {:type => ::Thrift::Types::LIST, :name => 'fileIds', :element => {:type => ::Thrift::Types::I64}},
EXPR => {:type => ::Thrift::Types::STRING, :name => 'expr', :binary => true},
- DOGETFOOTERS => {:type => ::Thrift::Types::BOOL, :name => 'doGetFooters', :optional => true}
+ DOGETFOOTERS => {:type => ::Thrift::Types::BOOL, :name => 'doGetFooters', :optional => true},
+ TYPE => {:type => ::Thrift::Types::I32, :name => 'type', :optional => true, :enum_class => ::FileMetadataExprType}
}
def struct_fields; FIELDS; end
@@ -2286,6 +2294,9 @@ class GetFileMetadataByExprRequest
def validate
raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field fileIds is unset!') unless @fileIds
raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field expr is unset!') unless @expr
+ unless @type.nil? || ::FileMetadataExprType::VALID_VALUES.include?(@type)
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field type!')
+ end
end
::Thrift::Struct.generate_accessors self
http://git-wip-us.apache.org/repos/asf/hive/blob/e5b53032/metastore/src/java/org/apache/hadoop/hive/metastore/FileMetadataHandler.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/FileMetadataHandler.java b/metastore/src/java/org/apache/hadoop/hive/metastore/FileMetadataHandler.java
new file mode 100644
index 0000000..7c3525a
--- /dev/null
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/FileMetadataHandler.java
@@ -0,0 +1,30 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.metastore;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.List;
+
+public interface FileMetadataHandler {
+
+ void getFileMetadataByExpr(List<Long> fileIds, byte[] expr,
+ ByteBuffer[] metadatas, ByteBuffer[] results, boolean[] eliminated) throws IOException;
+
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/e5b53032/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
index 40e6e62..8ed4310 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
@@ -5617,13 +5617,16 @@ public class HiveMetaStore extends ThriftHiveMetastore {
return result;
}
result.setIsSupported(true);
+
List<Long> fileIds = req.getFileIds();
- byte[] expr = req.getExpr();
- boolean needMetadata = req.isDoGetFooters();
- ByteBuffer[] metadatas = new ByteBuffer[fileIds.size()];
- ByteBuffer[] stripeBitsets = new ByteBuffer[fileIds.size()];
+ boolean needMetadata = !req.isSetDoGetFooters() || req.isDoGetFooters();
+ FileMetadataExprType type = req.isSetType() ? req.getType() : FileMetadataExprType.ORC_SARG;
+
+ ByteBuffer[] metadatas = needMetadata ? new ByteBuffer[fileIds.size()] : null;
+ ByteBuffer[] ppdResults = new ByteBuffer[fileIds.size()];
boolean[] eliminated = new boolean[fileIds.size()];
- getMS().getFileMetadataByExpr(fileIds, expr, metadatas, stripeBitsets, eliminated);
+
+ getMS().getFileMetadataByExpr(fileIds, type, req.getExpr(), metadatas, ppdResults, eliminated);
for (int i = 0; i < metadatas.length; ++i) {
long fileId = fileIds.get(i);
ByteBuffer metadata = metadatas[i];
@@ -5631,7 +5634,7 @@ public class HiveMetaStore extends ThriftHiveMetastore {
metadata = (eliminated[i] || !needMetadata) ? null
: handleReadOnlyBufferForThrift(metadata);
MetadataPpdResult mpr = new MetadataPpdResult();
- ByteBuffer bitset = eliminated[i] ? null : handleReadOnlyBufferForThrift(stripeBitsets[i]);
+ ByteBuffer bitset = eliminated[i] ? null : handleReadOnlyBufferForThrift(ppdResults[i]);
mpr.setMetadata(metadata);
mpr.setIncludeBitset(bitset);
result.putToMetadata(fileId, mpr);
http://git-wip-us.apache.org/repos/asf/hive/blob/e5b53032/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
index f0c1893..0f98963 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
@@ -79,6 +79,7 @@ import org.apache.hadoop.hive.metastore.api.ColumnStatisticsObj;
import org.apache.hadoop.hive.metastore.api.CurrentNotificationEventId;
import org.apache.hadoop.hive.metastore.api.Database;
import org.apache.hadoop.hive.metastore.api.FieldSchema;
+import org.apache.hadoop.hive.metastore.api.FileMetadataExprType;
import org.apache.hadoop.hive.metastore.api.Function;
import org.apache.hadoop.hive.metastore.api.FunctionType;
import org.apache.hadoop.hive.metastore.api.HiveObjectPrivilege;
@@ -7666,7 +7667,7 @@ public class ObjectStore implements RawStore, Configurable {
}
@Override
- public void getFileMetadataByExpr(List<Long> fileIds, byte[] expr,
+ public void getFileMetadataByExpr(List<Long> fileIds, FileMetadataExprType type, byte[] expr,
ByteBuffer[] metadatas, ByteBuffer[] stripeBitsets, boolean[] eliminated) {
throw new UnsupportedOperationException();
}
http://git-wip-us.apache.org/repos/asf/hive/blob/e5b53032/metastore/src/java/org/apache/hadoop/hive/metastore/RawStore.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/RawStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/RawStore.java
index 45428ed..4aa17a5 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/RawStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/RawStore.java
@@ -31,6 +31,7 @@ import org.apache.hadoop.hive.metastore.api.AggrStats;
import org.apache.hadoop.hive.metastore.api.ColumnStatistics;
import org.apache.hadoop.hive.metastore.api.CurrentNotificationEventId;
import org.apache.hadoop.hive.metastore.api.Database;
+import org.apache.hadoop.hive.metastore.api.FileMetadataExprType;
import org.apache.hadoop.hive.metastore.api.Function;
import org.apache.hadoop.hive.metastore.api.HiveObjectPrivilege;
import org.apache.hadoop.hive.metastore.api.Index;
@@ -617,6 +618,7 @@ public interface RawStore extends Configurable {
* produce additional information based on file metadata and also filter the file list.
* @param fileIds List of file IDs from the filesystem.
* @param expr Format-specific serialized expression applicable to the files' metadatas.
+ * @param type Expression type; used to determine the class that handles the metadata.
* @param metadatas Output parameter; fileIds-sized array to receive the metadatas
* for corresponding files, if any.
* @param exprResults Output parameter; fileIds-sized array to receive the format-specific
@@ -624,7 +626,7 @@ public interface RawStore extends Configurable {
* @param eliminated Output parameter; fileIds-sized array to receive the indication of whether
* the corresponding files are entirely eliminated by the expression.
*/
- void getFileMetadataByExpr(
- List<Long> fileIds, byte[] expr, ByteBuffer[] metadatas,
- ByteBuffer[] exprResults, boolean[] eliminated) throws MetaException;
+ void getFileMetadataByExpr(List<Long> fileIds, FileMetadataExprType type, byte[] expr,
+ ByteBuffer[] metadatas, ByteBuffer[] exprResults, boolean[] eliminated)
+ throws MetaException;
}
http://git-wip-us.apache.org/repos/asf/hive/blob/e5b53032/metastore/src/java/org/apache/hadoop/hive/metastore/filemeta/OrcFileMetadataHandler.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/filemeta/OrcFileMetadataHandler.java b/metastore/src/java/org/apache/hadoop/hive/metastore/filemeta/OrcFileMetadataHandler.java
new file mode 100644
index 0000000..14189da
--- /dev/null
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/filemeta/OrcFileMetadataHandler.java
@@ -0,0 +1,63 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.metastore.filemeta;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.List;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hive.metastore.FileMetadataHandler;
+import org.apache.hadoop.hive.metastore.PartitionExpressionProxy;
+import org.apache.hadoop.hive.metastore.hbase.HBaseReadWrite;
+import org.apache.hadoop.hive.ql.io.sarg.SearchArgument;
+
+public class OrcFileMetadataHandler implements FileMetadataHandler {
+ private final Configuration conf;
+ private final PartitionExpressionProxy expressionProxy;
+ private final HBaseReadWrite hbase;
+
+ public OrcFileMetadataHandler(Configuration conf,
+ PartitionExpressionProxy expressionProxy, HBaseReadWrite hbase) {
+ this.conf = conf;
+ this.expressionProxy = expressionProxy;
+ this.hbase = hbase;
+ }
+
+ @Override
+ public void getFileMetadataByExpr(List<Long> fileIds, byte[] expr,
+ ByteBuffer[] metadatas, ByteBuffer[] results, boolean[] eliminated) throws IOException {
+ SearchArgument sarg = expressionProxy.createSarg(expr);
+ // For now, don't push anything into HBase, nor store anything special in HBase
+ if (metadatas == null) {
+ // null means don't return metadata; we'd need the array anyway for now.
+ metadatas = new ByteBuffer[results.length];
+ }
+ hbase.getFileMetadata(fileIds, metadatas);
+ for (int i = 0; i < metadatas.length; ++i) {
+ if (metadatas[i] == null) continue;
+ ByteBuffer result = expressionProxy.applySargToFileMetadata(sarg, metadatas[i]);
+ eliminated[i] = (result == null);
+ if (!eliminated[i]) {
+ results[i] = result;
+ }
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/e5b53032/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseReadWrite.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseReadWrite.java b/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseReadWrite.java
index 781f562..ffd3ee5 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseReadWrite.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseReadWrite.java
@@ -1747,7 +1747,7 @@ public class HBaseReadWrite {
* @param fileIds file ID list.
* @return Serialized file metadata.
*/
- void getFileMetadata(List<Long> fileIds, ByteBuffer[] result) throws IOException {
+ public void getFileMetadata(List<Long> fileIds, ByteBuffer[] result) throws IOException {
byte[][] keys = new byte[fileIds.size()][];
for (int i = 0; i < fileIds.size(); ++i) {
keys[i] = HBaseUtils.makeLongKey(fileIds.get(i));
http://git-wip-us.apache.org/repos/asf/hive/blob/e5b53032/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java
----------------------------------------------------------------------
diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java
index 09e57e5..67a02d9 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java
@@ -27,6 +27,7 @@ import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.common.FileUtils;
import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.metastore.FileMetadataHandler;
import org.apache.hadoop.hive.metastore.HiveMetaStore;
import org.apache.hadoop.hive.metastore.PartFilterExprUtil;
import org.apache.hadoop.hive.metastore.PartitionExpressionProxy;
@@ -38,6 +39,7 @@ import org.apache.hadoop.hive.metastore.api.ColumnStatisticsObj;
import org.apache.hadoop.hive.metastore.api.CurrentNotificationEventId;
import org.apache.hadoop.hive.metastore.api.Database;
import org.apache.hadoop.hive.metastore.api.FieldSchema;
+import org.apache.hadoop.hive.metastore.api.FileMetadataExprType;
import org.apache.hadoop.hive.metastore.api.Function;
import org.apache.hadoop.hive.metastore.api.HiveObjectPrivilege;
import org.apache.hadoop.hive.metastore.api.HiveObjectRef;
@@ -64,6 +66,7 @@ import org.apache.hadoop.hive.metastore.api.Type;
import org.apache.hadoop.hive.metastore.api.UnknownDBException;
import org.apache.hadoop.hive.metastore.api.UnknownPartitionException;
import org.apache.hadoop.hive.metastore.api.UnknownTableException;
+import org.apache.hadoop.hive.metastore.filemeta.OrcFileMetadataHandler;
import org.apache.hadoop.hive.metastore.hbase.HBaseFilterPlanUtil.PlanResult;
import org.apache.hadoop.hive.metastore.hbase.HBaseFilterPlanUtil.ScanPlan;
import org.apache.hadoop.hive.metastore.parser.ExpressionTree;
@@ -96,6 +99,7 @@ public class HBaseStore implements RawStore {
private Configuration conf;
private int txnNestLevel = 0;
private PartitionExpressionProxy expressionProxy = null;
+ private Map<FileMetadataExprType, FileMetadataHandler> fmHandlers = new HashMap<>();
public HBaseStore() {
}
@@ -2241,10 +2245,24 @@ public class HBaseStore implements RawStore {
// initialize expressionProxy. Also re-initialize it if
// setConf is being called with new configuration object (though that
// is not expected to happen, doing it just for safety)
- if(expressionProxy == null || conf != configuration) {
+ // TODO: why not re-intialize HBaseReadWrite?
+ if (expressionProxy == null || conf != configuration) {
expressionProxy = PartFilterExprUtil.createExpressionProxy(configuration);
}
conf = configuration;
+ createFileMetadataHandlers();
+ }
+
+ private void createFileMetadataHandlers() {
+ for (FileMetadataExprType v : FileMetadataExprType.values()) {
+ switch (v) {
+ case ORC_SARG:
+ fmHandlers.put(v, new OrcFileMetadataHandler(conf, expressionProxy, getHBase()));
+ break;
+ default:
+ throw new AssertionError("Unsupported type " + v);
+ }
+ }
}
@Override
@@ -2380,25 +2398,16 @@ public class HBaseStore implements RawStore {
}
@Override
- public void getFileMetadataByExpr(List<Long> fileIds, byte[] expr, ByteBuffer[] metadatas,
- ByteBuffer[] results, boolean[] eliminated) throws MetaException {
- SearchArgument sarg = expressionProxy.createSarg(expr);
+ public void getFileMetadataByExpr(List<Long> fileIds, FileMetadataExprType type, byte[] expr,
+ ByteBuffer[] metadatas, ByteBuffer[] results, boolean[] eliminated) throws MetaException {
+ FileMetadataHandler fmh = fmHandlers.get(type);
boolean commit = true;
try {
- // For now, don't push anything into HBase, nor store anything special in HBase
- getHBase().getFileMetadata(fileIds, metadatas);
- for (int i = 0; i < metadatas.length; ++i) {
- if (metadatas[i] == null) continue;
- ByteBuffer result = expressionProxy.applySargToFileMetadata(sarg, metadatas[i]);
- eliminated[i] = (result == null);
- if (!eliminated[i]) {
- results[i] = result;
- }
- }
+ fmh.getFileMetadataByExpr(fileIds, expr, metadatas, results, eliminated);
} catch (IOException e) {
+ LOG.error("Unable to get file metadata by expr", e);
commit = false;
- LOG.error("Unable to get file metadata", e);
- throw new MetaException("Error reading file metadata " + e.getMessage());
+ throw new MetaException("Error reading file metadata by expr" + e.getMessage());
} finally {
commitOrRoleBack(commit);
}
http://git-wip-us.apache.org/repos/asf/hive/blob/e5b53032/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
----------------------------------------------------------------------
diff --git a/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java b/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
index d11c0d5..a100e9f 100644
--- a/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
+++ b/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
@@ -30,6 +30,7 @@ import org.apache.hadoop.hive.metastore.api.AggrStats;
import org.apache.hadoop.hive.metastore.api.ColumnStatistics;
import org.apache.hadoop.hive.metastore.api.CurrentNotificationEventId;
import org.apache.hadoop.hive.metastore.api.Database;
+import org.apache.hadoop.hive.metastore.api.FileMetadataExprType;
import org.apache.hadoop.hive.metastore.api.Function;
import org.apache.hadoop.hive.metastore.api.HiveObjectPrivilege;
import org.apache.hadoop.hive.metastore.api.Index;
@@ -777,7 +778,7 @@ public class DummyRawStoreControlledCommit implements RawStore, Configurable {
@Override
- public void getFileMetadataByExpr(List<Long> fileIds, byte[] expr,
+ public void getFileMetadataByExpr(List<Long> fileIds, FileMetadataExprType type, byte[] expr,
ByteBuffer[] metadatas, ByteBuffer[] stripeBitsets, boolean[] eliminated) {
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/e5b53032/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
----------------------------------------------------------------------
diff --git a/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java b/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
index 2de049a..f6100e6 100644
--- a/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
+++ b/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
@@ -31,6 +31,7 @@ import org.apache.hadoop.hive.metastore.api.AggrStats;
import org.apache.hadoop.hive.metastore.api.ColumnStatistics;
import org.apache.hadoop.hive.metastore.api.CurrentNotificationEventId;
import org.apache.hadoop.hive.metastore.api.Database;
+import org.apache.hadoop.hive.metastore.api.FileMetadataExprType;
import org.apache.hadoop.hive.metastore.api.Function;
import org.apache.hadoop.hive.metastore.api.HiveObjectPrivilege;
import org.apache.hadoop.hive.metastore.api.Index;
@@ -793,7 +794,7 @@ public class DummyRawStoreForJdoConnection implements RawStore {
}
@Override
- public void getFileMetadataByExpr(List<Long> fileIds, byte[] expr,
+ public void getFileMetadataByExpr(List<Long> fileIds, FileMetadataExprType type, byte[] expr,
ByteBuffer[] metadatas, ByteBuffer[] stripeBitsets, boolean[] eliminated) {
}
}