Explorar o código

HUE-6044 [metadata] Escape special chars of DisMax Solr parser

Romain Rigaux %!s(int64=8) %!d(string=hai) anos
pai
achega
1cfdb23a07

+ 1 - 0
desktop/libs/metadata/src/metadata/navigator_client.py

@@ -148,6 +148,7 @@ class NavigatorApi(object):
     default_entity_types, entity_types = self._get_types_from_sources(sources)
 
     try:
+      query_s = query_s.replace('{', '\\{').replace('}', '\\}').replace('(', '\\(').replace(')', '\\)').replace('[', '\\[').replace(']', '\\]')
       params = self.__params
 
       search_terms = [term for term in query_s.strip().split()]

+ 5 - 0
desktop/libs/metadata/src/metadata/navigator_client_tests.py

@@ -172,6 +172,11 @@ class TestNavigatorClientTest(NavigatorClientTest):
         self.api.search_entities(query_s='type:FIELD', sources=['hive'])[0][1]
     )
 
+    assert_equal(
+        '* AND ((type:\\{\\}\\(\\)\\[\\]*)) AND ((type:TABLE)OR(type:VIEW)OR(type:DATABASE)OR(type:PARTITION)OR(type:FIELD)) AND (sourceType:HIVE OR sourceType:IMPALA)',
+        self.api.search_entities(query_s='type:{}()[]*', sources=['hive'])[0][1]
+    )
+
     # type:
     # type:VIEW
     # type:VIEW ca