mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Refs #32226 -- Fixed JSON format of QuerySet.explain() on PostgreSQL when format is uppercased.
Follow up to aba9c2de66.
			
			
This commit is contained in:
		| @@ -1434,9 +1434,8 @@ class SQLCompiler: | ||||
|         result = list(self.execute_sql()) | ||||
|         # Some backends return 1 item tuples with strings, and others return | ||||
|         # tuples with integers and strings. Flatten them out into strings. | ||||
|         output_formatter = ( | ||||
|             json.dumps if self.query.explain_info.format == "json" else str | ||||
|         ) | ||||
|         format_ = self.query.explain_info.format | ||||
|         output_formatter = json.dumps if format_ and format_.lower() == "json" else str | ||||
|         for row in result[0]: | ||||
|             if not isinstance(row, str): | ||||
|                 yield " ".join(output_formatter(c) for c in row) | ||||
|   | ||||
| @@ -41,14 +41,16 @@ class ExplainTests(TestCase): | ||||
|                         ) | ||||
|                         self.assertIsInstance(result, str) | ||||
|                         self.assertTrue(result) | ||||
|                         if format == "xml": | ||||
|                         if not format: | ||||
|                             continue | ||||
|                         if format.lower() == "xml": | ||||
|                             try: | ||||
|                                 xml.etree.ElementTree.fromstring(result) | ||||
|                             except xml.etree.ElementTree.ParseError as e: | ||||
|                                 self.fail( | ||||
|                                     f"QuerySet.explain() result is not valid XML: {e}" | ||||
|                                 ) | ||||
|                         elif format == "json": | ||||
|                         elif format.lower() == "json": | ||||
|                             try: | ||||
|                                 json.loads(result) | ||||
|                             except json.JSONDecodeError as e: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user