You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by jn...@apache.org on 2017/03/02 20:59:44 UTC
[17/27] drill git commit: DRILL-5167: Send escape character for
metadata queries
DRILL-5167: Send escape character for metadata queries
Escape character was not sent when doing metadata queries, which caused
the server to return incorrect results as the pattern is interpreted
differently form what the user asked for.
close #712
Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/c81f5888
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/c81f5888
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/c81f5888
Branch: refs/heads/master
Commit: c81f58884e2cef279a7d60ea611b6a422a2eb56e
Parents: d3238b1
Author: Laurent Goujon <la...@dremio.com>
Authored: Wed Dec 28 17:03:37 2016 -0800
Committer: Jinfeng Ni <jn...@apache.org>
Committed: Wed Mar 1 23:15:33 2017 -0800
----------------------------------------------------------------------
.../client/src/clientlib/drillClientImpl.cpp | 27 ++++++++++++--------
1 file changed, 16 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/drill/blob/c81f5888/contrib/native/client/src/clientlib/drillClientImpl.cpp
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/clientlib/drillClientImpl.cpp b/contrib/native/client/src/clientlib/drillClientImpl.cpp
index 808595c..417fe80 100644
--- a/contrib/native/client/src/clientlib/drillClientImpl.cpp
+++ b/contrib/native/client/src/clientlib/drillClientImpl.cpp
@@ -661,12 +661,16 @@ DrillClientQueryResult* DrillClientImpl::ExecuteQuery(const PreparedStatement& p
return sendMsg(factory, ::exec::user::RUN_QUERY, query);
}
+static void updateLikeFilter(exec::user::LikeFilter& likeFilter, const std::string& pattern) {
+ likeFilter.set_pattern(pattern);
+ likeFilter.set_escape(meta::DrillMetadata::s_searchEscapeString);
+}
+
DrillClientCatalogResult* DrillClientImpl::getCatalogs(const std::string& catalogPattern,
Metadata::pfnCatalogMetadataListener listener,
void* listenerCtx) {
exec::user::GetCatalogsReq query;
- exec::user::LikeFilter* catalogFilter(query.mutable_catalog_name_filter());
- catalogFilter->set_pattern(catalogPattern);
+ updateLikeFilter(*query.mutable_catalog_name_filter(), catalogPattern);
boost::function<DrillClientCatalogResult*(int32_t)> factory = boost::bind(
boost::factory<DrillClientCatalogResult*>(),
@@ -682,8 +686,8 @@ DrillClientSchemaResult* DrillClientImpl::getSchemas(const std::string& catalogP
Metadata::pfnSchemaMetadataListener listener,
void* listenerCtx) {
exec::user::GetSchemasReq query;
- query.mutable_catalog_name_filter()->set_pattern(catalogPattern);
- query.mutable_schema_name_filter()->set_pattern(schemaPattern);
+ updateLikeFilter(*query.mutable_catalog_name_filter(), catalogPattern);
+ updateLikeFilter(*query.mutable_schema_name_filter(), schemaPattern);
boost::function<DrillClientSchemaResult*(int32_t)> factory = boost::bind(
boost::factory<DrillClientSchemaResult*>(),
@@ -701,9 +705,10 @@ DrillClientTableResult* DrillClientImpl::getTables(const std::string& catalogPat
Metadata::pfnTableMetadataListener listener,
void* listenerCtx) {
exec::user::GetTablesReq query;
- query.mutable_catalog_name_filter()->set_pattern(catalogPattern);
- query.mutable_schema_name_filter()->set_pattern(schemaPattern);
- query.mutable_table_name_filter()->set_pattern(tablePattern);
+ updateLikeFilter(*query.mutable_catalog_name_filter(), catalogPattern);
+ updateLikeFilter(*query.mutable_schema_name_filter(), schemaPattern);
+ updateLikeFilter(*query.mutable_table_name_filter(), tablePattern);
+
if (tableTypes) {
std::copy(tableTypes->begin(), tableTypes->end(),
google::protobuf::RepeatedFieldBackInserter(query.mutable_table_type_filter()));
@@ -725,10 +730,10 @@ DrillClientColumnResult* DrillClientImpl::getColumns(const std::string& catalogP
Metadata::pfnColumnMetadataListener listener,
void* listenerCtx) {
exec::user::GetColumnsReq query;
- query.mutable_catalog_name_filter()->set_pattern(catalogPattern);
- query.mutable_schema_name_filter()->set_pattern(schemaPattern);
- query.mutable_table_name_filter()->set_pattern(tablePattern);
- query.mutable_column_name_filter()->set_pattern(columnsPattern);
+ updateLikeFilter(*query.mutable_catalog_name_filter(), catalogPattern);
+ updateLikeFilter(*query.mutable_schema_name_filter(), schemaPattern);
+ updateLikeFilter(*query.mutable_table_name_filter(), tablePattern);
+ updateLikeFilter(*query.mutable_column_name_filter(), columnsPattern);
boost::function<DrillClientColumnResult*(int32_t)> factory = boost::bind(
boost::factory<DrillClientColumnResult*>(),