<@U04S8PLJWMT> We have a Postgres → Redshift conne...
# replication-ask-ai
b
@kapa.ai We have a Postgres → Redshift connection running in Incremental + Deduped mode. Two new columns were added to the Postgres table:
transaction_id
and
category
. Airbyte detected the schema change and propagated the new columns to Redshift. However, after sync, we see that
category
is populated in Postgres but still null for 81 rows in the Redshift final table:
Copy code
final_rows = 78,607
final_category_nulls = 81
final_category_not_nulls = 78,526
For
transaction_id
, both Postgres and Redshift are null, so that column does not seem to be the issue. We checked the Airbyte raw table in Redshift. For the 81 problematic IDs, the latest raw record still has
raw_category
null
, and the latest
_airbyte_extracted_at
is
2026-07-10
, meaning these rows were not re-extracted after the schema change. At the same time, we can see that many other records in the raw table were re-extracted on
2026-07-22
and now have
raw_category = REGULAR
, while their older raw versions had null category. The connection logs show CDC is disabled with
using CDC: false
, and the Postgres source query appears to rely on an incremental state condition using
xmin
, for example:
Copy code
WHERE xmin::text::bigint >= ...
So our understanding is that Airbyte propagated the schema correctly, but because the stream is incremental and non-CDC, it only re-read rows matching the current incremental state. As a result, some historical rows were not re-extracted after the new column was added, leaving
category
null in Redshift even though it is populated in Postgres. Can you confirm whether this is expected behavior for Incremental + Deduped Postgres → Redshift syncs when new columns are added? Also, is the recommended solution to run a stream-level refresh/reset for stream, or is there another Airbyte-supported way to backfill newly added columns for historical rows without refreshing the whole stream?
k
Confirmed: Expected Behavior for Incremental Syncs with New Columns Yes, what you're observing is expected behavior. Here's why: Why the 81 rows have null category Since your connection uses Xmin replication (non-CDC incremental), Airbyte only re-reads rows where
xmin::text::bigint >= <last_sync_value>
. Rows that were not modified after the new columns were added will not be re-extracted, so their
category
value remains null in Redshift even if it's populated in Postgres. [Xmin Limitations] This is a fundamental limitation of cursor/xmin-based incremental sync — it cannot retroactively backfill historical rows that weren't touched after the schema change. [Incremental Append Limitations] The Postgres connector documentation explicitly states: > "Schema changes are not supported automatically for CDC sources. Reset and resync data if you make a schema change." And more broadly, the incremental sync docs note: > "The current behavior of Incremental is not able to handle source schema changes yet... It is recommended to trigger a Full refresh - Overwrite to correctly replicate the data to the destination with the new schema changes." [Incremental Append Limitations] Recommended Solution: Stream-Level Refresh The recommended Airbyte-supported approach is to run a stream-level refresh (not a full connection reset), which limits the impact to only the affected stream: 1. Navigate to the Status page of your connection in the Airbyte UI. 2. Locate the affected stream, click the three dots (⋮) next to it. 3. Choose Refresh Stream. This will re-sync all historical data for that stream, populating
category
for the 81 rows, without touching other streams in the connection. [CDC Adding New Columns] Airbyte's Automatic Backfill Option Airbyte also has a "Backfill new or renamed columns" connection setting that, when enabled alongside
Propagate field changes only
or
Propagate all field and stream changes
, automatically triggers a full stream re-sync when a new column is detected. However, this only works when Airbyte detects the schema change as part of a sync — it does not apply retroactively if the schema was already propagated manually. [Backfill Setting] Summary 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help., with interactive elements