{"record":{"id":"0d135ee89793aa91","repo":"pentaho/pentaho-kettle","slug":"luciddbstreamingloadermeta-exception-tablenotspecified","errorCode":null,"errorMessage":"LucidDBStreamingLoaderMeta.Exception.TableNotSpecified","messagePattern":"LucidDBStreamingLoaderMeta\\.Exception\\.TableNotSpecified","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/lucid-db-streaming-loader/core/src/main/java/org/pentaho/di/trans/steps/luciddbstreamingloader/LucidDBStreamingLoaderMeta.java","lineNumber":842,"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, \"LucidDBStreamingLoaderMeta.Exception.TableNotFound\" ) );\n          }\n        } else {\n          throw new KettleException( BaseMessages.getString(\n            PKG, \"LucidDBStreamingLoaderMeta.Exception.TableNotSpecified\" ) );\n        }\n      } catch ( Exception e ) {\n        throw new KettleException( BaseMessages.getString(\n          PKG, \"LucidDBStreamingLoaderMeta.Exception.ErrorGettingFields\" ), e );\n      } finally {\n        db.close();\n      }\n    } else {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"LucidDBStreamingLoaderMeta.Exception.ConnectionNotDefined\" ) );\n    }\n\n  }\n\n  /**\n   * @return the schemaName\n   */","sourceCodeStart":824,"sourceCodeEnd":860,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/lucid-db-streaming-loader/core/src/main/java/org/pentaho/di/trans/steps/luciddbstreamingloader/LucidDBStreamingLoaderMeta.java#L824-L860","documentation":"In the same table-lookup path, if the real table name resolves to empty (realTableName is null/blank after variable resolution) the meta throws KettleException with the localized 'TableNotSpecified' message — the step cannot look up fields without a target table.","triggerScenarios":"Table-lookup code path runs with realSchemaName set but realTableName empty — e.g. the 'Target table' field is blank or its ${TABLE_NAME} variable is not defined at execution time.","commonSituations":"Variable placeholder in the table name never set via parameters/environment; step copied from another transformation with the table field cleared; dialog saved before filling in the table.","solutions":["Set the target table name in the LucidDB Streaming Loader dialog.","If using a variable like ${TARGET_TABLE}, define it in transformation parameters, the run configuration, or kettle.properties.","Validate the step (the metadata check will flag the missing table name before execution)."],"exampleFix":"// before (dialog XML)\n<table>${TARGET_TABLE}</table>   <!-- variable undefined -->\n// after: define it, e.g. on kettle.properties or as a transformation parameter\nTARGET_TABLE=FACT_SALES","handlingStrategy":"validation","validationCode":"String table = transMeta.environmentSubstitute(meta.getTableName());\nif (table == null || table.trim().isEmpty()) {\n  throw new KettleException(\"LucidDB Streaming Loader: target table must be specified\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  meta.getFields(...);\n} catch (KettleException e) {\n  if (e.getMessage().contains(\"TableNotSpecified\")) {\n    logError(\"Set the target table (or define its variable) before running\");\n  }\n  throw e;\n}","preventionTips":["Always fill the Target table field before saving the step.","Define any ${TABLE} variables in kettle.properties or as transformation parameters.","Use 'Validate transformation against this environment' before production runs.","Avoid copying steps with variable-based names without copying the variable definitions."],"tags":["kettle","configuration","luciddb","missing-table"],"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"}