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

Sandeep Pal updated PHOENIX-6428:
---------------------------------
    Description: 
Phoenix select subquery doesn't work on VARCHAR and CHAR types in two tables 
when column with type `CHAR(N)` as value lesser than N bytes. .

Steps to reproduce:

CREATE TABLE TEST.TABLE_WITH_VARCHAR (ID VARCHAR NOT NULL,CONSTRAINT PK PRIMARY 
KEY (ID));

CREATE TABLE TEST.TABLE_WITH_CHAR (ID CHAR(15) NOT NULL,CONSTRAINT PK PRIMARY 
KEY (ID));

 

UPSERT INTO TEST.TABLE_WITH_VARCHAR(ID) VALUES ('00000000000000');

UPSERT INTO TEST.TABLE_WITH_CHAR(ID) VALUES ('00000000000000');

 

select * from test.table_with_varchar where id not in (select id from 
test.table_with_char);

 
{code:java}
0: jdbc:phoenix:localhost:56632> CREATE TABLE TEST.TABLE_WITH_VARCHAR (ID 
VARCHAR NOT NULL,CONSTRAINT PK PRIMARY KEY (ID));
No rows affected (2.354 seconds)
0: jdbc:phoenix:localhost:56632> CREATE TABLE TEST.TABLE_WITH_CHAR (ID CHAR(15) 
NOT NULL,CONSTRAINT PK PRIMARY KEY (ID));
No rows affected (2.254 seconds)
0: jdbc:phoenix:localhost:52919> UPSERT INTO TEST.TABLE_WITH_VARCHAR(ID) VALUES 
('00000000000000');
1 row affected (0.041 seconds)
0: jdbc:phoenix:localhost:52919> UPSERT INTO TEST.TABLE_WITH_CHAR(ID) VALUES 
('00000000000000');
1 row affected (0.004 seconds)
0: jdbc:phoenix:localhost:52919> select * from test.table_with_varchar where id 
not in (select id from test.table_with_char);
+----------------+
|       ID       |
+----------------+
| 00000000000000 |
+----------------+
1 row selected (0.109 seconds)
0: jdbc:phoenix:localhost:52919> UPSERT INTO TEST.TABLE_WITH_CHAR(ID) VALUES 
('ABC');
1 row affected (0.005 seconds)
0: jdbc:phoenix:localhost:52919> UPSERT INTO TEST.TABLE_WITH_VARCHAR(ID) VALUES 
('ABC');
1 row affected (0.006 seconds)
0: jdbc:phoenix:localhost:52919> select * from test.table_with_varchar where id 
not in (select id from test.table_with_char);
+----------------+
|       ID       |
+----------------+
| 00000000000000 |
| ABC            |
+----------------+
2 rows selected (0.026 seconds)
0: jdbc:phoenix:localhost:52919> select * from test.table_with_char;
+----------------+
|       ID       |
+----------------+
| 00000000000000 |
| ABC            |
+----------------+
2 rows selected (0.013 seconds)
0: jdbc:phoenix:localhost:52919> select * from test.table_with_varchar;
+----------------+
|       ID       |
+----------------+
| 00000000000000 |
| ABC            |
+----------------+
2 rows selected (0.011 seconds)
0: jdbc:phoenix:localhost:52919> select * from test.table_with_varchar where id 
in (select id from test.table_with_char);
+----+
| ID |
+----+
+----+{code}
This returns empty.  

 

  was:
Phoenix select subquery doesn't work on VARCHAR and CHAR types in two tables 
when column with type CHAR(n) as value lesser than n bytes. .

Steps to reproduce:

CREATE TABLE TEST.TABLE_WITH_VARCHAR (ID VARCHAR NOT NULL,CONSTRAINT PK PRIMARY 
KEY (ID));

CREATE TABLE TEST.TABLE_WITH_CHAR (ID CHAR(15) NOT NULL,CONSTRAINT PK PRIMARY 
KEY (ID));

 

UPSERT INTO TEST.TABLE_WITH_VARCHAR(ID) VALUES ('00000000000000');

UPSERT INTO TEST.TABLE_WITH_CHAR(ID) VALUES ('00000000000000');

 

select * from test.table_with_varchar where id not in (select id from 
test.table_with_char);

 
{code:java}
0: jdbc:phoenix:localhost:56632> CREATE TABLE TEST.TABLE_WITH_VARCHAR (ID 
VARCHAR NOT NULL,CONSTRAINT PK PRIMARY KEY (ID));
No rows affected (2.354 seconds)
0: jdbc:phoenix:localhost:56632> CREATE TABLE TEST.TABLE_WITH_CHAR (ID CHAR(15) 
NOT NULL,CONSTRAINT PK PRIMARY KEY (ID));
No rows affected (2.254 seconds)
0: jdbc:phoenix:localhost:52919> UPSERT INTO TEST.TABLE_WITH_VARCHAR(ID) VALUES 
('00000000000000');
1 row affected (0.041 seconds)
0: jdbc:phoenix:localhost:52919> UPSERT INTO TEST.TABLE_WITH_CHAR(ID) VALUES 
('00000000000000');
1 row affected (0.004 seconds)
0: jdbc:phoenix:localhost:52919> select * from test.table_with_varchar where id 
not in (select id from test.table_with_char);
+----------------+
|       ID       |
+----------------+
| 00000000000000 |
+----------------+
1 row selected (0.109 seconds)
0: jdbc:phoenix:localhost:52919> UPSERT INTO TEST.TABLE_WITH_CHAR(ID) VALUES 
('ABC');
1 row affected (0.005 seconds)
0: jdbc:phoenix:localhost:52919> UPSERT INTO TEST.TABLE_WITH_VARCHAR(ID) VALUES 
('ABC');
1 row affected (0.006 seconds)
0: jdbc:phoenix:localhost:52919> select * from test.table_with_varchar where id 
not in (select id from test.table_with_char);
+----------------+
|       ID       |
+----------------+
| 00000000000000 |
| ABC            |
+----------------+
2 rows selected (0.026 seconds)
0: jdbc:phoenix:localhost:52919> select * from test.table_with_char;
+----------------+
|       ID       |
+----------------+
| 00000000000000 |
| ABC            |
+----------------+
2 rows selected (0.013 seconds)
0: jdbc:phoenix:localhost:52919> select * from test.table_with_varchar;
+----------------+
|       ID       |
+----------------+
| 00000000000000 |
| ABC            |
+----------------+
2 rows selected (0.011 seconds)
0: jdbc:phoenix:localhost:52919> select * from test.table_with_varchar where id 
in (select id from test.table_with_char);
+----+
| ID |
+----+
+----+{code}
This returns empty.  

 


> Phoenix select subquery doesn't work on VARCHAR and CHAR types
> --------------------------------------------------------------
>
>                 Key: PHOENIX-6428
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-6428
>             Project: Phoenix
>          Issue Type: Improvement
>    Affects Versions: 4.14.3, 4.16.0, 4.17.0
>            Reporter: Sandeep Pal
>            Priority: Major
>
> Phoenix select subquery doesn't work on VARCHAR and CHAR types in two tables 
> when column with type `CHAR(N)` as value lesser than N bytes. .
> Steps to reproduce:
> CREATE TABLE TEST.TABLE_WITH_VARCHAR (ID VARCHAR NOT NULL,CONSTRAINT PK 
> PRIMARY KEY (ID));
> CREATE TABLE TEST.TABLE_WITH_CHAR (ID CHAR(15) NOT NULL,CONSTRAINT PK PRIMARY 
> KEY (ID));
>  
> UPSERT INTO TEST.TABLE_WITH_VARCHAR(ID) VALUES ('00000000000000');
> UPSERT INTO TEST.TABLE_WITH_CHAR(ID) VALUES ('00000000000000');
>  
> select * from test.table_with_varchar where id not in (select id from 
> test.table_with_char);
>  
> {code:java}
> 0: jdbc:phoenix:localhost:56632> CREATE TABLE TEST.TABLE_WITH_VARCHAR (ID 
> VARCHAR NOT NULL,CONSTRAINT PK PRIMARY KEY (ID));
> No rows affected (2.354 seconds)
> 0: jdbc:phoenix:localhost:56632> CREATE TABLE TEST.TABLE_WITH_CHAR (ID 
> CHAR(15) NOT NULL,CONSTRAINT PK PRIMARY KEY (ID));
> No rows affected (2.254 seconds)
> 0: jdbc:phoenix:localhost:52919> UPSERT INTO TEST.TABLE_WITH_VARCHAR(ID) 
> VALUES ('00000000000000');
> 1 row affected (0.041 seconds)
> 0: jdbc:phoenix:localhost:52919> UPSERT INTO TEST.TABLE_WITH_CHAR(ID) VALUES 
> ('00000000000000');
> 1 row affected (0.004 seconds)
> 0: jdbc:phoenix:localhost:52919> select * from test.table_with_varchar where 
> id not in (select id from test.table_with_char);
> +----------------+
> |       ID       |
> +----------------+
> | 00000000000000 |
> +----------------+
> 1 row selected (0.109 seconds)
> 0: jdbc:phoenix:localhost:52919> UPSERT INTO TEST.TABLE_WITH_CHAR(ID) VALUES 
> ('ABC');
> 1 row affected (0.005 seconds)
> 0: jdbc:phoenix:localhost:52919> UPSERT INTO TEST.TABLE_WITH_VARCHAR(ID) 
> VALUES ('ABC');
> 1 row affected (0.006 seconds)
> 0: jdbc:phoenix:localhost:52919> select * from test.table_with_varchar where 
> id not in (select id from test.table_with_char);
> +----------------+
> |       ID       |
> +----------------+
> | 00000000000000 |
> | ABC            |
> +----------------+
> 2 rows selected (0.026 seconds)
> 0: jdbc:phoenix:localhost:52919> select * from test.table_with_char;
> +----------------+
> |       ID       |
> +----------------+
> | 00000000000000 |
> | ABC            |
> +----------------+
> 2 rows selected (0.013 seconds)
> 0: jdbc:phoenix:localhost:52919> select * from test.table_with_varchar;
> +----------------+
> |       ID       |
> +----------------+
> | 00000000000000 |
> | ABC            |
> +----------------+
> 2 rows selected (0.011 seconds)
> 0: jdbc:phoenix:localhost:52919> select * from test.table_with_varchar where 
> id in (select id from test.table_with_char);
> +----+
> | ID |
> +----+
> +----+{code}
> This returns empty.  
>  



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

Reply via email to