mirror of
				https://github.com/psycopg/psycopg2.git
				synced 2025-11-04 09:47:30 +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`).
 | 
					  (:ticket:`#773`).
 | 
				
			||||||
- `~psycopg2.extras.DictCursor` and `~psycopg2.extras.RealDictCursor` rows
 | 
					- `~psycopg2.extras.DictCursor` and `~psycopg2.extras.RealDictCursor` rows
 | 
				
			||||||
  maintain columns order (:ticket:`#177`).
 | 
					  maintain columns order (:ticket:`#177`).
 | 
				
			||||||
 | 
					- Added `!severity_nonlocalized` attribute on the
 | 
				
			||||||
 | 
					  `~psycopg2.extensions.Diagnostics` object (:ticket:`#783`).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Other changes:
 | 
					Other changes:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -186,6 +186,7 @@ introspection etc.
 | 
				
			||||||
        message_primary
 | 
					        message_primary
 | 
				
			||||||
        schema_name
 | 
					        schema_name
 | 
				
			||||||
        severity
 | 
					        severity
 | 
				
			||||||
 | 
					        severity_nonlocalized
 | 
				
			||||||
        source_file
 | 
					        source_file
 | 
				
			||||||
        source_function
 | 
					        source_function
 | 
				
			||||||
        source_line
 | 
					        source_line
 | 
				
			||||||
| 
						 | 
					@ -198,6 +199,9 @@ introspection etc.
 | 
				
			||||||
        not all the fields are available for all the errors and for all the
 | 
					        not all the fields are available for all the errors and for all the
 | 
				
			||||||
        server versions.
 | 
					        server versions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .. versionadded:: 2.8
 | 
				
			||||||
 | 
					            The `!severity_nonlocalized` attribute.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. _sql-adaptation-objects:
 | 
					.. _sql-adaptation-objects:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,8 +29,11 @@
 | 
				
			||||||
#include "psycopg/diagnostics.h"
 | 
					#include "psycopg/diagnostics.h"
 | 
				
			||||||
#include "psycopg/error.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
 | 
					#ifndef PG_DIAG_SCHEMA_NAME
 | 
				
			||||||
#define PG_DIAG_SCHEMA_NAME     's'
 | 
					#define PG_DIAG_SCHEMA_NAME     's'
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -47,6 +50,11 @@
 | 
				
			||||||
#define PG_DIAG_CONSTRAINT_NAME 'n'
 | 
					#define PG_DIAG_CONSTRAINT_NAME 'n'
 | 
				
			||||||
#endif
 | 
					#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.
 | 
					/* 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[] = {
 | 
					static struct PyGetSetDef diagnosticsObject_getsets[] = {
 | 
				
			||||||
    { "severity", (getter)psyco_diagnostics_get_field, NULL,
 | 
					    { "severity", (getter)psyco_diagnostics_get_field, NULL,
 | 
				
			||||||
      NULL, (void*) PG_DIAG_SEVERITY },
 | 
					      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,
 | 
					    { "sqlstate", (getter)psyco_diagnostics_get_field, NULL,
 | 
				
			||||||
      NULL, (void*) PG_DIAG_SQLSTATE },
 | 
					      NULL, (void*) PG_DIAG_SQLSTATE },
 | 
				
			||||||
    { "message_primary", (getter)psyco_diagnostics_get_field, NULL,
 | 
					    { "message_primary", (getter)psyco_diagnostics_get_field, NULL,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -173,8 +173,8 @@ class ExceptionsTestCase(ConnectingTestCase):
 | 
				
			||||||
                'column_name', 'constraint_name', 'context', 'datatype_name',
 | 
					                'column_name', 'constraint_name', 'context', 'datatype_name',
 | 
				
			||||||
                'internal_position', 'internal_query', 'message_detail',
 | 
					                'internal_position', 'internal_query', 'message_detail',
 | 
				
			||||||
                'message_hint', 'message_primary', 'schema_name', 'severity',
 | 
					                'message_hint', 'message_primary', 'schema_name', 'severity',
 | 
				
			||||||
                'source_file', 'source_function', 'source_line', 'sqlstate',
 | 
					                'severity_nonlocalized', 'source_file', 'source_function',
 | 
				
			||||||
                'statement_position', 'table_name', ]:
 | 
					                'source_line', 'sqlstate', 'statement_position', 'table_name', ]:
 | 
				
			||||||
            v = getattr(diag, attr)
 | 
					            v = getattr(diag, attr)
 | 
				
			||||||
            if v is not None:
 | 
					            if v is not None:
 | 
				
			||||||
                self.assert_(isinstance(v, str))
 | 
					                self.assert_(isinstance(v, str))
 | 
				
			||||||
| 
						 | 
					@ -276,6 +276,15 @@ class ExceptionsTestCase(ConnectingTestCase):
 | 
				
			||||||
        self.assertEqual(e.diag.constraint_name, "chk_eq1")
 | 
					        self.assertEqual(e.diag.constraint_name, "chk_eq1")
 | 
				
			||||||
        self.assertEqual(e.diag.datatype_name, None)
 | 
					        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):
 | 
					    def test_pickle(self):
 | 
				
			||||||
        import pickle
 | 
					        import pickle
 | 
				
			||||||
        cur = self.conn.cursor()
 | 
					        cur = self.conn.cursor()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user