Re: Default ordering option - Mailing list pgsql-general

From Adrian Klaver
Subject Re: Default ordering option
Date
Msg-id f464ff11-ce6c-4e94-63c6-46afb79c79c8@aklaver.com
Whole thread Raw
In response to Default ordering option  (Cyril Champier <cyril.champier@doctolib.com>)
Responses Re: Default ordering option
List pgsql-general
On 7/23/19 8:43 AM, Cyril Champier wrote:
> Hi,
> 
> In this documentation 
> <https://www.postgresql.org/docs/9.1/queries-order.html>, it is said:
> 
>     If sorting is not chosen, the rows will be returned in an
>     unspecified order. The actual order in that case will depend on the
>     scan and join plan types and the order on disk, but it must not be
>     relied on.
> 
> 
> I would like to know if there is any way to change that to have a "real" 
> random behaviour.
> 
> My use case:
> At Doctolib, we do a lot of automatic tests.
> Sometimes, people forgot to order their queries. Most of the time, there 
> is no real problem on production. Let say, we display a user list 
> without order.
> When a developer writes a test for this feature, he will create 2 users 
> A and B, then assert that they are displayed "[A, B]".
> 99% of the time the test will be ok, but sometimes, the displayed list 
> will be "[B,A]", and the test will fail.
> 
> One solution could be to ensure random order with an even distribution, 
> so that such failing test would be detected quicker.
> 
> Is that possible? Maybe with a plugin?

Not that I know of.

A possible solution given below:

test_(postgres)> insert into t1 values (1, 'dog'), (2, 'cat'), (3, 'fish');
INSERT 0 3

test_(postgres)> select * from t1 ;
  a |  b
---+------
  1 | dog
  2 | cat
  3 | fish
(3 rows)

test_(postgres)> update  t1 set b = 'dogfish' where  a =1;
UPDATE 1

test_(postgres)> select * from t1 ;
  a |    b
---+---------
  2 | cat
  3 | fish
  1 | dogfish
(3 rows)

An UPDATE reorders the rows. Maybe throw an UPDATE into the test after 
creating the users to force an 'out of order' result?


> 
> Thanks,
> Cyril
> 
> 
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com



pgsql-general by date:

Previous
From: Alexander Pyhalov
Date:
Subject: LWLock optimization
Next
From: Perumal Raj
Date:
Subject: Re: pg_upgrade : 9.X to 11.X issue CentoOS 7.6