Hi 2017-02-11 17:37 GMT+01:00 Alexander Farber <alexander.far...@gmail.com>:
> Good evening, > > after switching to 9.6.2 from 9.5.3 the following custom function has > stopped working: > > CREATE OR REPLACE FUNCTION words_shuffle(in_array varchar[]) > RETURNS varchar[] AS > $func$ > SELECT array_agg(letters.x) FROM > (SELECT UNNEST(in_array) x ORDER BY RANDOM()) letters; > $func$ LANGUAGE sql STABLE; > > In 9.5.3 it was shuffling characters: > > words=> select words_shuffle(ARRAY['a','b','c','d','e','f']); > words_shuffle > --------------- > {c,d,b,a,e,f} > (1 row) > > But in 9.6.2 it has stopped doing so: > words=> select words_shuffle(ARRAY['a','b','c','d','e','f']); > words_shuffle > --------------- > {a,b,c,d,e,f} > (1 row) > > Any suggestions for a better shuffling function please? > CREATE OR REPLACE FUNCTION words_shuffle(in_array varchar[]) RETURNS varchar[] AS $func$ SELECT array_agg(letters.x) FROM (SELECT x FROM UNNEST(in_array) x ORDER BY RANDOM()) letters; $func$ LANGUAGE sql STABLE; there was some optimisations for faster expression evaluation - probably this is one effect of this optimisation. generally SRF function should not be used in target list - now when we have LATERAL join, it is not necessary Regards Pavel > > Regards > Alex > >