You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Ran Tao (Jira)" <ji...@apache.org> on 2026/06/15 02:52:00 UTC

[jira] [Created] (FLINK-39934) Postgres pipeline connector reports misleading table format error message

Ran Tao created FLINK-39934:
-------------------------------

             Summary: Postgres pipeline connector reports misleading table format error message
                 Key: FLINK-39934
                 URL: https://issues.apache.org/jira/browse/FLINK-39934
             Project: Flink
          Issue Type: Improvement
          Components: Flink CDC
            Reporter: Ran Tao


*Description*

  When using the Postgres pipeline connector with an invalid tables pattern, the validation error message does not show the actual configured value. Instead, it always prints the option key tables, which makes
  the error hard to diagnose.

  For example, with the following pipeline source config:
{code:java}
  sources:
  - source:
      type: postgres
      name: Postgres Source
      hostname: <host>
      port: 5432
      username: flink
      password: <password>
      tables: flink.public.orders.*
      slot.name: pg_source_slot_test
      decoding.plugin.name: pgoutput
      scan.startup.mode: initial {code}
  The table pattern is invalid because it is split as four parts by the unescaped dot in orders_.*. However, the thrown exception prints:

  Tables format must db.schema.table, can not 'tables' = tables

  The message should print the actual invalid table pattern, for example:

  Tables format must db.schema.table, can not 'tables' = flink.public.orders_.*

  *Stack Trace*
{code:java}
Caused by: java.lang.IllegalStateException: Tables format must db.schema.table, can not 'tables' = tables
      at org.apache.flink.util.Preconditions.checkState(Preconditions.java:193)
      at org.apache.flink.cdc.connectors.postgres.factory.PostgresDataSourceFactory.getValidateDatabaseName(PostgresDataSourceFactory.java:382)
      at org.apache.flink.cdc.connectors.postgres.factory.PostgresDataSourceFactory.createDataSource(PostgresDataSourceFactory.java:146)
      at org.apache.flink.cdc.composer.flink.translator.DataSourceTranslator.createDataSource(DataSourceTranslator.java:132)
      at org.apache.flink.cdc.composer.flink.translator.DataSourceTranslator.createDataSources(DataSourceTranslator.java:112)
      at org.apache.flink.cdc.composer.flink.FlinkPipelineComposer.translate(FlinkPipelineComposer.java:150)
      at org.apache.flink.cdc.composer.flink.FlinkPipelineComposer.compose(FlinkPipelineComposer.java:110)
      at org.apache.flink.cdc.cli.CliExecutor.deployWithComposer(CliExecutor.java:132)
      at org.apache.flink.cdc.cli.CliExecutor.run(CliExecutor.java:97)
      at org.apache.flink.cdc.cli.CliFrontend.main(CliFrontend.java:81) {code}
  *Root Cause*

  PostgresDataSourceFactory#getValidateDatabaseName uses TABLES.key() when formatting the validation error message, so the message always prints tables instead of the actual invalid table value.

  *Proposed Fix*

  Use the current table pattern value, trimmedTableName, in the error message instead of TABLES.key().



--
This message was sent by Atlassian Jira
(v8.20.10#820010)