You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "张嘉昊 (Jira)" <ji...@apache.org> on 2020/11/13 09:14:00 UTC

[jira] [Updated] (PHOENIX-6215) Failed to create local index if I set column type is tinyint with default value

     [ https://issues.apache.org/jira/browse/PHOENIX-6215?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

张嘉昊 updated PHOENIX-6215:
-------------------------
    Description: 
this is my sql:
{code:java}
//代码占位符
CREATE TABLE TEST4PHOENIX.MYTEST (
tag_id varchar(200) not null,
user_id varchar(200) not null ,
tag_name varchar(200) null,
is_delete tinyint default 0,
CONSTRAINT pk PRIMARY KEY (tag_id, user_id) ) SALT_BUCKETS = 10 ;
 
upsert into TEST4PHOENIX.MYTEST values('LB_001', '10077110', 'test', 0);
upsert into TEST4PHOENIX.MYTEST values('LB_002', '10077110', 'test', 1);

create local index MYTEST_INDEX on TEST4PHOENIX.MYTEST("TAG_NAME", "IS_DELETE");{code}
 I set column `is_delete` default 0.

After I create a local index, I don't know if this is a bug, I find this below.

 
select * from TEST4PHOENIX.MYTEST;
||TAG_ID||USER_ID||TAG_NAME||IS_DELETE||
|LB_001|10077110| test|0|
|LB_002|10077110| test|1|
 
select * from TEST4PHOENIX.MYTEST_INDEX;
||0:TAG_NAME||0:IS_DELETE||:TAG_ID||:USER_ID||
|test|0| |LB_00210077110|
|test|0| |LB_00210077110|
 
First, `is_delete` has 2 different values, but `MYTEST_INDEX` only shows 0, which is default value;
Second, we can find that in `MYTEST_INDEX` column ''TAG_ID" and "USER_ID" values have been changed. If query sql uses index, then we may return wrong data. *While column value in `MYTEST` is right*
Actually after I tried many times, I found that if I create a local index , including a column which may be `tinyint` or `integer` and has been set a dafault value, then the data in the index table will be wrong.

 

Is this a bug or I make a mistake?

 

  was:
this is my create table sql:

```

CREATE TABLE MODEL_GROUP_RULE_ACCOUNT.EMPLOYEE_LABEL_TRANSPOSITION_H (
tag_id varchar(200) not null,
tag_name varchar(20000) null,
user_id varchar(200) not null ,
user_name varchar(20000) null,
tag_value varchar(1000) null,
tag_type INTEGER null,
version INTEGER not null default 1,
create_time varchar(50) null,
update_time varchar(50) null,
ttl INTEGER null , 
sync2icome tinyint default 0,
isdelete tinyint default 0,
CONSTRAINT pk PRIMARY KEY (tag_id, user_id, version) ) SALT_BUCKETS = 10 ;

```

 I set column `version` default 1, `sync2icome` default 0, `isdelete` default 0.

After I create a local index, I don't know if this is a bug, I find this below.

 

  !image-2020-11-05-17-32-00-661.png|width=551,height=299!

 

If I create local index on 2 columns, which are not set default value, that's ok; but if there is a column which has been set default value, then I select * from index_table , I find the data has been changed. 

 

Is this a bug or I make a mistake?

 

        Summary: Failed to create local index if I set column type is tinyint with default value   (was: Failed to create local index if I set column default value )

> Failed to create local index if I set column type is tinyint with default value 
> --------------------------------------------------------------------------------
>
>                 Key: PHOENIX-6215
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-6215
>             Project: Phoenix
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 5.0.0
>         Environment: phoenix-5.0.0-cdh6.2.0
>            Reporter: 张嘉昊
>            Priority: Major
>         Attachments: image-2020-11-05-17-32-00-661.png
>
>
> this is my sql:
> {code:java}
> //代码占位符
> CREATE TABLE TEST4PHOENIX.MYTEST (
> tag_id varchar(200) not null,
> user_id varchar(200) not null ,
> tag_name varchar(200) null,
> is_delete tinyint default 0,
> CONSTRAINT pk PRIMARY KEY (tag_id, user_id) ) SALT_BUCKETS = 10 ;
>  
> upsert into TEST4PHOENIX.MYTEST values('LB_001', '10077110', 'test', 0);
> upsert into TEST4PHOENIX.MYTEST values('LB_002', '10077110', 'test', 1);
> create local index MYTEST_INDEX on TEST4PHOENIX.MYTEST("TAG_NAME", "IS_DELETE");{code}
>  I set column `is_delete` default 0.
> After I create a local index, I don't know if this is a bug, I find this below.
>  
> select * from TEST4PHOENIX.MYTEST;
> ||TAG_ID||USER_ID||TAG_NAME||IS_DELETE||
> |LB_001|10077110| test|0|
> |LB_002|10077110| test|1|
>  
> select * from TEST4PHOENIX.MYTEST_INDEX;
> ||0:TAG_NAME||0:IS_DELETE||:TAG_ID||:USER_ID||
> |test|0| |LB_00210077110|
> |test|0| |LB_00210077110|
>  
> First, `is_delete` has 2 different values, but `MYTEST_INDEX` only shows 0, which is default value;
> Second, we can find that in `MYTEST_INDEX` column ''TAG_ID" and "USER_ID" values have been changed. If query sql uses index, then we may return wrong data. *While column value in `MYTEST` is right*
> Actually after I tried many times, I found that if I create a local index , including a column which may be `tinyint` or `integer` and has been set a dafault value, then the data in the index table will be wrong.
>  
> Is this a bug or I make a mistake?
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)