mirror of
				https://github.com/psycopg/psycopg2.git
				synced 2025-10-31 15:57:31 +03:00 
			
		
		
		
	Merge remote-tracking branch 'origin/diag-schema-name-nonloc'
This commit is contained in:
		
						commit
						f5f6b420b2
					
				
							
								
								
									
										2
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								NEWS
									
									
									
									
									
								
							|  | @ -13,6 +13,8 @@ New features: | |||
|   (:ticket:`#773`). | ||||
| - `~psycopg2.extras.DictCursor` and `~psycopg2.extras.RealDictCursor` rows | ||||
|   maintain columns order (:ticket:`#177`). | ||||
| - Added `!severity_nonlocalized` attribute on the | ||||
|   `~psycopg2.extensions.Diagnostics` object (:ticket:`#783`). | ||||
| 
 | ||||
| Other changes: | ||||
| 
 | ||||
|  |  | |||
|  | @ -186,6 +186,7 @@ introspection etc. | |||
|         message_primary | ||||
|         schema_name | ||||
|         severity | ||||
|         severity_nonlocalized | ||||
|         source_file | ||||
|         source_function | ||||
|         source_line | ||||
|  | @ -198,6 +199,9 @@ introspection etc. | |||
|         not all the fields are available for all the errors and for all the | ||||
|         server versions. | ||||
| 
 | ||||
|         .. versionadded:: 2.8 | ||||
|             The `!severity_nonlocalized` attribute. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| .. _sql-adaptation-objects: | ||||
|  |  | |||
|  | @ -29,8 +29,11 @@ | |||
| #include "psycopg/diagnostics.h" | ||||
| #include "psycopg/error.h" | ||||
| 
 | ||||
| /* These are new in PostgreSQL 9.3. Defining them here so that psycopg2 can
 | ||||
|  * use them with a 9.3+ server even if compiled against pre-9.3 headers. */ | ||||
| 
 | ||||
| /* These constants are defined in src/include/postgres_ext.h but some may not
 | ||||
|  * be available with the libpq we currently support at compile time. */ | ||||
| 
 | ||||
| /* Available from PG 9.3 */ | ||||
| #ifndef PG_DIAG_SCHEMA_NAME | ||||
| #define PG_DIAG_SCHEMA_NAME     's' | ||||
| #endif | ||||
|  | @ -47,6 +50,11 @@ | |||
| #define PG_DIAG_CONSTRAINT_NAME 'n' | ||||
| #endif | ||||
| 
 | ||||
| /* Available from PG 9.6 */ | ||||
| #ifndef PG_DIAG_SEVERITY_NONLOCALIZED | ||||
| #define PG_DIAG_SEVERITY_NONLOCALIZED 'V' | ||||
| #endif | ||||
| 
 | ||||
| 
 | ||||
| /* Retrieve an error string from the exception's cursor.
 | ||||
|  * | ||||
|  | @ -70,6 +78,8 @@ psyco_diagnostics_get_field(diagnosticsObject *self, void *closure) | |||
| static struct PyGetSetDef diagnosticsObject_getsets[] = { | ||||
|     { "severity", (getter)psyco_diagnostics_get_field, NULL, | ||||
|       NULL, (void*) PG_DIAG_SEVERITY }, | ||||
|     { "severity_nonlocalized", (getter)psyco_diagnostics_get_field, NULL, | ||||
|       NULL, (void*) PG_DIAG_SEVERITY_NONLOCALIZED }, | ||||
|     { "sqlstate", (getter)psyco_diagnostics_get_field, NULL, | ||||
|       NULL, (void*) PG_DIAG_SQLSTATE }, | ||||
|     { "message_primary", (getter)psyco_diagnostics_get_field, NULL, | ||||
|  |  | |||
|  | @ -173,8 +173,8 @@ class ExceptionsTestCase(ConnectingTestCase): | |||
|                 'column_name', 'constraint_name', 'context', 'datatype_name', | ||||
|                 'internal_position', 'internal_query', 'message_detail', | ||||
|                 'message_hint', 'message_primary', 'schema_name', 'severity', | ||||
|                 'source_file', 'source_function', 'source_line', 'sqlstate', | ||||
|                 'statement_position', 'table_name', ]: | ||||
|                 'severity_nonlocalized', 'source_file', 'source_function', | ||||
|                 'source_line', 'sqlstate', 'statement_position', 'table_name', ]: | ||||
|             v = getattr(diag, attr) | ||||
|             if v is not None: | ||||
|                 self.assert_(isinstance(v, str)) | ||||
|  | @ -276,6 +276,15 @@ class ExceptionsTestCase(ConnectingTestCase): | |||
|         self.assertEqual(e.diag.constraint_name, "chk_eq1") | ||||
|         self.assertEqual(e.diag.datatype_name, None) | ||||
| 
 | ||||
|     @skip_before_postgres(9, 6) | ||||
|     def test_9_6_diagnostics(self): | ||||
|         cur = self.conn.cursor() | ||||
|         try: | ||||
|             cur.execute("select 1 from nosuchtable") | ||||
|         except psycopg2.Error as exc: | ||||
|             e = exc | ||||
|         self.assertEqual(e.diag.severity_nonlocalized, 'ERROR') | ||||
| 
 | ||||
|     def test_pickle(self): | ||||
|         import pickle | ||||
|         cur = self.conn.cursor() | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user