[ 
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)

Reply via email to