This is an automated email from the ASF dual-hosted git repository.

hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git


The following commit(s) were added to refs/heads/main by this push:
     new 1465818bc5 fix #3834 (#3936)
1465818bc5 is described below

commit 1465818bc596aaa565e62ec71042f7617eff8e41
Author: Sergio Ramazzina <[email protected]>
AuthorDate: Thu May 16 11:08:35 2024 +0200

    fix #3834 (#3936)
    
    * fix #3834 - DimensionLookupUpdate: - specify connection through variables
    
    * fix #3834 - DimensionLookupUpdate: - specify connection through variables
    
    * change test to use variable, #3834
    
    ---------
    
    Co-authored-by: Hans Van Akelyen <[email protected]>
---
 .../0012-dimension-lookup-update-update.hpl        |  54 +++---
 integration-tests/database/dev-env-config.json     |  30 ++--
 .../dimensionlookup/DimensionLookup.java           | 128 +++++++--------
 .../dimensionlookup/DimensionLookupData.java       |   3 +-
 .../dimensionlookup/DimensionLookupDialog.java     |  53 +++---
 .../dimensionlookup/DimensionLookupMeta.java       | 182 ++++++++++++++-------
 .../messages/messages_en_US.properties             |   1 +
 .../dimensionlookup/DimensionLookupMetaTest.java   |   2 +-
 8 files changed, 252 insertions(+), 201 deletions(-)

diff --git a/integration-tests/database/0012-dimension-lookup-update-update.hpl 
b/integration-tests/database/0012-dimension-lookup-update-update.hpl
index f202670dd1..33f0c23782 100644
--- a/integration-tests/database/0012-dimension-lookup-update-update.hpl
+++ b/integration-tests/database/0012-dimension-lookup-update-update.hpl
@@ -35,8 +35,6 @@ limitations under the License.
     <created_date>2021/04/30 11:01:28.333</created_date>
     <modified_user>-</modified_user>
     <modified_date>2021/04/30 11:01:28.333</modified_date>
-    <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA=</key_for_session_key>
-    <is_key_private>N</is_key_private>
   </info>
   <notepads>
   </notepads>
@@ -58,28 +56,28 @@ limitations under the License.
       <method>none</method>
       <schema_name/>
     </partitioning>
+    <data>
+      <line>
+        <item>1</item>
+        <item>a</item>
+      </line>
+    </data>
     <fields>
       <field>
-        <set_empty_string>N</set_empty_string>
         <length>-1</length>
-        <name>key</name>
         <precision>-1</precision>
+        <set_empty_string>N</set_empty_string>
+        <name>key</name>
         <type>String</type>
       </field>
       <field>
-        <set_empty_string>N</set_empty_string>
         <length>-1</length>
-        <name>value</name>
         <precision>-1</precision>
+        <set_empty_string>N</set_empty_string>
+        <name>value</name>
         <type>String</type>
       </field>
     </fields>
-    <data>
-      <line>
-        <item>1</item>
-        <item>a</item>
-      </line>
-    </data>
     <attributes/>
     <GUI>
       <xloc>144</xloc>
@@ -97,43 +95,37 @@ limitations under the License.
       <method>none</method>
       <schema_name/>
     </partitioning>
-    <schema>public</schema>
-    <table>dimension</table>
-    <connection>unit-test-db</connection>
+    <cache_size>5000</cache_size>
     <commit>100</commit>
-    <update>Y</update>
+    <connection>${DATABASE_NAME}</connection>
     <fields>
-      <key>
-        <name>key</name>
-        <lookup>key</lookup>
-      </key>
       <date>
-        <name/>
         <from>date_from</from>
         <to>date_to</to>
       </date>
       <field>
-        <name>value</name>
         <lookup>value</lookup>
+        <name>value</name>
         <update>Update</update>
       </field>
+      <key>
+        <lookup>key</lookup>
+        <name>key</name>
+      </key>
       <return>
-        <name>dimension_id</name>
-        <rename/>
         <creation_method>tablemax</creation_method>
-        <use_autoinc>N</use_autoinc>
+        <name>dimension_id</name>
         <version>version</version>
       </return>
     </fields>
-    <sequence/>
-    <min_year>1900</min_year>
     <max_year>2199</max_year>
-    <cache_size>5000</cache_size>
+    <min_year>1900</min_year>
     <preload_cache>N</preload_cache>
-    <use_start_date_alternative>N</use_start_date_alternative>
-    <start_date_alternative>none</start_date_alternative>
-    <start_date_field_name/>
+    <schema>public</schema>
+    <table>dimension</table>
+    <update>Y</update>
     <useBatch>N</useBatch>
+    <use_start_date_alternative>N</use_start_date_alternative>
     <attributes/>
     <GUI>
       <xloc>364</xloc>
diff --git a/integration-tests/database/dev-env-config.json 
b/integration-tests/database/dev-env-config.json
index 00d07db900..8861a934f1 100644
--- a/integration-tests/database/dev-env-config.json
+++ b/integration-tests/database/dev-env-config.json
@@ -1,19 +1,15 @@
 {
-  "description": "HOP-2333 Test Environment Variables - DEV",
-  "metadataBaseFolder": "${PROJECT_HOME}/metadata",
-  "unitTestsBasePath": "${PROJECT_HOME}",
-  "dataSetsCsvFolder": "${PROJECT_HOME}/datasets",
-  "enforcingExecutionInHome": true,
-  "config": {
-    "variables": [
-      {
-        "name": "sample-var2",
-        "value": "ProvaDev2"
-      },
-      {
-        "name": "sample-var1",
-        "value": "ProvaDev1"
-      }
-    ]
-  }
+  "variables" : [ {
+    "name" : "sample-var2",
+    "value" : "ProvaDev2",
+    "description" : ""
+  }, {
+    "name" : "sample-var1",
+    "value" : "ProvaDev1",
+    "description" : ""
+  }, {
+    "name" : "DATABASE_NAME",
+    "value" : "unit-test-db",
+    "description" : ""
+  } ]
 }
\ No newline at end of file
diff --git 
a/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookup.java
 
b/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookup.java
index 76604ff279..dfd08967b9 100644
--- 
a/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookup.java
+++ 
b/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookup.java
@@ -35,7 +35,6 @@ import org.apache.commons.lang.StringUtils;
 import org.apache.hop.core.Const;
 import org.apache.hop.core.RowMetaAndData;
 import org.apache.hop.core.database.Database;
-import org.apache.hop.core.database.DatabaseMeta;
 import org.apache.hop.core.exception.HopDatabaseException;
 import org.apache.hop.core.exception.HopException;
 import org.apache.hop.core.exception.HopTransformException;
@@ -94,8 +93,8 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
       first = false;
 
       data.schemaTable =
-          meta.getDatabaseMeta()
-              .getQuotedSchemaTableCombination(this, data.realSchemaName, 
data.realTableName);
+          data.databaseMeta.getQuotedSchemaTableCombination(
+              this, data.realSchemaName, data.realTableName);
 
       data.inputRowMeta = getInputRowMeta().clone();
       data.outputRowMeta = getInputRowMeta().clone();
@@ -187,7 +186,7 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
       //
       data.valueDateNow = determineDimensionUpdatedDate(r);
 
-      data.notFoundTk = (long) 
meta.getDatabaseMeta().getNotFoundTK(isAutoIncrement());
+      data.notFoundTk = (long) 
data.databaseMeta.getNotFoundTK(isAutoIncrement());
 
       if (getCopy() == 0) {
         checkDimZero();
@@ -280,31 +279,30 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
    */
   private void preloadCache() throws HopException {
     try {
-      DatabaseMeta databaseMeta = meta.getDatabaseMeta();
 
       DLFields f = meta.getFields();
 
       // Retrieve: tk, version, from, to, natural keys, retrieval fields.
       // Store these rows in the cache.
       //
-      String sql = "SELECT " + 
databaseMeta.quoteField(f.getReturns().getKeyField());
+      String sql = "SELECT " + 
data.databaseMeta.quoteField(f.getReturns().getKeyField());
 
       // Add the natural key field in the table.
       //
       for (DLKey key : f.getKeys()) {
-        sql += ", " + databaseMeta.quoteField(key.getLookup());
+        sql += ", " + data.databaseMeta.quoteField(key.getLookup());
       }
 
       // Add the extra fields to retrieve.
       //
       for (DLField field : f.getFields()) {
-        sql += ", " + databaseMeta.quoteField(field.getLookup());
+        sql += ", " + data.databaseMeta.quoteField(field.getLookup());
       }
 
       // Add the date range fields
       //
-      sql += ", " + databaseMeta.quoteField(f.getDate().getFrom());
-      sql += ", " + databaseMeta.quoteField(f.getDate().getTo());
+      sql += ", " + data.databaseMeta.quoteField(f.getDate().getFrom());
+      sql += ", " + data.databaseMeta.quoteField(f.getDate().getTo());
 
       sql += " FROM " + data.schemaTable;
 
@@ -742,9 +740,9 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
           valueDateTo = data.maxDate;
 
           // First try to use an AUTOINCREMENT field
-          if (meta.getDatabaseMeta().supportsAutoinc() && isAutoIncrement()) {
+          if (data.databaseMeta.supportsAutoinc() && isAutoIncrement()) {
             technicalKey = null; // value to accept new key...
-          } else if (meta.getDatabaseMeta().supportsSequences()
+          } else if (data.databaseMeta.supportsSequences()
               // Try to get the value by looking at a SEQUENCE (oracle mostly)
               && meta.getSequenceName() != null
               && meta.getSequenceName().length() > 0) {
@@ -849,7 +847,6 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
    */
   private void setDimLookup(IRowMeta rowMeta) throws HopException {
     DLFields f = meta.getFields();
-    DatabaseMeta databaseMeta = meta.getDatabaseMeta();
 
     data.lookupRowMeta = new RowMeta();
 
@@ -866,18 +863,18 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
      */
     String sql =
         "SELECT "
-            + databaseMeta.quoteField(f.getReturns().getKeyField())
+            + data.databaseMeta.quoteField(f.getReturns().getKeyField())
             + ", "
-            + databaseMeta.quoteField(f.getReturns().getVersionField());
+            + data.databaseMeta.quoteField(f.getReturns().getVersionField());
 
     for (DLField field : f.getFields()) {
       // Don't retrieve the fields without input
       if (StringUtils.isNotEmpty(field.getLookup())
           && isLookupOrUpdateTypeWithArgument(meta.isUpdate(), field)) {
-        sql += ", " + databaseMeta.quoteField(field.getLookup());
+        sql += ", " + data.databaseMeta.quoteField(field.getLookup());
 
         if (StringUtils.isNotEmpty(field.getName()) && 
!field.getLookup().equals(field.getName())) {
-          sql += " AS " + databaseMeta.quoteField(field.getName());
+          sql += " AS " + data.databaseMeta.quoteField(field.getName());
         }
       }
     }
@@ -885,9 +882,9 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
     if (meta.getCacheSize() >= 0) {
       sql +=
           ", "
-              + databaseMeta.quoteField(f.getDate().getFrom())
+              + data.databaseMeta.quoteField(f.getDate().getFrom())
               + ", "
-              + databaseMeta.quoteField(f.getDate().getTo());
+              + data.databaseMeta.quoteField(f.getDate().getTo());
     }
 
     sql += " FROM " + data.schemaTable + " WHERE ";
@@ -897,12 +894,12 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
       if (i != 0) {
         sql += " AND ";
       }
-      sql += databaseMeta.quoteField(key.getLookup()) + " = ? ";
+      sql += data.databaseMeta.quoteField(key.getLookup()) + " = ? ";
       data.lookupRowMeta.addValueMeta(rowMeta.getValueMeta(data.keynrs[i]));
     }
 
-    String dateFromField = databaseMeta.quoteField(f.getDate().getFrom());
-    String dateToField = databaseMeta.quoteField(f.getDate().getTo());
+    String dateFromField = data.databaseMeta.quoteField(f.getDate().getFrom());
+    String dateToField = data.databaseMeta.quoteField(f.getDate().getTo());
 
     if (meta.isUsingStartDateAlternative() && meta.getStartDateAlternative() 
== NULL
         || meta.getStartDateAlternative() == COLUMN_VALUE) {
@@ -926,11 +923,11 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
     try {
       logDetailed("Dimension Lookup setting preparedStatement to [" + sql + 
"]");
       data.prepStatementLookup =
-          data.db.getConnection().prepareStatement(databaseMeta.stripCR(sql));
-      if (databaseMeta.supportsSetMaxRows()) {
+          
data.db.getConnection().prepareStatement(data.databaseMeta.stripCR(sql));
+      if (data.databaseMeta.supportsSetMaxRows()) {
         data.prepStatementLookup.setMaxRows(1); // alywas get only 1 line back!
       }
-      if (databaseMeta.getIDatabase().isMySqlVariant()) {
+      if (data.databaseMeta.getIDatabase().isMySqlVariant()) {
         data.prepStatementLookup.setFetchSize(0); // Make sure to DISABLE 
Streaming Result sets
       }
       logDetailed("Finished preparing dimension lookup statement.");
@@ -958,7 +955,6 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
       Date dateTo)
       throws HopException {
     DLFields f = meta.getFields();
-    DatabaseMeta databaseMeta = meta.getDatabaseMeta();
 
     if (data.prepStatementInsert == null
         && data.prepStatementUpdate == null) { // first time: construct 
prepared statement
@@ -976,29 +972,29 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
 
       if (!isAutoIncrement()) {
         // NO AUTOINCREMENT
-        sql += databaseMeta.quoteField(f.getReturns().getKeyField()) + ", ";
+        sql += data.databaseMeta.quoteField(f.getReturns().getKeyField()) + ", 
";
         insertRowMeta.addValueMeta(
             data.outputRowMeta.getValueMeta(inputRowMeta.size())); // the 
first return value
         // after the input
       } else {
-        if (databaseMeta.needsPlaceHolder()) {
+        if (data.databaseMeta.needsPlaceHolder()) {
           sql += "0, "; // placeholder on informix!
         }
       }
 
       sql +=
-          databaseMeta.quoteField(f.getReturns().getVersionField())
+          data.databaseMeta.quoteField(f.getReturns().getVersionField())
               + ", "
-              + databaseMeta.quoteField(f.getDate().getFrom())
+              + data.databaseMeta.quoteField(f.getDate().getFrom())
               + ", "
-              + databaseMeta.quoteField(f.getDate().getTo());
+              + data.databaseMeta.quoteField(f.getDate().getTo());
       insertRowMeta.addValueMeta(new 
ValueMetaInteger(f.getReturns().getVersionField()));
       insertRowMeta.addValueMeta(new ValueMetaDate(f.getDate().getFrom()));
       insertRowMeta.addValueMeta(new ValueMetaDate(f.getDate().getTo()));
 
       for (int i = 0; i < f.getKeys().size(); i++) {
         DLKey key = f.getKeys().get(i);
-        sql += ", " + databaseMeta.quoteField(key.getLookup());
+        sql += ", " + data.databaseMeta.quoteField(key.getLookup());
         insertRowMeta.addValueMeta(inputRowMeta.getValueMeta(data.keynrs[i]));
       }
 
@@ -1008,7 +1004,7 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
         // back of the row).
         //
         if (meta.isUpdate() && field.getUpdateType().isWithArgument()) {
-          sql += ", " + databaseMeta.quoteField(field.getLookup());
+          sql += ", " + data.databaseMeta.quoteField(field.getLookup());
           
insertRowMeta.addValueMeta(inputRowMeta.getValueMeta(data.fieldnrs[i]));
         }
       }
@@ -1030,7 +1026,7 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
             break;
         }
         if (valueMeta != null) {
-          sql += ", " + databaseMeta.quoteField(valueMeta.getName());
+          sql += ", " + data.databaseMeta.quoteField(valueMeta.getName());
           insertRowMeta.addValueMeta(valueMeta);
         }
       }
@@ -1071,16 +1067,17 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
       sql += " )";
 
       try {
-        if (technicalKey == null && databaseMeta.supportsAutoGeneratedKeys()) {
+        if (technicalKey == null && 
data.databaseMeta.supportsAutoGeneratedKeys()) {
           logDetailed("SQL w/ return keys=[" + sql + "]");
           data.prepStatementInsert =
               data.db
                   .getConnection()
-                  .prepareStatement(databaseMeta.stripCR(sql), 
Statement.RETURN_GENERATED_KEYS);
+                  .prepareStatement(
+                      data.databaseMeta.stripCR(sql), 
Statement.RETURN_GENERATED_KEYS);
         } else {
           logDetailed("SQL=[" + sql + "]");
           data.prepStatementInsert =
-              
data.db.getConnection().prepareStatement(databaseMeta.stripCR(sql));
+              
data.db.getConnection().prepareStatement(data.databaseMeta.stripCR(sql));
         }
       } catch (SQLException ex) {
         throw new HopDatabaseException("Unable to prepare dimension insert :" 
+ Const.CR + sql, ex);
@@ -1096,7 +1093,7 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
 
       // The end of the date range
       //
-      sqlUpdate += "SET " + databaseMeta.quoteField(f.getDate().getTo()) + " = 
?" + Const.CR;
+      sqlUpdate += "SET " + data.databaseMeta.quoteField(f.getDate().getTo()) 
+ " = ?" + Const.CR;
       updateRowMeta.addValueMeta(new ValueMetaDate(f.getDate().getTo()));
 
       // The special update fields...
@@ -1115,7 +1112,7 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
             break;
         }
         if (valueMeta != null) {
-          sqlUpdate += ", " + databaseMeta.quoteField(valueMeta.getName()) + " 
= ?" + Const.CR;
+          sqlUpdate += ", " + 
data.databaseMeta.quoteField(valueMeta.getName()) + " = ?" + Const.CR;
           updateRowMeta.addValueMeta(valueMeta);
         }
       }
@@ -1126,16 +1123,17 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
         if (i > 0) {
           sqlUpdate += "AND   ";
         }
-        sqlUpdate += databaseMeta.quoteField(key.getLookup()) + " = ?" + 
Const.CR;
+        sqlUpdate += data.databaseMeta.quoteField(key.getLookup()) + " = ?" + 
Const.CR;
         updateRowMeta.addValueMeta(inputRowMeta.getValueMeta(data.keynrs[i]));
       }
-      sqlUpdate += "AND   " + 
databaseMeta.quoteField(f.getReturns().getVersionField()) + " = ? ";
+      sqlUpdate +=
+          "AND   " + 
data.databaseMeta.quoteField(f.getReturns().getVersionField()) + " = ? ";
       updateRowMeta.addValueMeta(new 
ValueMetaInteger(f.getReturns().getVersionField()));
 
       try {
         logDetailed("Preparing update: " + Const.CR + sqlUpdate + Const.CR);
         data.prepStatementUpdate =
-            
data.db.getConnection().prepareStatement(databaseMeta.stripCR(sqlUpdate));
+            
data.db.getConnection().prepareStatement(data.databaseMeta.stripCR(sqlUpdate));
       } catch (SQLException ex) {
         throw new HopDatabaseException(
             "Unable to prepare dimension update :" + Const.CR + sqlUpdate, ex);
@@ -1226,7 +1224,7 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
     if (isDebug()) {
       logDebug("Row inserted!");
     }
-    if (technicalKey == null && databaseMeta.supportsAutoGeneratedKeys()) {
+    if (technicalKey == null && data.databaseMeta.supportsAutoGeneratedKeys()) 
{
       try {
         RowMetaAndData keys = 
data.db.getGeneratedKeys(data.prepStatementInsert);
         if (keys.getRowMeta().size() > 0) {
@@ -1350,7 +1348,7 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
             sql += "  ";
           }
           comma = true;
-          sql += meta.getDatabaseMeta().quoteField(field.getLookup()) + " = ?" 
+ Const.CR;
+          sql += data.databaseMeta.quoteField(field.getLookup()) + " = ?" + 
Const.CR;
           
data.dimensionUpdateRowMeta.addValueMeta(rowMeta.getValueMeta(data.fieldnrs[i]));
         }
       }
@@ -1374,12 +1372,12 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
             sql += "  ";
           }
           comma = true;
-          sql += meta.getDatabaseMeta().quoteField(valueMeta.getName()) + " = 
?" + Const.CR;
+          sql += data.databaseMeta.quoteField(valueMeta.getName()) + " = ?" + 
Const.CR;
           data.dimensionUpdateRowMeta.addValueMeta(valueMeta);
         }
       }
 
-      sql += "WHERE  " + 
meta.getDatabaseMeta().quoteField(f.getReturns().getKeyField()) + " = ?";
+      sql += "WHERE  " + 
data.databaseMeta.quoteField(f.getReturns().getKeyField()) + " = ?";
       data.dimensionUpdateRowMeta.addValueMeta(
           new ValueMetaInteger(f.getReturns().getKeyField())); // The tk
 
@@ -1388,7 +1386,7 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
           logDebug("Preparing statement: [" + sql + "]");
         }
         data.prepStatementDimensionUpdate =
-            
data.db.getConnection().prepareStatement(meta.getDatabaseMeta().stripCR(sql));
+            
data.db.getConnection().prepareStatement(data.databaseMeta.stripCR(sql));
       } catch (SQLException ex) {
         throw new HopDatabaseException("Couldn't prepare statement :" + 
Const.CR + sql, ex);
       }
@@ -1427,7 +1425,6 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
   public void dimPunchThrough(IRowMeta rowMeta, Object[] row) throws 
HopDatabaseException {
     DLFields f = meta.getFields();
     if (data.prepStatementPunchThrough == null) { // first time: construct 
prepared statement
-      DatabaseMeta databaseMeta = meta.getDatabaseMeta();
       data.punchThroughRowMeta = new RowMeta();
 
       /*
@@ -1446,7 +1443,7 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
             sqlUpdate += "  ";
           }
           first = false;
-          sqlUpdate += databaseMeta.quoteField(field.getLookup()) + " = ?" + 
Const.CR;
+          sqlUpdate += data.databaseMeta.quoteField(field.getLookup()) + " = 
?" + Const.CR;
           
data.punchThroughRowMeta.addValueMeta(rowMeta.getValueMeta(data.fieldnrs[i]));
         }
       }
@@ -1464,7 +1461,7 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
             break;
         }
         if (valueMeta != null) {
-          sqlUpdate += ", " + databaseMeta.quoteField(valueMeta.getName()) + " 
= ?" + Const.CR;
+          sqlUpdate += ", " + 
data.databaseMeta.quoteField(valueMeta.getName()) + " = ?" + Const.CR;
           data.punchThroughRowMeta.addValueMeta(valueMeta);
         }
       }
@@ -1475,13 +1472,13 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
         if (i > 0) {
           sqlUpdate += "AND   ";
         }
-        sqlUpdate += databaseMeta.quoteField(key.getLookup()) + " = ?" + 
Const.CR;
+        sqlUpdate += data.databaseMeta.quoteField(key.getLookup()) + " = ?" + 
Const.CR;
         
data.punchThroughRowMeta.addValueMeta(rowMeta.getValueMeta(data.keynrs[i]));
       }
 
       try {
         data.prepStatementPunchThrough =
-            
data.db.getConnection().prepareStatement(meta.getDatabaseMeta().stripCR(sqlUpdate));
+            
data.db.getConnection().prepareStatement(data.databaseMeta.stripCR(sqlUpdate));
       } catch (SQLException ex) {
         throw new HopDatabaseException(
             "Unable to prepare dimension punchThrough update statement : " + 
Const.CR + sqlUpdate,
@@ -1727,8 +1724,7 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
       return;
     }
     DLFields f = meta.getFields();
-    DatabaseMeta databaseMeta = meta.getDatabaseMeta();
-    int startTechnicalKey = databaseMeta.getNotFoundTK(isAutoIncrement());
+    int startTechnicalKey = data.databaseMeta.getNotFoundTK(isAutoIncrement());
 
     if (isAutoIncrement()) {
       // See if there are rows in the table
@@ -1738,7 +1734,7 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
           "SELECT count(*) FROM "
               + data.schemaTable
               + " WHERE "
-              + databaseMeta.quoteField(f.getReturns().getKeyField())
+              + data.databaseMeta.quoteField(f.getReturns().getKeyField())
               + " = "
               + startTechnicalKey;
       RowMetaAndData r = data.db.getOneRow(sql);
@@ -1752,7 +1748,7 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
         "SELECT count(*) FROM "
             + data.schemaTable
             + " WHERE "
-            + databaseMeta.quoteField(f.getReturns().getKeyField())
+            + data.databaseMeta.quoteField(f.getReturns().getKeyField())
             + " = "
             + startTechnicalKey;
     RowMetaAndData r = data.db.getOneRow(sql);
@@ -1760,24 +1756,24 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
     if (count.longValue() == 0) {
       String isql = null;
       try {
-        if (!databaseMeta.supportsAutoinc() || !isAutoIncrement()) {
+        if (!data.databaseMeta.supportsAutoinc() || !isAutoIncrement()) {
           isql =
               "insert into "
                   + data.schemaTable
                   + "("
-                  + databaseMeta.quoteField(f.getReturns().getKeyField())
+                  + data.databaseMeta.quoteField(f.getReturns().getKeyField())
                   + ", "
-                  + databaseMeta.quoteField(f.getReturns().getVersionField())
+                  + 
data.databaseMeta.quoteField(f.getReturns().getVersionField())
                   + ") values (0, 1)";
         } else {
           isql =
-              databaseMeta.getSqlInsertAutoIncUnknownDimensionRow(
+              data.databaseMeta.getSqlInsertAutoIncUnknownDimensionRow(
                   data.schemaTable,
-                  databaseMeta.quoteField(f.getReturns().getKeyField()),
-                  databaseMeta.quoteField(f.getReturns().getVersionField()));
+                  data.databaseMeta.quoteField(f.getReturns().getKeyField()),
+                  
data.databaseMeta.quoteField(f.getReturns().getVersionField()));
         }
 
-        data.db.execStatement(databaseMeta.stripCR(isql));
+        data.db.execStatement(data.databaseMeta.stripCR(isql));
       } catch (HopException e) {
         throw new HopDatabaseException(
             "Error inserting 'unknown' row in dimension [" + data.schemaTable 
+ "] : " + isql, e);
@@ -1805,13 +1801,15 @@ public class DimensionLookup extends 
BaseTransform<DimensionLookupMeta, Dimensio
       data.startDateAlternative = NONE;
     }
 
-    if (meta.getDatabaseMeta() == null) {
+    data.databaseMeta = getPipelineMeta().findDatabase(meta.getConnection(), 
variables);
+
+    if (data.databaseMeta == null) {
       logError(
           BaseMessages.getString(
               PKG, "DimensionLookup.Init.ConnectionMissing", 
getTransformName()));
       return false;
     }
-    data.db = new Database(this, this, meta.getDatabaseMeta());
+    data.db = new Database(this, this, data.databaseMeta);
     try {
       data.db.connect();
 
diff --git 
a/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupData.java
 
b/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupData.java
index e6d71c987c..3f57aa5258 100644
--- 
a/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupData.java
+++ 
b/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupData.java
@@ -21,6 +21,7 @@ import java.sql.PreparedStatement;
 import java.util.Date;
 import java.util.List;
 import org.apache.hop.core.database.Database;
+import org.apache.hop.core.database.DatabaseMeta;
 import org.apache.hop.core.hash.ByteArrayHashMap;
 import org.apache.hop.core.row.IRowMeta;
 import org.apache.hop.pipeline.transform.BaseTransformData;
@@ -54,7 +55,7 @@ public class DimensionLookupData extends BaseTransformData 
implements ITransform
   public PreparedStatement prepStatementUpdate;
   public PreparedStatement prepStatementDimensionUpdate;
   public PreparedStatement prepStatementPunchThrough;
-
+  public DatabaseMeta databaseMeta;
   public IRowMeta insertRowMeta;
   public IRowMeta updateRowMeta;
   public IRowMeta dimensionUpdateRowMeta;
diff --git 
a/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupDialog.java
 
b/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupDialog.java
index 094c23175d..e0e95425e0 100644
--- 
a/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupDialog.java
+++ 
b/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupDialog.java
@@ -64,6 +64,7 @@ import 
org.apache.hop.ui.pipeline.transform.BaseTransformDialog;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CTabFolder;
 import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.graphics.Cursor;
 import org.eclipse.swt.layout.FormAttachment;
 import org.eclipse.swt.layout.FormData;
@@ -171,7 +172,12 @@ public class DimensionLookupDialog extends 
BaseTransformDialog implements ITrans
     PropsUi.setLook(shell);
     setShellImage(shell, input);
 
-    databaseMeta = input.getDatabaseMeta();
+    ModifyListener lsMod = e -> input.setChanged();
+    ModifyListener lsTableMod =
+        arg0 -> {
+          input.setChanged();
+          setTableFieldCombo();
+        };
 
     shell.setLayout(props.createFormLayout());
     shell.setText(BaseMessages.getString(PKG, 
"DimensionLookupDialog.Shell.Title"));
@@ -229,13 +235,15 @@ public class DimensionLookupDialog extends 
BaseTransformDialog implements ITrans
         });
 
     // Connection line
-    wConnection = addConnectionLine(mainComposite, wUpdate, 
input.getDatabaseMeta(), null);
+
+    wConnection = addConnectionLine(mainComposite, wUpdate, 
input.getConnection(), lsMod);
     wConnection.addListener(SWT.FocusOut, e -> setTableFieldCombo());
     wConnection.addListener(
         SWT.Modify,
         e -> {
           // We have new content: change ci connection:
-          databaseMeta = wConnection.loadSelectedElement();
+          databaseMeta = pipelineMeta.findDatabase(wConnection.getText(), 
variables);
+          ;
           setFlags();
         });
 
@@ -265,7 +273,7 @@ public class DimensionLookupDialog extends 
BaseTransformDialog implements ITrans
     fdSchema.top = new FormAttachment(wConnection, margin);
     fdSchema.right = new FormAttachment(wbSchema, -margin);
     wSchema.setLayoutData(fdSchema);
-    wSchema.addListener(SWT.Modify, e -> setTableFieldCombo());
+    wSchema.addModifyListener(lsTableMod);
 
     // Table line...
     Label wlTable = new Label(mainComposite, SWT.RIGHT);
@@ -293,7 +301,7 @@ public class DimensionLookupDialog extends 
BaseTransformDialog implements ITrans
     fdTable.top = new FormAttachment(wbSchema, margin);
     fdTable.right = new FormAttachment(wbTable, -margin);
     wTable.setLayoutData(fdTable);
-    wTable.addListener(SWT.Modify, e -> setTableFieldCombo());
+    wTable.addModifyListener(lsTableMod);
 
     // Commit size ...
     wlCommit = new Label(mainComposite, SWT.RIGHT);
@@ -1114,8 +1122,8 @@ public class DimensionLookupDialog extends 
BaseTransformDialog implements ITrans
     wVersion.setText(Const.NVL(f.getReturns().getVersionField(), ""));
 
     wSeq.setText(Const.NVL(input.getSequenceName(), ""));
-    if (input.getDatabaseMeta() != null) {
-      wConnection.setText(input.getDatabaseMeta().getName());
+    if (input.getConnection() != null) {
+      wConnection.setText(input.getConnection());
     }
     wDateField.setText(Const.NVL(f.getDate().getName(), ""));
     wFromDate.setText(Const.NVL(f.getDate().getFrom(), ""));
@@ -1150,7 +1158,8 @@ public class DimensionLookupDialog extends 
BaseTransformDialog implements ITrans
     wUpIns.optimizeTableView();
     wKey.optimizeTableView();
 
-    databaseMeta = wConnection.loadSelectedElement();
+    databaseMeta = pipelineMeta.findDatabase(wConnection.getText(), variables);
+    ;
 
     // The alternative start date...
     //
@@ -1182,7 +1191,7 @@ public class DimensionLookupDialog extends 
BaseTransformDialog implements ITrans
 
     transformName = wTransformName.getText(); // return value
 
-    if (input.getDatabaseMeta() == null) {
+    if (input.getConnection() == null) {
       MessageBox mb = new MessageBox(shell, SWT.OK | SWT.ICON_ERROR);
       mb.setMessage(
           BaseMessages.getString(PKG, 
"DimensionLookupDialog.InvalidConnection.DialogMessage"));
@@ -1248,7 +1257,7 @@ public class DimensionLookupDialog extends 
BaseTransformDialog implements ITrans
     }
 
     f.getReturns().setVersionField(wVersion.getText());
-    in.setDatabaseMeta(wConnection.loadSelectedElement());
+    in.setConnection(wConnection.getText());
     f.getDate().setName(wDateField.getText());
     f.getDate().setFrom(wFromDate.getText());
     f.getDate().setTo(wToDate.getText());
@@ -1274,7 +1283,8 @@ public class DimensionLookupDialog extends 
BaseTransformDialog implements ITrans
   }
 
   private void getTableName() {
-    final DatabaseMeta dbMeta = wConnection.loadSelectedElement();
+    final DatabaseMeta dbMeta = 
pipelineMeta.findDatabase(wConnection.getText(), variables);
+    ;
     if (dbMeta == null) {
       return;
     }
@@ -1349,7 +1359,8 @@ public class DimensionLookupDialog extends 
BaseTransformDialog implements ITrans
         () -> {
           final String tableName = variables.resolve(wTable.getText());
           final String schemaName = variables.resolve(wSchema.getText());
-          final DatabaseMeta dbMeta = wConnection.loadSelectedElement();
+          final DatabaseMeta dbMeta = 
pipelineMeta.findDatabase(wConnection.getText(), variables);
+          ;
 
           // Without a database or a table name we can't do very much
           //
@@ -1402,7 +1413,7 @@ public class DimensionLookupDialog extends 
BaseTransformDialog implements ITrans
   private void getLookup() {
     final String tableName = variables.resolve(wTable.getText());
     final String schemaName = variables.resolve(wSchema.getText());
-    DatabaseMeta dbMeta = wConnection.loadSelectedElement();
+    DatabaseMeta dbMeta = pipelineMeta.findDatabase(wConnection.getText(), 
variables);
     if (dbMeta != null && StringUtils.isNotEmpty(tableName)) {
       try (Database db = new Database(loggingObject, variables, dbMeta)) {
         db.connect();
@@ -1467,7 +1478,7 @@ public class DimensionLookupDialog extends 
BaseTransformDialog implements ITrans
     }
     final String schemaName = variables.resolve(wSchema.getText());
     final String tableName = variables.resolve(wTable.getText());
-    final DatabaseMeta dbMeta = wConnection.loadSelectedElement();
+    final DatabaseMeta dbMeta = 
pipelineMeta.findDatabase(wConnection.getText(), variables);
 
     // Without a database or a table name we can't do very much
     if (dbMeta == null || StringUtils.isEmpty(tableName)) {
@@ -1597,14 +1608,10 @@ public class DimensionLookupDialog extends 
BaseTransformDialog implements ITrans
             info.getSqlStatements(variables, pipelineMeta, transforminfo, 
prev, metadataProvider);
         if (!sql.hasError()) {
           if (sql.hasSql()) {
+            DatabaseMeta databaseMeta = 
pipelineMeta.findDatabase(wConnection.getText(), variables);
             SqlEditor sqledit =
                 new SqlEditor(
-                    shell,
-                    SWT.NONE,
-                    variables,
-                    info.getDatabaseMeta(),
-                    DbCache.getInstance(),
-                    sql.getSql());
+                    shell, SWT.NONE, variables, databaseMeta, 
DbCache.getInstance(), sql.getSql());
             sqledit.open();
           } else {
             MessageBox mb = new MessageBox(shell, SWT.OK | 
SWT.ICON_INFORMATION);
@@ -1635,9 +1642,9 @@ public class DimensionLookupDialog extends 
BaseTransformDialog implements ITrans
   }
 
   private void getSchemaNames() {
-    DatabaseMeta dbMeta = wConnection.loadSelectedElement();
-    if (dbMeta != null) {
-      try (Database database = new Database(loggingObject, variables, dbMeta)) 
{
+    DatabaseMeta databaseMeta = 
pipelineMeta.findDatabase(wConnection.getText(), variables);
+    if (databaseMeta != null) {
+      try (Database database = new Database(loggingObject, variables, 
databaseMeta)) {
         database.connect();
         String[] schemas = Const.sortStrings(database.getSchemas());
 
diff --git 
a/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupMeta.java
 
b/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupMeta.java
index be3ea6be4d..8088c2d121 100644
--- 
a/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupMeta.java
+++ 
b/plugins/transforms/dimensionlookup/src/main/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupMeta.java
@@ -79,10 +79,9 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
   /** The database connection */
   @HopMetadataProperty(
       key = "connection",
-      storeWithName = true,
       injectionKey = "CONNECTION_NAME",
       injectionKeyDescription = "DimensionLookup.Injection.CONNECTION_NAME")
-  private DatabaseMeta databaseMeta;
+  private String connection;
 
   /** Update the dimension or just lookup? */
   @HopMetadataProperty(
@@ -180,7 +179,7 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
     this();
     this.schemaName = m.schemaName;
     this.tableName = m.tableName;
-    this.databaseMeta = databaseMeta == null ? null : new 
DatabaseMeta(m.databaseMeta);
+    this.connection = m.connection;
     this.update = m.update;
     this.fields = new DLFields(m.fields);
     this.sequenceName = m.sequenceName;
@@ -199,7 +198,7 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
   public void setDefault() {
     schemaName = "";
     tableName = BaseMessages.getString(PKG, 
"DimensionLookupMeta.DefaultTableName");
-    databaseMeta = null;
+    connection = "";
     commitSize = 100;
     update = true;
 
@@ -232,7 +231,7 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
 
     // We need a database connection
     //
-    if (databaseMeta == null) {
+    if (connection == null) {
       String message =
           BaseMessages.getString(
               PKG, 
"DimensionLookupMeta.Exception.UnableToRetrieveDataTypeOfReturnField");
@@ -278,33 +277,45 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
       return;
     }
 
-    try (Database db = new Database(loggingObject, variables, databaseMeta)) {
-      // Get the rows from the table...
-      IRowMeta extraFields = db.getTableFieldsMeta(schemaName, tableName);
+    try {
+      DatabaseMeta databaseMeta =
+          
metadataProvider.getSerializer(DatabaseMeta.class).load(variables.resolve(connection));
 
-      for (DLField field : fields.fields) {
-        v = extraFields.searchValueMeta(field.getLookup());
-        if (v == null) {
-          String message =
-              BaseMessages.getString(
-                  PKG, 
"DimensionLookupMeta.Exception.UnableToFindReturnField", field.getLookup());
-          logError(message);
-          throw new HopTransformException(message);
-        }
+      try (Database db = new Database(loggingObject, variables, databaseMeta)) 
{
+        // Get the rows from the table...
+        IRowMeta extraFields = db.getTableFieldsMeta(schemaName, tableName);
 
-        // If the field needs to be renamed, rename
-        if (StringUtils.isNotEmpty(field.getName())) {
-          v.setName(field.getName());
+        for (DLField field : fields.fields) {
+          v = extraFields.searchValueMeta(field.getLookup());
+          if (v == null) {
+            String message =
+                BaseMessages.getString(
+                    PKG,
+                    "DimensionLookupMeta.Exception.UnableToFindReturnField",
+                    field.getLookup());
+            logError(message);
+            throw new HopTransformException(message);
+          }
+
+          // If the field needs to be renamed, rename
+          if (StringUtils.isNotEmpty(field.getName())) {
+            v.setName(field.getName());
+          }
+          v.setOrigin(name);
+          row.addValueMeta(v);
         }
-        v.setOrigin(name);
-        row.addValueMeta(v);
+      } catch (Exception e) {
+        String message =
+            BaseMessages.getString(
+                PKG, 
"DimensionLookupMeta.Exception.UnableToRetrieveDataTypeOfReturnField2");
+        logError(message);
+        throw new HopTransformException(message, e);
       }
-    } catch (Exception e) {
+    } catch (HopException e) {
       String message =
-          BaseMessages.getString(
-              PKG, 
"DimensionLookupMeta.Exception.UnableToRetrieveDataTypeOfReturnField2");
+          BaseMessages.getString(PKG, 
"DimensionLookupMeta.Exception.DatabaseErrorOccurred")
+              + e.getMessage();
       logError(message);
-      throw new HopTransformException(message, e);
     }
   }
 
@@ -348,7 +359,7 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
     // Check the absolute basics first.
     //
     List<ICheckResult> newRemarks = new ArrayList<>();
-    checkDatabase(transformMeta, newRemarks);
+    checkDatabase(transformMeta, newRemarks, variables);
     checkTable(transformMeta, variables, newRemarks);
     if (!newRemarks.isEmpty()) {
       // No point in going on if we don't have the minimum set of information 
points.
@@ -362,33 +373,43 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
 
     // Validate settings against the database.
     //
-    try (Database db = new Database(loggingObject, variables, databaseMeta)) {
-      db.connect();
+    try {
+      DatabaseMeta databaseMeta =
+          
metadataProvider.getSerializer(DatabaseMeta.class).load(variables.resolve(connection));
 
-      IRowMeta tableRowMeta = checkTableFields(transformMeta, db, realSchema, 
realTable, remarks);
-      if (tableRowMeta != null) {
-        checkKeys(
-            transformMeta,
-            variables,
-            realSchema,
-            realTable,
-            tableRowMeta,
-            previousRowMeta,
-            remarks);
-        checkReturns(transformMeta, tableRowMeta, remarks);
-        checkDateFields(transformMeta, tableRowMeta, remarks);
+      try (Database db = new Database(loggingObject, variables, databaseMeta)) 
{
+        db.connect();
+
+        IRowMeta tableRowMeta = checkTableFields(transformMeta, db, 
realSchema, realTable, remarks);
+        if (tableRowMeta != null) {
+          checkKeys(
+              transformMeta,
+              variables,
+              realSchema,
+              realTable,
+              tableRowMeta,
+              previousRowMeta,
+              remarks);
+          checkReturns(transformMeta, tableRowMeta, remarks);
+          checkDateFields(transformMeta, tableRowMeta, remarks);
+        }
+        checkPreviousFields(transformMeta, previousRowMeta, remarks);
+        checkSequence(transformMeta, db, variables, remarks);
+      } catch (HopException e) {
+        remarks.add(
+            new CheckResult(
+                ICheckResult.TYPE_RESULT_ERROR,
+                BaseMessages.getString(PKG, 
"DimensionLookupMeta.CheckResult.CouldNotConectToDB")
+                    + e.getMessage(),
+                transformMeta));
       }
-      checkPreviousFields(transformMeta, previousRowMeta, remarks);
-      checkSequence(transformMeta, db, variables, remarks);
     } catch (HopException e) {
-      remarks.add(
-          new CheckResult(
-              ICheckResult.TYPE_RESULT_ERROR,
-              BaseMessages.getString(PKG, 
"DimensionLookupMeta.CheckResult.CouldNotConectToDB")
-                  + e.getMessage(),
-              transformMeta));
+      String errorMessage =
+          BaseMessages.getString(PKG, 
"DimensionLookupMeta.Exception.DatabaseErrorOccurred")
+              + e.getMessage();
+      CheckResult cr = new CheckResult(ICheckResult.TYPE_RESULT_ERROR, 
errorMessage, transformMeta);
+      remarks.add(cr);
     }
-
     // See if we have input streams leading to this transform!
     if (input.length > 0) {
       remarks.add(
@@ -411,6 +432,9 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
       throws HopDatabaseException {
     String sequence = variables.resolve(sequenceName);
 
+    DatabaseMeta databaseMeta =
+        
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection, 
variables);
+
     // Check sequence
     if (databaseMeta.supportsSequences()
         && fields.returns.creationMethod == TechnicalKeyCreationMethod.SEQUENCE
@@ -691,7 +715,10 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
     }
   }
 
-  private void checkDatabase(TransformMeta transformMeta, List<ICheckResult> 
remarks) {
+  private void checkDatabase(
+      TransformMeta transformMeta, List<ICheckResult> remarks, IVariables 
variables) {
+    DatabaseMeta databaseMeta =
+        
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection, 
variables);
     if (databaseMeta == null) {
       remarks.add(
           new CheckResult(
@@ -710,6 +737,10 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
       IRowMeta previousRowMeta,
       List<ICheckResult> remarks) {
     boolean allOk = true;
+
+    DatabaseMeta databaseMeta =
+        
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection, 
variables);
+
     for (DLKey key : fields.keys) {
       IValueMeta prevValueMeta = 
previousRowMeta.searchValueMeta(key.getName());
       if (prevValueMeta == null) {
@@ -776,7 +807,11 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
 
   @Override
   public IRowMeta getTableFields(IVariables variables) {
+
     IRowMeta tableRowMeta = null;
+    DatabaseMeta databaseMeta =
+        
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection, 
variables);
+
     if (databaseMeta != null) {
       try (Database db = createDatabaseObject(variables)) {
         db.connect();
@@ -798,6 +833,10 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
       IRowMeta previousRowMeta,
       IHopMetadataProvider metadataProvider)
       throws HopTransformException {
+
+    DatabaseMeta databaseMeta =
+        
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection, 
variables);
+
     SqlStatement statement =
         new SqlStatement(transformMeta.getName(), databaseMeta, null); // 
default: nothing to do!
 
@@ -888,6 +927,10 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
 
   private void validateBasicSettings(IVariables variables, IRowMeta 
previousRowMeta)
       throws HopTransformException {
+
+    DatabaseMeta databaseMeta =
+        
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection, 
variables);
+
     if (databaseMeta == null) {
       throw new HopTransformException(
           BaseMessages.getString(
@@ -1006,9 +1049,9 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
     }
 
     if (update) {
-      analyzeImpactUpdate(impact, pipelineMeta, transformMeta, prev);
+      analyzeImpactUpdate(impact, pipelineMeta, transformMeta, prev, 
variables);
     } else {
-      analyzeImpactLookup(impact, pipelineMeta, transformMeta, prev);
+      analyzeImpactLookup(impact, pipelineMeta, transformMeta, prev, 
variables);
     }
   }
 
@@ -1016,7 +1059,12 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
       List<DatabaseImpact> impact,
       PipelineMeta pipelineMeta,
       TransformMeta transformMeta,
-      IRowMeta prev) {
+      IRowMeta prev,
+      IVariables variables) {
+
+    DatabaseMeta databaseMeta =
+        
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection, 
variables);
+
     // Update: insert/update on all specified fields...
     // Lookup: we do a lookup on the natural keys + the return fields!
     for (DLKey key : fields.keys) {
@@ -1061,7 +1109,12 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
       List<DatabaseImpact> impact,
       PipelineMeta pipelineMeta,
       TransformMeta transformMeta,
-      IRowMeta prev) {
+      IRowMeta prev,
+      IVariables variables) {
+
+    DatabaseMeta databaseMeta =
+        
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection, 
variables);
+
     // Lookup: we do a lookup on the natural keys + the return fields!
     for (DLKey key : fields.keys) {
       IValueMeta v = prev.searchValueMeta(key.getName());
@@ -1102,6 +1155,9 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
   }
 
   Database createDatabaseObject(IVariables variables) {
+    DatabaseMeta databaseMeta =
+        
getParentTransformMeta().getParentPipelineMeta().findDatabase(connection, 
variables);
+
     return new Database(loggingObject, variables, databaseMeta);
   }
 
@@ -1776,21 +1832,21 @@ public class DimensionLookupMeta extends 
BaseTransformMeta<DimensionLookup, Dime
   }
 
   /**
-   * Gets databaseMeta
+   * Get connection name
    *
-   * @return value of databaseMeta
+   * @return
    */
-  public DatabaseMeta getDatabaseMeta() {
-    return databaseMeta;
+  public String getConnection() {
+    return connection;
   }
 
   /**
-   * Sets databaseMeta
+   * Set connection name
    *
-   * @param databaseMeta value of databaseMeta
+   * @param connection
    */
-  public void setDatabaseMeta(DatabaseMeta databaseMeta) {
-    this.databaseMeta = databaseMeta;
+  public void setConnection(String connection) {
+    this.connection = connection;
   }
 
   /**
diff --git 
a/plugins/transforms/dimensionlookup/src/main/resources/org/apache/hop/pipeline/transforms/dimensionlookup/messages/messages_en_US.properties
 
b/plugins/transforms/dimensionlookup/src/main/resources/org/apache/hop/pipeline/transforms/dimensionlookup/messages/messages_en_US.properties
index b2b642715b..99aec44a1b 100644
--- 
a/plugins/transforms/dimensionlookup/src/main/resources/org/apache/hop/pipeline/transforms/dimensionlookup/messages/messages_en_US.properties
+++ 
b/plugins/transforms/dimensionlookup/src/main/resources/org/apache/hop/pipeline/transforms/dimensionlookup/messages/messages_en_US.properties
@@ -191,6 +191,7 @@ 
DimensionLookupMeta.Exception.UnableToFindReturnField=Unable to find return fiel
 DimensionLookupMeta.Exception.UnableToLoadTransformMetaFromXML=Unable to load 
transform info from XML
 DimensionLookupMeta.Exception.UnableToRetrieveDataTypeOfReturnField=Unable to 
retrieve data type of return fields because no database connection was specified
 DimensionLookupMeta.Exception.UnableToRetrieveDataTypeOfReturnField2=Unable to 
retrieve data type of return fields because of an unexpected error
+DimensionLookupMeta.Exception.DatabaseErrorOccurred=A database error 
occurred\: 
 DimensionLookupMeta.keyword=dimension,lookup
 DimensionLookupMeta.Log.CheckField=Check field \#{0}, in inputstream from 
previous transforms
 DimensionLookupMeta.Log.CheckLookupField=Check lookupfield \#
diff --git 
a/plugins/transforms/dimensionlookup/src/test/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupMetaTest.java
 
b/plugins/transforms/dimensionlookup/src/test/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupMetaTest.java
index 0086f93d69..44554a83b7 100644
--- 
a/plugins/transforms/dimensionlookup/src/test/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupMetaTest.java
+++ 
b/plugins/transforms/dimensionlookup/src/test/java/org/apache/hop/pipeline/transforms/dimensionlookup/DimensionLookupMetaTest.java
@@ -47,7 +47,7 @@ public class DimensionLookupMetaTest {
         TransformSerializationTestUtil.testSerialization(
             "/dimension-update-transform.xml", DimensionLookupMeta.class, 
metadataProvider);
 
-    assertNotNull(meta.getDatabaseMeta());
+    assertNotNull(meta.getConnection());
     assertNotNull(meta.getTableName());
     assertNotNull(meta.getSchemaName());
     assertTrue(meta.isUpdate());

Reply via email to