{"record":{"id":"137d02d5880151f9","repo":"pentaho/pentaho-kettle","slug":"error-while-executing-psql-ingresvectorwiseloader","errorCode":null,"errorMessage":"Error while executing psql : {}","messagePattern":"Error while executing psql : (.+?)","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/ivw-bulk-loader/impl/src/main/java/org/pentaho/di/trans/steps/ivwloader/IngresVectorwiseLoader.java","lineNumber":137,"sourceCode":"        // throw new Exception(\"Return code \" + result + \" received from statement : \" + chmodCmd);\n        // }\n      }\n\n      // 2) Execute the Ingres \"sql\" command...\n      //\n\n      String cmd = createCommandLine( meta );\n      String logMessage = masqueradPassword( cmd );\n      if ( meta.isUseDynamicVNode() ) {\n        // masquerading the password for log\n        logMessage = masqueradPassword( cmd );\n      }\n      logDetailed( \"Executing command: \" + logMessage );\n\n      try {\n        data.sqlProcess = rt.exec( cmd );\n      } catch ( IOException ex ) {\n        throw new KettleException( \"Error while executing psql : \" + logMessage, ex );\n      }\n\n      // any error message?\n      //\n      data.errorLogger = new StreamLogger( log, data.sqlProcess.getErrorStream(), \"ERR_SQL\", true );\n      new Thread( data.errorLogger ).start();\n\n      // any output?\n      data.outputLogger = new StreamLogger( log, data.sqlProcess.getInputStream(), \"OUT_SQL\" );\n\n      // Where do we send the data to? --> To STDIN of the sql process\n      //\n      data.sqlOutputStream = data.sqlProcess.getOutputStream();\n\n      logWriter = new LogWriter( data.sqlProcess.getInputStream() );\n      logWriteThread = new Thread( logWriter, \"IngresVecorWiseStepLogWriter\" );\n      logWriteThread.start();\n","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/ivw-bulk-loader/impl/src/main/java/org/pentaho/di/trans/steps/ivwloader/IngresVectorwiseLoader.java#L119-L155","documentation":"IngresVectorwiseLoader.execute() throws this KettleException when Runtime.getRuntime().exec(cmd) throws an IOException while trying to launch the external psql/sql command-line process used to feed data to Ingres VectorWise. The command string is included in the message for diagnosis.","triggerScenarios":"processRow() calls execute(), which attempts to start the external SQL process; exec() fails with an IOException — executable not found on PATH, insufficient permission to execute, or system resource limits (fork failed).","commonSituations":"psql/sql client not installed or not on PATH of the user running Kettle; wrong command path configured in the step; running under a service account lacking execute permission; too many processes (fork limit).","solutions":["Verify the psql/sql executable path configured in the step is correct and exists","Ensure the executable is on PATH for the user running the transformation (which psql)","Check execute permissions on the binary (chmod +x)","Inspect the wrapped IOException for 'No such file' vs 'Permission denied' and fix accordingly"],"exampleFix":"// before\nsqlPath = \"psql\"; // not installed\n// after\nsqlPath = \"/opt/Ingres/ingres/bin/sql\"; // absolute path to the client executable","handlingStrategy":"try-catch","validationCode":"String path = environmentSubstitute(meta.getSqlPath());\nif (new File(path).canExecute() == false) { throw new IllegalStateException(\"sql client not executable: \" + path); }","typeGuard":null,"tryCatchPattern":"try { loader.execute(result, nr); } catch (KettleException e) { if (e.getCause() instanceof IOException) { logError(\"Failed to launch sql client: \" + e.getCause().getMessage(), e); } }","preventionTips":["Install the Ingres client on every node running the transformation","Use absolute paths to the executable instead of PATH lookup","Verify service-account permissions to execute the client","Monitor fork limits on busy ETL servers"],"tags":["kettle","process-exec","ingres","io"],"backgroundTag":"command-not-found","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"}