CloverDew opened a new pull request, #11380:
URL: https://github.com/apache/seatunnel/pull/11380

   ### Purpose of this pull request
   
   Close: https://github.com/apache/seatunnel/issues/11039
   
   This PR adds two PostgreSQL CDC startup modes:
   - `committed-offset`: starts WAL streaming from the configured replication 
slot's committed LSN and skips snapshot reading.
   - `snapshot-only`: reads the startup snapshot and finishes as a bounded job 
without entering WAL streaming.
   
   ### Does this PR introduce _any_ user-facing change?
   
   Yes.
   PostgreSQL CDC now accepts two additional `startup.mode` values:
   - `snapshot-only`
     - Previous behavior: PostgreSQL CDC snapshot startup always transitioned 
into WAL streaming.
     - New behavior: the job reads snapshot data and then finishes naturally as 
a bounded job.
   - `committed-offset`
     - Previous behavior: PostgreSQL CDC supported `initial`, `earliest`, and 
`latest`, but could not explicitly start from the committed position of an 
existing logical replication slot.
     - New behavior: the job starts from the configured replication slot's 
`confirmed_flush_lsn`, skips snapshot data, and fails fast if `slot.name` is 
missing, the slot does not exist, or the slot has no usable committed LSN.
   
   ### How was this patch tested?
   
   Added PostgreSQL CDC E2E coverage for the new startup modes:
   - `snapshot-only` verifies that snapshot data is written and later source 
changes are not streamed.
   - `committed-offset` verifies that the connector attaches to an existing 
logical replication slot and does not snapshot existing rows.
   
   ### Check list
   
   * [ ] If any new Jar binary package adding in your PR, please add License 
Notice according
     [New License 
Guide](https://github.com/apache/seatunnel/blob/dev/docs/en/developer/new-license.md)
   * [ ] If necessary, please update the documentation to describe the new 
feature. https://github.com/apache/seatunnel/tree/dev/docs
   * [ ] If necessary, please update `incompatible-changes.md` to describe the 
incompatibility caused by this PR.
   * [ ] If you are contributing the connector code, please check that the 
following files are updated:
     1. Update 
[plugin-mapping.properties](https://github.com/apache/seatunnel/blob/dev/plugin-mapping.properties)
 and add new connector information in it
     2. Update the pom file of 
[seatunnel-dist](https://github.com/apache/seatunnel/blob/dev/seatunnel-dist/pom.xml)
     3. Add ci label in 
[label-scope-conf](https://github.com/apache/seatunnel/blob/dev/.github/workflows/labeler/label-scope-conf.yml)
     4. Add e2e testcase in 
[seatunnel-e2e](https://github.com/apache/seatunnel/tree/dev/seatunnel-e2e/seatunnel-connector-v2-e2e/)
     5. Update connector 
[plugin_config](https://github.com/apache/seatunnel/blob/dev/config/plugin_config)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to