[ 
https://issues.apache.org/jira/browse/PHOENIX-6583?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17440348#comment-17440348
 ] 

ASF GitHub Bot commented on PHOENIX-6583:
-----------------------------------------

alejandro-anadon commented on pull request #1342:
URL: https://github.com/apache/phoenix/pull/1342#issuecomment-962999312


   (I apologies if this is not the correct place to say following, but I think 
that if somebody read this conversation may get the the same doubt that I had 
about regarding SQL spec)
   I read the following article I clarified my ideas:
   
https://www.xaprb.com/blog/2006/05/18/why-null-never-compares-false-to-anything-in-sql/
   
   It remenber me a puzzle that I read in this book 
(http://www.javapuzzlers.com/) where you can have a instance like this:
   ---
   if (a!=a)
       System.out.println('Hello!! I am here");
   ---
   And the mesage will be shown. How? well... initializating a like:
   double a = Math.log(-1);
   
   In this case, a is 'NaN'; and java spec saiys that 'NaN' is not equal to 
anything... neither NaN, so ' NaN  != NaN' is true.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


> Inserting explicit Null into a (fixed length) binary field is stored as an 
> array of zeroes
> ------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-6583
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-6583
>             Project: Phoenix
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 5.1.2
>            Reporter: Alejandro Anadon
>            Priority: Major
>
> In binary fields, if I use upsert with null value, it "insert" the field with 
> 0x00 0x00 bytes vaules.
> Example:
> create table DUMMYTABLE (id integer not null, text varchar(255), testbin 
> binary(16), CONSTRAINT pk primary key (id));
> 1)
> upsert into DUMMYTABLE (id,text) values (1,'null in testBinary');
> select id,text,LENGTH(TEXT),TESTBIN,OCTET_LENGTH(TESTBIN) from DUMMYTABLE;
> result--> TESTBIN => null, OCTET_LENGTH(TESTBIN) => null  . that's ok.
> 2)
> upsert into DUMMYTABLE (id,text,testbin) values (2,'IT DO NOT null in 
> testBinary',null);
> select id,text,LENGTH(TEXT),TESTBIN,OCTET_LENGTH(TESTBIN) from DUMMYTABLE;
> result in seconf row-> TESTBIN => NOT NULL, OCTET_LENGTH(TESTBIN) => 16  . 
> that's an error.
>  
> I verified it in hbase and actually reserves empty data (it should not):
> hbase(main):001:0> scan 'DUMMYTABLE'
> ROW COLUMN+CELL
>  \x80\x00\x00\x01 column=0:\x00\x00\x00\x00, timestamp=1635365632081, value=x
>  \x80\x00\x00\x01 column=0:\x80\x0B, timestamp=1635365632081, value=null in 
> testBinary
>  \x80\x00\x00\x02 column=0:\x00\x00\x00\x00, timestamp=1635365696139, value=x
>  \x80\x00\x00\x02 column=0:\x80\x0B, timestamp=1635365696139, value=IT DO NOT 
> null in testBinary
>  \x80\x00\x00\x02 column=0:\x80\x0C, timestamp=1635365696139, 
> value=\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
> 2 row(s)
> Took 0.5030 seconds
>  
> And now, it is imposible to delete that files:
> upsert into DUMMYTABLE (id,testbin) values (2,null); 
> it does not removes the data.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to