Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

When a table has a primary key, there is no need to split the RowChangeEvent when update a uk. #11270

Closed
King-Dylan opened this issue Jun 6, 2024 · 3 comments
Labels
area/ticdc Issues or PRs related to TiCDC. type/bug This is a bug.

Comments

@King-Dylan
Copy link

What did you do?

Enable the old value feature, then update uk in a table

CREATE TABLE `employee` (
  `id` bigint(20) NOT NULL,
  `catalog_id` bigint(20) NOT NULL,
  `merchant_id` bigint(20) NOT NULL,
  `merchant_item_id` varchar(127) COLLATE utf8mb4_unicode_ci NOT NULL,
  `merchant_item_group_id` varchar(127) COLLATE utf8mb4_unicode_ci NOT NULL,
  `merchant_display_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `primary_feed_profile_id` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */,
  UNIQUE KEY `catalog_id` (`catalog_id`,`primary_feed_profile_id`,`merchant_item_group_id`),
);
insert into employee (id, catalog_id,merchant_id,merchant_item_id,merchant_item_group_id) values (89898989,21211212,12121212,'1212121as','dsdsdsdsdd');
update employee set merchant_item_id='newval',merchant_item_group_id='nzzzzzzzzzzzz11111z' where id=8989898989;

What did you expect to see?

Only one ChangeFeedEvent has been output.

What did you see instead?

k{"d":{"additional_images":{"t":252,"f":65,"v":null},"adwords_redirect_link":{"t":15,"f":64,"v":null},"age_group":{"t":3,"f":65,"v":null},"api_updated_time":{"t":8,"f":65,"v":null},"availability":{"t":3,"f":65,"v":null},"average_review_rating":{"t":5,"f":65,"v":null},"brand":{"t":15,"f":64,"v":null},"catalog_id":{"t":8,"f":49,"v":21211212},"catalog_id_migration":{"t":8,"f":113,"v":null},"color":{"t":15,"f":64,"v":null},"condition":{"t":3,"f":65,"v":null},"country":{"t":3,"f":113,"v":null},"created_at":{"t":7,"f":1,"v":"2024-06-06 21:29:34"},"currency":{"t":3,"f":65,"v":null},"custom_label_0":{"t":15,"f":64,"v":null},"custom_label_1":{"t":15,"f":64,"v":null},"custom_label_2":{"t":15,"f":64,"v":null},"custom_label_3":{"t":15,"f":64,"v":null},"custom_label_4":{"t":15,"f":64,"v":null},"decayed_click_through":{"t":5,"f":65,"v":null},"decayed_impression":{"t":5,"f":65,"v":null},"feed_updated_time":{"t":8,"f":65,"v":null},"free_shipping_limit":{"t":8,"f":65,"v":null},"gender":{"t":3,"f":65,"v":null},"generated_internal_product_id":{"t":8,"f":65,"v":null},"google_product_categories":{"t":245,"f":65,"v":null},"gtin":{"t":15,"f":64,"v":null},"hyperloop_internal_item_id":{"t":8,"f":65,"v":null},"id":{"t":8,"h":true,"f":11,"v":8989898989},"is_best_seller":{"t":1,"f":65,"v":null},"is_free_shipping_label":{"t":1,"f":65,"v":null},"is_new_arrival":{"t":1,"f":65,"v":null},"is_recommended_product":{"t":1,"f":65,"v":null},"item_description":{"t":15,"f":64,"v":null},"item_description_html":{"t":15,"f":64,"v":null},"link":{"t":15,"f":64,"v":null},"locale":{"t":15,"f":112,"v":null},"main_image":{"t":252,"f":65,"v":null},"material":{"t":15,"f":64,"v":null},"media_links_hash":{"t":254,"f":64,"v":null},"merchant_display_name":{"t":15,"f":64,"v":null},"merchant_id":{"t":8,"f":33,"v":12121212},"merchant_item_group_id":{"t":15,"f":0,"v":"nzzzzzzzzzzzz11111z"},"merchant_item_id":{"t":15,"f":48,"v":"newval"},"mobile_link":{"t":15,"f":64,"v":null},"mpn":{"t":15,"f":64,"v":null},"num_add_to_cart_actions_thirty_days":{"t":3,"f":65,"v":null},"num_ratings":{"t":3,"f":65,"v":null},"num_reviews":{"t":3,"f":65,"v":null},"num_visits_thirty_days":{"t":3,"f":65,"v":null},"overridden_fields":{"t":252,"f":65,"v":null},"pattern":{"t":15,"f":64,"v":null},"pin_id_to_image_signature":{"t":252,"f":65,"v":null},"pin_ids":{"t":245,"f":65,"v":null},"pin_metadata_hash":{"t":254,"f":64,"v":null},"price":{"t":8,"f":65,"v":null},"primary_feed_profile_id":{"t":8,"f":113,"v":null},"product_types":{"t":245,"f":65,"v":null},"sale_price":{"t":8,"f":65,"v":null},"shipping_country":{"t":15,"f":64,"v":null},"size":{"t":15,"f":64,"v":null},"size_system":{"t":3,"f":65,"v":null},"size_type":{"t":3,"f":65,"v":null},"title":{"t":15,"f":64,"v":null},"updated_at":{"t":7,"f":1,"v":"2024-06-06 21:50:22"},"variant_options":{"t":252,"f":65,"v":null},"video_pin_id_to_video_signature":{"t":252,"f":65,"v":null},"videos":{"t":252,"f":65,"v":null}}}

s{"u":{"additional_images":{"t":252,"f":65,"v":null},"adwords_redirect_link":{"t":15,"f":64,"v":null},"age_group":{"t":3,"f":65,"v":null},"api_updated_time":{"t":8,"f":65,"v":null},"availability":{"t":3,"f":65,"v":null},"average_review_rating":{"t":5,"f":65,"v":null},"brand":{"t":15,"f":64,"v":null},"catalog_id":{"t":8,"f":49,"v":21211212},"catalog_id_migration":{"t":8,"f":113,"v":null},"color":{"t":15,"f":64,"v":null},"condition":{"t":3,"f":65,"v":null},"country":{"t":3,"f":113,"v":null},"created_at":{"t":7,"f":1,"v":"2024-06-06 21:29:34"},"currency":{"t":3,"f":65,"v":null},"custom_label_0":{"t":15,"f":64,"v":null},"custom_label_1":{"t":15,"f":64,"v":null},"custom_label_2":{"t":15,"f":64,"v":null},"custom_label_3":{"t":15,"f":64,"v":null},"custom_label_4":{"t":15,"f":64,"v":null},"decayed_click_through":{"t":5,"f":65,"v":null},"decayed_impression":{"t":5,"f":65,"v":null},"feed_updated_time":{"t":8,"f":65,"v":null},"free_shipping_limit":{"t":8,"f":65,"v":null},"gender":{"t":3,"f":65,"v":null},"generated_internal_product_id":{"t":8,"f":65,"v":null},"google_product_categories":{"t":245,"f":65,"v":null},"gtin":{"t":15,"f":64,"v":null},"hyperloop_internal_item_id":{"t":8,"f":65,"v":null},"id":{"t":8,"h":true,"f":11,"v":8989898989},"is_best_seller":{"t":1,"f":65,"v":null},"is_free_shipping_label":{"t":1,"f":65,"v":null},"is_new_arrival":{"t":1,"f":65,"v":null},"is_recommended_product":{"t":1,"f":65,"v":null},"item_description":{"t":15,"f":64,"v":null},"item_description_html":{"t":15,"f":64,"v":null},"link":{"t":15,"f":64,"v":null},"locale":{"t":15,"f":112,"v":null},"main_image":{"t":252,"f":65,"v":null},"material":{"t":15,"f":64,"v":null},"media_links_hash":{"t":254,"f":64,"v":null},"merchant_display_name":{"t":15,"f":64,"v":null},"merchant_id":{"t":8,"f":33,"v":12121212},"merchant_item_group_id":{"t":15,"f":0,"v":"nzzzzzzzzzzzz11111z"},"merchant_item_id":{"t":15,"f":48,"v":"newval11111111"},"mobile_link":{"t":15,"f":64,"v":null},"mpn":{"t":15,"f":64,"v":null},"num_add_to_cart_actions_thirty_days":{"t":3,"f":65,"v":null},"num_ratings":{"t":3,"f":65,"v":null},"num_reviews":{"t":3,"f":65,"v":null},"num_visits_thirty_days":{"t":3,"f":65,"v":null},"overridden_fields":{"t":252,"f":65,"v":null},"pattern":{"t":15,"f":64,"v":null},"pin_id_to_image_signature":{"t":252,"f":65,"v":null},"pin_ids":{"t":245,"f":65,"v":null},"pin_metadata_hash":{"t":254,"f":64,"v":null},"price":{"t":8,"f":65,"v":null},"primary_feed_profile_id":{"t":8,"f":113,"v":null},"product_types":{"t":245,"f":65,"v":null},"sale_price":{"t":8,"f":65,"v":null},"shipping_country":{"t":15,"f":64,"v":null},"size":{"t":15,"f":64,"v":null},"size_system":{"t":3,"f":65,"v":null},"size_type":{"t":3,"f":65,"v":null},"title":{"t":15,"f":64,"v":null},"updated_at":{"t":7,"f":1,"v":"2024-06-06 21:50:34"},"variant_options":{"t":252,"f":65,"v":null},"video_pin_id_to_video_signature":{"t":252,"f":65,"v":null},"videos":{"t":252,"f":65,"v":null}}}

Versions of the cluster

Upstream TiDB cluster version (execute SELECT tidb_version(); in a MySQL client):

(paste TiDB cluster version here)

Upstream TiKV version (execute tikv-server --version):

(paste TiKV version here)

TiCDC version (execute cdc version):

v7.1.4
@King-Dylan King-Dylan added area/ticdc Issues or PRs related to TiCDC. type/bug This is a bug. labels Jun 6, 2024
@github-actions github-actions bot added this to Need Triage in Question and Bug Reports Jun 6, 2024
@CharlesCheung96
Copy link
Contributor

CharlesCheung96 commented Jun 7, 2024

What is the dispatchers configuration?

@King-Dylan
Copy link
Author

King-Dylan commented Jun 7, 2024

After PR 9437, we add this feature to split the RowChangeEvent. https://github.com/pingcap/tiflow/blob/release-7.1-20240129-v7.1.2/cdc/model/sink.go#L833-L837 I think we need more jugment conditions to distinguish this scenario.

@CharlesCheung96
Copy link
Contributor

CharlesCheung96 commented Jun 11, 2024

It is reasonable not to split transactions that contain a single update event. However, transactions that rely on sql execution order must be split and sorted to ensure the correctness of the serial consumption. For more information, ref tikv/tikv#17062.

Question and Bug Reports automation moved this from Need Triage to Done Jul 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/ticdc Issues or PRs related to TiCDC. type/bug This is a bug.
Development

No branches or pull requests

2 participants