﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
30967	Test suite fails on Postgres 12	Hannes Ljungberg	Hannes Ljungberg	"The test suite is broken on Postgres 12.

`postgres_tests.test_trigram.TrigramTest.test_trigram_similarity`  fails with the following output:

{{{
======================================================================
FAIL [0.013s]: test_trigram_similarity (postgres_tests.test_trigram.TrigramTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File ""/tests/django/tests/postgres_tests/test_trigram.py"", line 35, in test_trigram_similarity
    ordered=True,
  File ""/tests/django/django/test/testcases.py"", line 1043, in assertQuerysetEqual
    return self.assertEqual(list(items), values, msg=msg)
AssertionError: Lists differ: [('Cat sat on mat.', 0.625), ('Dog sat on rug.', 0.33333334)] != [('Cat sat on mat.', 0.625), ('Dog sat on rug.', 0.333333)]

First differing element 1:
('Dog sat on rug.', 0.33333334)
('Dog sat on rug.', 0.333333)

- [('Cat sat on mat.', 0.625), ('Dog sat on rug.', 0.33333334)]
?                                                          --

+ [('Cat sat on mat.', 0.625), ('Dog sat on rug.', 0.333333)]
}}}

`postgres_tests.test_trigram.TrigramTest.test_trigram_similarity_alternate` fails with the following output:
{{{
======================================================================
FAIL [0.008s]: test_trigram_similarity_alternate (postgres_tests.test_trigram.TrigramTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File ""/tests/django/tests/postgres_tests/test_trigram.py"", line 45, in test_trigram_similarity_alternate
    ordered=True,
  File ""/tests/django/django/test/testcases.py"", line 1043, in assertQuerysetEqual
    return self.assertEqual(list(items), values, msg=msg)
AssertionError: Lists differ: [('Cat sat on mat.', 0.375), ('Dog sat on rug.', 0.6666666)] != [('Cat sat on mat.', 0.375), ('Dog sat on rug.', 0.666667)]

First differing element 1:
('Dog sat on rug.', 0.6666666)
('Dog sat on rug.', 0.666667)

- [('Cat sat on mat.', 0.375), ('Dog sat on rug.', 0.6666666)]
?                                                         ^^

+ [('Cat sat on mat.', 0.375), ('Dog sat on rug.', 0.666667)]
?                                                         ^
}}}

This is caused by changes made to how floats are rounded in Postgres 12:

 Improve performance by using a new algorithm for output of real and double precision values (Andrew Gierth)
 Previously, displayed floating-point values were rounded to 6 (for real) or 15 (for double precision) digits by default, adjusted by the value of   extra_float_digits. Now, whenever extra_float_digits is more than zero (as it now is by default), only the minimum number of digits required to preserve the  exact binary value are output. The behavior is the same as before when extra_float_digits is set to zero or less.
 Also, formatting of floating-point exponents is now uniform across platforms: two digits are used unless three are necessary. In previous releases, Windows builds always printed three digits.

https://www.postgresql.org/docs/release/12.0/

To have consistent behaviour on all Postgres versions my suggestion is to set `extra_float_digits` to 0 on these tests.
"	Bug	closed	contrib.postgres	dev	Normal	fixed	tests		Accepted	1	0	0	0	0	0
