[ https://issues.apache.org/jira/browse/KUDU-3495?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17837782#comment-17837782 ]
ASF subversion and git services commented on KUDU-3495: ------------------------------------------------------- Commit 3f10f3e251ff80e35978ea98b61f31cb52308705 in kudu's branch refs/heads/branch-1.17.x from 宋家成 [ https://gitbox.apache.org/repos/asf?p=kudu.git;h=3f10f3e25 ] KUDU-3495 Initialize the bitmap while decoding insert/upsert The upsert request with an old client schema might lead to unexpected result eventually. If client A opens a table first and then client B add a column to the table, the upsert request of client A might set the newly added column to default value. The reason is that we did not initialize the tablet_isset_bitmap while decoding the insert or upsert requests. A user does not want to change the column which he did not request to even if the client schema is not correct, so initialize the bitmap. Change-Id: I38a33cb58a085bc83854c5145e904c8ed51092a8 Reviewed-on: http://gerrit.cloudera.org:8080/20327 Tested-by: Kudu Jenkins Reviewed-by: Alexey Serbin <ale...@apache.org> (cherry picked from commit f1f3c907fc6f012b6d7a72f0103e1db4f56f0e7d) Reviewed-on: http://gerrit.cloudera.org:8080/21296 Reviewed-by: Yingchun Lai <laiyingc...@apache.org> Tested-by: Alexey Serbin <ale...@apache.org> > TServer: Unexpected result of write with old schema. > ---------------------------------------------------- > > Key: KUDU-3495 > URL: https://issues.apache.org/jira/browse/KUDU-3495 > Project: Kudu > Issue Type: Bug > Components: tserver > Affects Versions: 1.14.0 > Reporter: Song Jiacheng > Priority: Major > Fix For: 1.18.0 > > Attachments: image-2023-07-25-18-54-29-354.png, > image-2023-07-25-18-56-27-790.png > > > For table test with two column a(primary key), b. > If I do following operations in client side: > # openTable(test) to get a kudu table object KuduTable1 whose schema is (a, > b) > # Add a column c to table test. > # openTable(test) to get another kudu table object KuduTable2 whose schema > is (a, b, c) > # Insert 1 row ("d", "e", "f") using KuduTable2 > # Upsert 1 row ("d", "g") using KuduTable1 > The expected result is ("d", "g", "f") since I hope to keep the value of > column c. > But the result i got was ("d", "g", NULL) > After looking through the code, I think the original reason is that the > isset_bitmap is not all 0 at start. > !image-2023-07-25-18-54-29-354.png! > So I initialize the bitmap like below: !image-2023-07-25-18-56-27-790.png! > After this modification, the result is as my expect. > So I wonder if it is a bug since normally a user does not want to change the > column which he did not request to. -- This message was sent by Atlassian Jira (v8.20.10#820010)