Hi,

This is not a bug in H2. The problem is that you used "WHERE
<condition>" instead of "ON <joinCondition>". H2 supports the omission
of an "ON" condition, and uses "ON 1=1" in this case.

Please note that using randomly generated UUIDs as the primary key
will result on poor performance once there are millions of rows in a
table. The reason is that the cache behavior is very bad with randomly
distributed data. This is a problem for any database system.

Regards,
Thomas

P.S. my test case gives the same results in all databases:


drop table container;
CREATE TABLE container (
 containerID         int PRIMARY KEY,
 parentContainerId   int,
 description         VARCHAR(50) NOT NULL
);
alter table container add constraint x FOREIGN KEY(parentContainerID)
REFERENCES container (containerID);
INSERT INTO container (containerID, description) VALUES
(1, 'vriezer');
INSERT INTO container (
 containerID,
 parentContainerID,
 description
) VALUES (
 2,
 (SELECT containerID FROM container WHERE description = 'vriezer'),
 'bovenste lade'
);
INSERT INTO container (
 containerID,
 parentContainerID,
 description
) VALUES (
 3,
(SELECT containerID FROM container WHERE description = 'vriezer'),
 'middelste lade'
);
INSERT INTO container (
 containerID,
 parentContainerID,
 description
) VALUES (
 4,
(SELECT containerID FROM container WHERE description = 'vriezer'),
 'onderste lade'
);
SELECT    container.description AS container,
         parent.description    AS parentContainer
FROM      container
LEFT JOIN container AS parent
ON 1=1
WHERE     container.parentContainerID = parent.containerID;
SELECT    container.description AS container,
         parent.description    AS parentContainer
FROM      container
LEFT JOIN container AS parent
ON container.parentContainerID = parent.containerID




On Mon, Mar 5, 2012 at 1:42 AM, Cecil Westerhof <cldwester...@gmail.com> wrote:
> 2012/3/5 Cecil Westerhof <cldwester...@gmail.com>:
>> I am using the following SQL code:
>> CREATE TABLE container (
>>  containerID         UUID PRIMARY KEY,
>>  parentContainerId   UUID,
>>  description         VARCHAR(50) NOT NULL,
>>
>>  FOREIGN KEY(parentContainerID) REFERENCES (containerID)
>> );
>> INSERT INTO container (containerID, description) VALUES
>> (random_UUID(), 'vriezer');
>> INSERT INTO container (
>>  containerID,
>>  parentContainerID,
>>  description
>> ) VALUES (
>>  random_UUID(),
>>  SELECT containerID FROM container WHERE description = 'vriezer',
>>  'bovenste lade'
>> );
>> INSERT INTO container (
>>  containerID,
>>  parentContainerID,
>>  description
>> ) VALUES (
>>  random_UUID(),
>>  SELECT containerID FROM container WHERE description = 'vriezer',
>>  'middelste lade'
>> );
>> INSERT INTO container (
>>  containerID,
>>  parentContainerID,
>>  description
>> ) VALUES (
>>  random_UUID(),
>>  SELECT containerID FROM container WHERE description = 'vriezer',
>>  'onderste lade'
>> );
>> SELECT    container.description AS container,
>>          parent.description    AS parentContainer
>> FROM      container
>> LEFT JOIN container AS parent
>> WHERE     container.parentContainerID = parent.containerID
>>
>> I would expect that all four containers would show up, with vriezer
>> 'having' parent NULL. But it does not. Only the four that do have a
>
> I mend three instead of four.
>
>
>> parent show up. Is this a bug, or am I doing something wrong?
>>
>> Also: is there a better way to insert the containers that have as
>> parent 'vriezer'?
>
> --
> Cecil Westerhof
>
> --
> You received this message because you are subscribed to the Google Groups "H2 
> Database" group.
> To post to this group, send email to h2-database@googlegroups.com.
> To unsubscribe from this group, send email to 
> h2-database+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/h2-database?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To post to this group, send email to h2-database@googlegroups.com.
To unsubscribe from this group, send email to 
h2-database+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en.

Reply via email to