On 26 Aug 2015, at 8:00am, J Decker <d3ck0r at gmail.com> wrote:

> select random() order by random() should definately reprocess the function...

Agreed.  But I've come to the conclusion that

        SELECT random() AS rr ORDER BY rr

should not.  Here's a nasty result

SQLite version 3.8.10.2 2015-05-20 18:14:01
Enter ".help" for usage hints.
sqlite> SELECT rr FROM myView ORDER BY rr;
92
28
97
55
-39

I feel that this result must be wrong.  Here's how to obtain it:

SQLite version 3.8.10.2 2015-05-20 18:14:01
Enter ".help" for usage hints.
sqlite> CREATE TABLE myTable (a INTEGER);
sqlite> INSERT INTO myTable VALUES (1),(2),(3),(4),(5);
sqlite> CREATE VIEW myView AS SELECT a,random()%100 AS rr FROM myTable;
sqlite> SELECT * FROM myView;
1|0
2|43
3|-33
4|24
5|-81
sqlite> SELECT * FROM myView;
1|0
2|-77
3|84
4|35
5|45
sqlite> SELECT rr FROM myView ORDER BY rr;
92
28
97
55
-39
sqlite> 

In my example it's obvious I'm using a VIEW because of what I named it, but in 
complicated real-life code this may be concealed and the programmer may think 
they're doing a simple SELECT on static values.  They shouldn't have to worry 
about such a bizarre result in a simple SELECT command.

I'm gonna call this a bug whether the dev team does or not.

Simon.

Reply via email to