--
-- SELECT_DISTINCT_ON
--
SELECT DISTINCT ON (string4) string4, two, ten
   FROM tmp
   ORDER BY string4 using <, two using >, ten using <;
 string4 | two | ten 
---------+-----+-----
 AAAAxx  |   1 |   1
 HHHHxx  |   1 |   1
 OOOOxx  |   1 |   1
 VVVVxx  |   1 |   1
(4 rows)

-- this will fail due to conflict of ordering requirements
SELECT DISTINCT ON (string4, ten) string4, two, ten
   FROM tmp
   ORDER BY string4 using <, two using <, ten using <;
ERROR:  SELECT DISTINCT ON expressions must match initial ORDER BY expressions
LINE 1: SELECT DISTINCT ON (string4, ten) string4, two, ten
                                     ^
SELECT DISTINCT ON (string4, ten) string4, ten, two
   FROM tmp
   ORDER BY string4 using <, ten using >, two using <;
 string4 | ten | two 
---------+-----+-----
 AAAAxx  |   9 |   1
 AAAAxx  |   8 |   0
 AAAAxx  |   7 |   1
 AAAAxx  |   6 |   0
 AAAAxx  |   5 |   1
 AAAAxx  |   4 |   0
 AAAAxx  |   3 |   1
 AAAAxx  |   2 |   0
 AAAAxx  |   1 |   1
 AAAAxx  |   0 |   0
 HHHHxx  |   9 |   1
 HHHHxx  |   8 |   0
 HHHHxx  |   7 |   1
 HHHHxx  |   6 |   0
 HHHHxx  |   5 |   1
 HHHHxx  |   4 |   0
 HHHHxx  |   3 |   1
 HHHHxx  |   2 |   0
 HHHHxx  |   1 |   1
 HHHHxx  |   0 |   0
 OOOOxx  |   9 |   1
 OOOOxx  |   8 |   0
 OOOOxx  |   7 |   1
 OOOOxx  |   6 |   0
 OOOOxx  |   5 |   1
 OOOOxx  |   4 |   0
 OOOOxx  |   3 |   1
 OOOOxx  |   2 |   0
 OOOOxx  |   1 |   1
 OOOOxx  |   0 |   0
 VVVVxx  |   9 |   1
 VVVVxx  |   8 |   0
 VVVVxx  |   7 |   1
 VVVVxx  |   6 |   0
 VVVVxx  |   5 |   1
 VVVVxx  |   4 |   0
 VVVVxx  |   3 |   1
 VVVVxx  |   2 |   0
 VVVVxx  |   1 |   1
 VVVVxx  |   0 |   0
(40 rows)

-- bug #5049: early 8.4.x chokes on volatile DISTINCT ON clauses
select distinct on (1) floor(random()) as r, f1 from int4_tbl order by 1,2;
 r |     f1      
---+-------------
 0 | -2147483647
(1 row)

