{"record":{"id":"f7197e95c0805534","repo":"pentaho/pentaho-kettle","slug":"monetdbbulkloadermeta-exception-tablenotspecified","errorCode":"MonetDBBulkLoaderMeta.Exception.TableNotSpecified","errorMessage":"MonetDBBulkLoaderMeta.Exception.TableNotSpecified","messagePattern":"MonetDBBulkLoaderMeta\\.Exception\\.TableNotSpecified","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/monet-db-bulk-loader/impl/src/main/java/org/pentaho/di/trans/steps/monetdbbulkloader/MonetDBBulkLoaderMeta.java","lineNumber":787,"sourceCode":"    String realSchemaName = space.environmentSubstitute( schemaName );\n\n    if ( databaseMeta != null ) {\n      Database db = new Database( loggingObject, databaseMeta );\n      try {\n        db.connect();\n\n        if ( !Utils.isEmpty( realTableName ) ) {\n          String schemaTable = databaseMeta.getQuotedSchemaTableCombination( realSchemaName, realTableName );\n\n          // Check if this table exists...\n          if ( db.checkTableExists( schemaTable ) ) {\n            return db.getTableFields( schemaTable );\n          } else {\n            throw new KettleException( BaseMessages.getString(\n                PKG, \"MonetDBBulkLoaderMeta.Exception.TableNotFound\" ) );\n          }\n        } else {\n          throw new KettleException( BaseMessages.getString(\n              PKG, \"MonetDBBulkLoaderMeta.Exception.TableNotSpecified\" ) );\n        }\n      } catch ( Exception e ) {\n        throw new KettleException( BaseMessages.getString(\n            PKG, \"MonetDBBulkLoaderMeta.Exception.ErrorGettingFields\" ), e );\n      } finally {\n        db.close();\n      }\n    } else {\n      throw new KettleException( BaseMessages.getString(\n          PKG, \"MonetDBBulkLoaderMeta.Exception.ConnectionNotDefined\" ) );\n    }\n\n  }\n\n  /**\n   * @return the schemaName\n   */","sourceCodeStart":769,"sourceCodeEnd":805,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/monet-db-bulk-loader/impl/src/main/java/org/pentaho/di/trans/steps/monetdbbulkloader/MonetDBBulkLoaderMeta.java#L769-L805","documentation":"When deriving the step's output fields, MonetDBBulkLoaderMeta requires both a schema and a table name to build the quoted schema.table string; if the table (or schema) name is not specified, it throws KettleException 'TableNotSpecified' instead of querying the database. It is a configuration-completeness guard.","triggerScenarios":"Invoking getTableFields (e.g. via the step dialog's 'Get Fields' action) when realTableName (or realSchemaName) resolves to null/empty after variable substitution.","commonSituations":"User clicks 'Get Fields' before entering a target table; a variable like ${TARGET_TABLE} is undefined in the runtime environment so it substitutes to empty; table name field left blank when copying step settings.","solutions":["Open the MonetDB Bulk Loader step dialog and set the Target Table (and Schema) fields","If a variable is used, define it in the transformation/run configuration or as an environment variable before calling getTableFields","Validate that environmentSubstitute(tableName) returns a non-empty value at runtime"],"exampleFix":"// before\nString realTableName = environmentSubstitute(tableName);\n// after\nString realTableName = environmentSubstitute(tableName);\nif (Const.isEmpty(realTableName)) {\n  throw new KettleException(\"MonetDBBulkLoader target table is not specified\");\n}","handlingStrategy":"validation","validationCode":"String realSchema = environmentSubstitute(schemaName);\nString realTable = environmentSubstitute(tableName);\nif (Const.isEmpty(realTable) || Const.isEmpty(realSchema)) {\n  throw new KettleException(\"Schema and table must both be set before reading fields\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Fill in schema and table fields in the step dialog before clicking 'Get Fields'","Define variables used in table names in the run configuration or kettle.properties","Add pre-flight checks in scripts that build transformations programmatically","Avoid copying step settings between transformations without re-verifying required fields"],"tags":["configuration","validation","monetdb","missing-table-name"],"backgroundTag":"missing-required-config-field","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}