select...where...in...union bug?

"Chuck Han" <[email protected]> Fri, 7 Jan 2005 23:34:25 -0800
Newsgroups gmane.comp.db.mysql.bugs
Message-ID <F11838FDB768974EAAF9874C22A6BD272F5A60@msgusawmb01.ads.autodesk.com>
Hi,

(1) If I issue the following query:

 SELECT GEOM_CLASS.* FROM GEOM_CLASS

I get the following result:

 +-----+
 | GID |
 +-----+
 |   1 |
 |   2 |
 +-----+

(2) If I issue the following query:

 SELECT GEOM_CLASS.GID FROM GEOM_CLASS WHERE (GEOM_CLASS.GID = 2)
 UNION
 SELECT GEOM_CLASS.GID FROM GEOM_CLASS WHERE (GEOM_CLASS.GID = 1)

I get the following result:

 +-----+
 | GID |
 +-----+
 |   2 |
 |   1 |
 +-----+

(3) Now, if I combine (1) and (2) in the following way:

 SELECT GEOM_CLASS.* FROM GEOM_CLASS WHERE (GEOM_CLASS.GID IN (
  SELECT GEOM_CLASS.GID FROM GEOM_CLASS WHERE (GEOM_CLASS.GID = 2)
  UNION
  SELECT GEOM_CLASS.GID FROM GEOM_CLASS WHERE (GEOM_CLASS.GID = 1)
 ))

I get the following result:

 +-----+
 | GID |
 +-----+
 |   1 |
 +-----+

Shouldn't I get:

 +-----+
 | GID |
 +-----+
 |   1 |
 |   2 |
 +-----+

(4) I do get the above result if I run the following query:

 SELECT GEOM_CLASS.* FROM GEOM_CLASS WHERE (GEOM_CLASS.GID IN (
  SELECT 2 UNION SELECT 1
 ))

thanks in advance, Chuck