[ 
https://issues.apache.org/jira/browse/FLINK-37371?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Leonard Xu resolved FLINK-37371.
--------------------------------
    Fix Version/s: cdc-3.4.0
       Resolution: Fixed

Fixed via master: da40727d29c8e3d3c637a52d102b3ed636ebf13a

> Postgres CDC incremental source fails to handle upper-case table and column 
> names
> ---------------------------------------------------------------------------------
>
>                 Key: FLINK-37371
>                 URL: https://issues.apache.org/jira/browse/FLINK-37371
>             Project: Flink
>          Issue Type: Bug
>          Components: Flink CDC
>    Affects Versions: cdc-3.2.0
>            Reporter: Sergei Morozov
>            Assignee: Sergei Morozov
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: cdc-3.4.0
>
>
> Example table schema:
> {code:java}
> create table "Customers" (
>   "Id" int not null primary key,
>   "Name" varchar(32) not null
> );
> {code}
> Snapshotting fails with the following exception:
> {noformat}
> java.sql.SQLException: No result returned after running query [SELECT 
> reltuples::bigint FROM pg_class WHERE oid = to_regclass('public.Customers')]
>       at 
> org.apache.flink.cdc.connectors.postgres.source.utils.PostgresQueryUtils.lambda$queryApproximateRowCnt$1(PostgresQueryUtils.java:81)
>       at 
> org.apache.flink.cdc.connectors.shaded.io.debezium.jdbc.JdbcConnection.queryAndMap(JdbcConnection.java:642)
>       at 
> org.apache.flink.cdc.connectors.shaded.io.debezium.jdbc.JdbcConnection.queryAndMap(JdbcConnection.java:510)
>       at 
> org.apache.flink.cdc.connectors.postgres.source.utils.PostgresQueryUtils.queryApproximateRowCnt(PostgresQueryUtils.java:76)
>       at 
> org.apache.flink.cdc.connectors.postgres.source.PostgresChunkSplitter.queryApproximateRowCnt(PostgresChunkSplitter.java:77)
>       at 
> org.apache.flink.cdc.connectors.base.source.assigner.splitter.JdbcSourceChunkSplitter.splitTableIntoChunks(JdbcSourceChunkSplitter.java:295)
>       at 
> org.apache.flink.cdc.connectors.base.source.assigner.splitter.JdbcSourceChunkSplitter.generateSplits(JdbcSourceChunkSplitter.java:81)
>       ... 14 common frames omitted
> {noformat}
> Also:
> {noformat}
> org.apache.flink.util.FlinkRuntimeException: Read split 
> SnapshotSplit{tableId=public.Customers, splitId='public.Customers:0', 
> splitKeyType=[`Id` INT NOT NULL], splitStart=null, splitEnd=[8097], 
> highWatermark=null} error due to org.apache.flink.util.FlinkRuntimeException: 
> Snapshotting of table public.Customers failed.
>       at 
> org.apache.flink.cdc.connectors.base.source.reader.external.IncrementalSourceScanFetcher.checkReadException(IncrementalSourceScanFetcher.java:181)
>       at 
> org.apache.flink.cdc.connectors.base.source.reader.external.IncrementalSourceScanFetcher.pollSplitRecords(IncrementalSourceScanFetcher.java:128)
>       at 
> org.apache.flink.cdc.connectors.base.source.reader.IncrementalSourceSplitReader.pollSplitRecords(IncrementalSourceSplitReader.java:161)
>       at 
> org.apache.flink.cdc.connectors.base.source.reader.IncrementalSourceSplitReader.fetch(IncrementalSourceSplitReader.java:98)
>       at 
> org.apache.flink.connector.base.source.reader.fetcher.FetchTask.run(FetchTask.java:58)
>       at 
> org.apache.flink.connector.base.source.reader.fetcher.SplitFetcher.runOnce(SplitFetcher.java:142)
>       at 
> org.apache.flink.connector.base.source.reader.fetcher.SplitFetcher.run(SplitFetcher.java:105)
>       at 
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>       at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>       at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
>       at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
>       at java.base/java.lang.Thread.run(Thread.java:831)
> Caused by: 
> org.apache.flink.cdc.connectors.shaded.io.debezium.DebeziumException: 
> org.apache.flink.util.FlinkRuntimeException: Snapshotting of table 
> public.Customers failed
>       at 
> org.apache.flink.cdc.connectors.shaded.io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:85)
>       at 
> org.apache.flink.cdc.connectors.postgres.source.fetch.PostgresScanFetchTask.executeDataSnapshot(PostgresScanFetchTask.java:112)
>       at 
> org.apache.flink.cdc.connectors.base.source.reader.external.AbstractScanFetchTask.execute(AbstractScanFetchTask.java:71)
>       at 
> org.apache.flink.cdc.connectors.postgres.source.fetch.PostgresScanFetchTask.execute(PostgresScanFetchTask.java:86)
>       at 
> org.apache.flink.cdc.connectors.base.source.reader.external.IncrementalSourceScanFetcher.lambda$submitTask$1(IncrementalSourceScanFetcher.java:99)
>       ... 3 common frames omitted
> Caused by: org.apache.flink.util.FlinkRuntimeException: Snapshotting of table 
> public.Customers failed
>       at 
> org.apache.flink.cdc.connectors.postgres.source.fetch.PostgresScanFetchTask$PostgresSnapshotSplitReadTask.createDataEventsForTable(PostgresScanFetchTask.java:350)
>       at 
> org.apache.flink.cdc.connectors.postgres.source.fetch.PostgresScanFetchTask$PostgresSnapshotSplitReadTask.createDataEvents(PostgresScanFetchTask.java:265)
>       at 
> org.apache.flink.cdc.connectors.postgres.source.fetch.PostgresScanFetchTask$PostgresSnapshotSplitReadTask.doExecute(PostgresScanFetchTask.java:255)
>       at 
> org.apache.flink.cdc.connectors.postgres.source.fetch.PostgresScanFetchTask$PostgresSnapshotSplitReadTask.doExecute(PostgresScanFetchTask.java:211)
>       at 
> org.apache.flink.cdc.connectors.shaded.io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:76)
>       ... 7 common frames omitted
> Caused by: org.postgresql.util.PSQLException: ERROR: column "id" does not 
> exist
>   Hint: Perhaps you meant to reference the column "Customers.Id".
>   Position: 45
>       at 
> org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2553)
>       at 
> org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2285)
>       at 
> org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:323)
>       at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:481)
>       at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:401)
>       at 
> org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:164)
>       at 
> org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:114)
>       at 
> org.apache.flink.cdc.connectors.postgres.source.fetch.PostgresScanFetchTask$PostgresSnapshotSplitReadTask.createDataEventsForTable(PostgresScanFetchTask.java:313)
>       ... 11 common frames omitted
> {noformat}



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

Reply via email to