Commit e86fc944 by Peter Gergo Barna Committed by Madhan Neethiraj

ATLAS-2530 trim query string before using it as name attribute for Hive process and column lineage

parent da8581e9
...@@ -512,7 +512,7 @@ public abstract class BaseHiveEvent { ...@@ -512,7 +512,7 @@ public abstract class BaseHiveEvent {
String queryStr = hookContext.getQueryPlan().getQueryStr(); String queryStr = hookContext.getQueryPlan().getQueryStr();
if (queryStr != null) { if (queryStr != null) {
queryStr = queryStr.toLowerCase(); queryStr = queryStr.toLowerCase().trim();
} }
ret.setAttribute(ATTRIBUTE_QUALIFIED_NAME, getQualifiedName(inputs, outputs)); ret.setAttribute(ATTRIBUTE_QUALIFIED_NAME, getQualifiedName(inputs, outputs));
......
...@@ -93,4 +93,29 @@ public class HiveMetastoreBridgeIT extends HiveITBase { ...@@ -93,4 +93,29 @@ public class HiveMetastoreBridgeIT extends HiveITBase {
assertEquals(outputs.size(), 1); assertEquals(outputs.size(), 1);
assertEquals(outputs.get(0).getGuid(), tableId); assertEquals(outputs.get(0).getGuid(), tableId);
} }
@Test
public void testCreateTableHiveProcessNameAttribute() throws Exception {
//test if \n is trimmed from name attribute of the process entity
String tableName = tableName();
String tableName2 = tableName();
String name = String.format("create table %s (id string)", tableName2);
String query = String.format("create table %s (id string);%n%n%s;", tableName, name);
runCommand(query);
String dbId = assertDatabaseIsRegistered(DEFAULT_DB);
String tableId = assertTableIsRegistered(DEFAULT_DB, tableName);
String tableId2 = assertTableIsRegistered(DEFAULT_DB, tableName2);
//verify lineage is created
String processId = assertEntityIsRegistered(HiveDataTypes.HIVE_PROCESS.getName(), AtlasClient.REFERENCEABLE_ATTRIBUTE_NAME, getTableProcessQualifiedName(DEFAULT_DB, tableName), null);
AtlasEntity processsEntity = atlasClientV2.getEntityByGuid(processId).getEntity();
String processId2 = assertEntityIsRegistered(HiveDataTypes.HIVE_PROCESS.getName(), AtlasClient.REFERENCEABLE_ATTRIBUTE_NAME, getTableProcessQualifiedName(DEFAULT_DB, tableName2), null);
AtlasEntity processsEntity2 = atlasClientV2.getEntityByGuid(processId2).getEntity();
assertEquals(processsEntity2.getAttribute("name"), name);
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment