LJW21-02 opened a new pull request, #13055:
URL: https://github.com/apache/seatunnel/pull/13055

   <!--
   
   Thank you for contributing to SeaTunnel! Please make sure that your code 
changes
   are covered with tests. And in case of new features or big changes
   remember to adjust the documentation.
   
   Feel free to ping committers for the review!
   
   ## Contribution Checklist
     - Make sure that the pull request corresponds to a [GITHUB 
issue](https://github.com/apache/seatunnel/issues).
     - Name the pull request in the form "[Feature] [component] Title of the 
pull request", where *Feature* can be replaced by `Hotfix`, `Bug`, etc.
     - Minor fixes should be named following this pattern: `[hotfix] [docs] Fix 
typo in README.md doc`.
   -->
   
   ### Purpose of this pull request
   
   <!-- Describe the purpose of this pull request. For example: This pull 
request adds checkstyle plugin.-->
   This PR fixes timezone handling in the IoTDB and IoTDB V2 connectors. 
Previously, timestamp conversion did not consistently honor the configured 
zone_id, which could result in incorrect timestamp values when the configured 
timezone differed from the default timezone.
   
   Changes
   - Fix timestamp conversion in the IoTDB connector to respect the configured 
zone_id.
   - Apply the same fix to the IoTDB V2 connector for consistent timezone 
handling.
   - Update the English and Chinese connector documentation to describe the 
corrected behavior.
   - Add migration guidance for users affected by the change.
   
   ### Does this PR introduce _any_ user-facing change?
   
   <!--
   Note that it means *any* user-facing change including all aspects such as 
the documentation fix.
   If yes, please clarify the previous behavior and the change this PR proposes 
- provide the console output, description and/or an example to show the 
behavior difference if possible.
   If possible, please also clarify if this is a user-facing change compared to 
the released SeaTunnel versions or within the unreleased branches such as dev.
   If no, write 'No'.
   If you are adding/modifying connector documents, please follow our new 
specifications: https://github.com/apache/seatunnel/issues/4544.
   -->
   Yes.
   
   Previously, the IoTDB and IoTDB V2 connectors did not consistently apply 
`zone_id` when converting between epoch milliseconds and SeaTunnel `TIMESTAMP` 
(`LocalDateTime`) values. For example, with `zone_id = "Asia/Shanghai"`, a sink 
value of `1970-01-01T08:00:00` was converted as UTC to `28800000` ms. With this 
fix, it is converted using the configured zone to `0` ms. Likewise, a source 
value at epoch `0` is now converted to `1970-01-01T08:00:00` in 
`Asia/Shanghai`, instead of `1970-01-01T00:00:00`.
   
   This behavior change applies to the IoTDB and IoTDB V2 connectors, including 
IoTDB V2 table-model `TIMESTAMP` fields. If `zone_id` is omitted, conversion 
remains in UTC. Numeric epoch values such as `BIGINT` and numeric `STRING` 
timestamps remain unchanged.
   
   This is a user-facing behavior fix compared with the existing released 
behavior and the unreleased `dev` baseline. The connector documentation has 
been updated in English and Chinese, including migration guidance for users 
with an explicitly configured non-UTC sink `zone_id`.
   
   ### How was this patch tested?
   
   <!--
   If tests were added, say they were added here. Please make sure to add some 
test cases that check the changes thoroughly including negative and positive 
cases if possible.
   If it was tested in a way different from regular unit tests, please clarify 
how you tested step by step, ideally copy and paste-able, so that other 
reviewers can test and check, and descendants can verify in the future.
   If tests were not added, please describe why they were not added and/or why 
it was difficult to add.
   If you are adding E2E test cases, maybe refer to 
https://github.com/apache/seatunnel/blob/dev/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-cdc-mysql-e2e/src/test/resources/mysqlcdc_to_mysql.conf,
 here is a good example.
   -->
   - Added unit tests for the IoTDB and IoTDB V2 connectors, covering 
configured timezone conversion, the UTC default when `zone_id` is omitted, and 
unchanged numeric epoch values.
   - Added IoTDB E2E coverage for non-UTC source-to-sink conversion, including 
IoTDB V2 table-model `TIMESTAMP` fields.
   - 69 relevant unit tests and 7 IoTDB E2E tests passed.
   - Formatting and build checks passed:
     - `./mvnw spotless:apply`
     - `./mvnw -q -DskipTests verify`
   
   ### 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