github-actions[bot] commented on code in PR #65647:
URL: https://github.com/apache/doris/pull/65647#discussion_r3593565393
##########
fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/streaming/StreamingInsertJob.java:
##########
@@ -288,6 +288,9 @@ private void checkRequiredSourceProperties() {
"password is required property");
Preconditions.checkArgument(sourceProperties.get(DataSourceConfigKeys.DATABASE)
!= null,
"database is required property");
+ sourceProperties.put(DataSourceConfigKeys.JDBC_URL,
Review Comment:
**[P2] Keep ALTER comparison and merge on the canonical URL**
This persists `jdbc:mysql://host:port` as the parameterized canonical URL,
but `AlterJobCommand.checkUnmodifiableSourceProperties()` later compares any
submitted `jdbc_url` with exact `Objects.equals`. A user who pauses the job and
resubmits the same raw URL while rotating credentials is therefore rejected
with `The jdbc_url property cannot be modified`. The changed regression avoids
the failure by hard-coding `normalizedJdbcUrl`, so it does not cover the
caller-visible form. Please canonicalize ALTER source properties once and use
that same value for both the identity comparison and the later merge (or ignore
a semantically unchanged submitted identity field and retain the stored
canonical URL), then add a raw CREATE -> raw ALTER credential-rotation case.
##########
fs_brokers/cdc_client/src/main/java/org/apache/doris/cdcclient/source/reader/mysql/MySqlSourceReader.java:
##########
@@ -1018,6 +1018,8 @@ private MySqlSourceConfig generateMySqlConfig(
// Keep genuinely ancient (<100) DATE/DATETIME years; MySQL already
completes 2-digit years.
dbzProps.setProperty("enable.time.adjuster", "false");
+ dbzProps.setProperty("converters", "dorisYear");
Review Comment:
**[P1] Gate this converter on the normalized-reader contract**
This enables the new YEAR-zero behavior for every MySQL reader, including
replayed jobs whose persisted URL intentionally remains unnormalized and
upgraded BEs during a rolling upgrade. With Connector/J's default
`yearIsDateType=true`, numeric YEAR 0 reaches snapshot conversion as a Date in
year 2000, so this converter emits 2000 there but maps the binlog
`Year.of(1900)` value to 0. During the BE-first mixed-version window, backend
selection/binding also has no cdc-client capability filter, so old and new
readers can produce different values for the same job. Please introduce an
explicit FE/cdc-client opt-in and enable it only when effective properties are
normalized and routing guarantees a compatible reader (or migrate legacy jobs
coherently), with replay and mixed-version tests.
--
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]