github-actions[bot] commented on code in PR #65438:
URL: https://github.com/apache/doris/pull/65438#discussion_r3556218009
##########
fe/fe-catalog/src/main/java/org/apache/doris/catalog/Column.java:
##########
@@ -101,6 +101,11 @@ public static Column generateAfterValueColumn(Column
column) {
Column afterValueColumn = new Column(column);
afterValueColumn.setComment("after value (" + column.getName() + ")");
afterValueColumn.setAggregationType(AggregateType.NONE, true);
+ afterValueColumn.setIsAllowNull(true);
Review Comment:
This fixes newly generated row-binlog schemas, but it looks like existing
row-binlog tables can keep the old after-value schema after an FE
restart/upgrade. `generateAfterValueColumn()` is only used when creating new
row-binlog metadata (and when adding new columns). The row-binlog schema itself
is persisted in `MaterializedIndexMeta.schema`; on load
`MaterializedIndexMeta.gsonPostProcess()` just rebuilds maps, and
`OlapTable.gsonPostProcess()` does not normalize the row-binlog meta before
`getRowBinlogMeta()` returns it.
That means a table that already has a `BITMAP NOT NULL` row-binlog after
column will still expose that non-null target slot, while `BlockReader`
continues to copy the nullable `__BEFORE__` mirror into it for MIN_DELTA/DETAIL
update-before rows. Please add a metadata-load/replay compatibility step (and a
test that constructs/deserializes legacy row-binlog meta) so existing
row-binlog tables get the nullable/default-cleared after columns too.
--
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]