Unfortunately, H2 does not treat (1) as array.
The same problem occurs when casting an integer to array: 

cast(1 as ARRAY) results in a single element array containing the String 
'1'.





From:   IanP <i.pri...@surveybe.com>
To:     h2-database@googlegroups.com
Date:   2015-07-10 16:02
Subject:        [h2] Bug in array datatype handling?
Sent by:        h2-database@googlegroups.com



Hi,

I think I see a bug in array datatype handling. Specifically an array is 
handled as string[] or an int[] depending on a trailing ',' char. I found 
it while fixing what looked like a bug in my code that was issuing 
commands like 

INSERT INTO TABLENAME VALUES(1, (1,))

and then discovered my fix caused a regression. It can be can recreated 
like this...

drop table if exists arraytest;
Update count: 0
(0 ms)

create table arraytest(id int, arraycol array);
Update count: 0
(1 ms)

insert into arraytest values(1, (1));
Update count: 1
(0 ms)

insert into arraytest values(2, (1,));
Update count: 1
(0 ms)

select arraycol, array_contains(arraycol, 1), array_contains(arraycol, 
'1') from arraytest where id = 1;
ARRAYCOL  
ARRAY_CONTAINS(ARRAYCOL, 1)  
ARRAY_CONTAINS(ARRAYCOL, '1')  
(1)
FALSE
TRUE
(1 row, 3 ms)

select arraycol, array_contains(arraycol, 1), array_contains(arraycol, 
'1') from arraytest where id = 2;
ARRAYCOL  
ARRAY_CONTAINS(ARRAYCOL, 1)  
ARRAY_CONTAINS(ARRAYCOL, '1')  
(1)
TRUE
FALSE
(1 row, 0 ms)

Note that on the two rows the array_contains functions match differently 
against int and string types. The only difference in the row inserts is 
the trailing comma on the array value. I guess it should be treating them 
as ints if they are unquoted, and only as strings if they are quoted like 
this:

insert into arraytest values(1, (1)); // Should be int
insert into arraytest values(1, ('1')); // Should be string

A bug, or is it some subtlety about arrays that I have missed?

Cheers,
Ian.

-- 
You received this message because you are subscribed to the Google Groups 
"H2 Database" group.
To unsubscribe from this group and stop receiving emails from it, send an 
email to h2-database+unsubscr...@googlegroups.com.
To post to this group, send email to h2-database@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.


================================================================================================================
Disclaimer
The information contained in this e - mail and any attachments ( together 
the "message") is intended for the addressee only and 
may contain confidential and/or privileged information. If you have 
received the message by mistake please delete it and notify 
the sender and do not copy or distribute it or disclose its contents to 
anyone.

FINARIS Financial Software Partner GmbH, Sömmerringstr. 23, 60322 
Frankfurt/Main, Germany
Registered at Frankfurt/Main, HRB 52873, Managing Directors: Dipl. Inf. 
Hermann Friebel, Dipl. Ing. Kai Bächle, Dipl. Inf. Werner Märkl
================================================================================================================

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to h2-database+unsubscr...@googlegroups.com.
To post to this group, send email to h2-database@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.

Reply via email to