On Fri, Apr 01, 2011 at 02:24:53PM +0300, Heikki Linnakangas wrote: > I tried to read the SQL spec to see if it has anything to say about > that, but I couldn't find anything. My common sense says that that > transformation is not legal.
Your feeling is correct; I would motivate it as follows. random() IN (b,c) is not equivalent to (random() = b) OR (random() = c) because the two random() will evaluate to two different numbers. So, for instance, if you define random_boolean() as either true or false randomly (and VOLATILEly), then random_boolean() IN (true, false) is always true, while (random_boolean() = true) OR (random_boolean() = false) is not (has probability 75%). For instance, the first random_boolean() might return false while the second one returns true. Best regards, Dr. Gianni Ciolli - 2ndQuadrant Italia PostgreSQL Training, Services and Support gianni.cio...@2ndquadrant.it | www.2ndquadrant.it -- Sent via pgsql-hackers mailing list (email@example.com) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers