random results in logical operations on rand() generated numbers
----------------------------------------------------------------

                 Key: CORE-4362
                 URL: http://tracker.firebirdsql.org/browse/CORE-4362
             Project: Firebird Core
          Issue Type: Bug
          Components: Engine
    Affects Versions: 2.5.2 Update 1
         Environment: Linux
            Reporter: Edivaldo de Araújo Pereira
            Priority: Trivial


Every logical operation executed on numbers generated by rand() in a "virtual" 
table (aliased query?) produces random results. It looks like the rand() 
function is called each time a generated number is referenced. This is not the 
behaviour of other DBMS, like MySQL or Postgesql: once generated, there is no 
more random behaviour of the numbers.
Is this a bug or by design?

Example:

create table lixo(cod integer, nme char(5), rnd float);
insert into lixo values(1,'um',random()*100);
insert into lixo values(2,'dois',random()*100);
insert into lixo values(3,'três',random()*100);

The query

select lx.*,vlr*2 as dbr,vlr*3 as trp from (
  select lixo.*,cast(cod+(random()*20) as float) as vlr from lixo
) lx
order by vlr

produces random numbers for dbr and trp, with no mathematical relation to vlr 
as expected, and the order is random too; but the query

select lx.*,rnd*2 as dbr,rnd*3 as trp from (
  select lixo.*,cast(cod+(rand()*20) as float) as vlr from lixo
) lx
order by rnd

produces the expected results: dbr is the double of vlr, trp is the triple and 
the order is rnd crescent. Note that rnd is a number generated by rand(), but 
once it is stored in the table, there is no more random behaviour. The use of 
cast() makes no difference, it was just a try...

I tried a lot of operations over rand() generated numbers, all of them with 
random results: comparisons in a where clause, range in between, arithmetic 
operations, etc.



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to