Commit Graph

920 Commits

Author SHA1 Message Date
James Henstridge
86597f6939 * psycopg/adapter_binary.c (binary_quote): apply Brandon Rhodes'
patch from ticket #209 to check return value from
	PyObject_AsCharBuffer().  This fixes the segfault.
	(binary_quote): switch from PyObject_AsCharBuffer() to
	PyObject_AsReadBuffer() to support buffer objects that don't
	implement the bf_getcharbuf protocol.

	* tests/types_basic.py (TypesBasicTests.testBinary): Test round
	tripping of bytea buffers.  Currently segfaults.
2008-01-10 22:19:23 +00:00
James Henstridge
729117af8b * psycopg/connection_int.c (conn_close): fix for new
pq_abort_locked() prototype.
	(conn_switch_isolation_level): fix for new pq_abort_locked()
	prototype, and use pq_complete_error() to show error message.
	(conn_set_client_encoding): same here.

	* psycopg/pqpath.c (pq_execute_command_locked): remove static
	modifier.
	(pq_complete_error): same here.
	(pq_abort_locked): add pgres and error arguments.
	(pq_abort): call pq_abort_locked() to reduce code duplication.
2008-01-10 18:14:44 +00:00
James Henstridge
d190d5918a 2007-12-23 James Henstridge <james@jamesh.id.au>
* psycopg/pqpath.c (pq_execute_command_locked): add an error
	argument to hold an error when no PGresult is returned by PQexec,
	rather than using pq_set_critical().
	(pq_complete_error): new function that converts the error returned
	by pq_execute_command_locked() to a Python exception.
	(pq_begin_locked): add error argument.
	(pq_commit): use pq_complete_error().
	(pq_abort): use pq_complete_error().
	(pq_abort_locked): always call pq_set_critical() on error, and
	clear the error message from pq_execute_command_locked().
	(pq_execute): use pq_complete_error() to handle the error from
	pq_begin_locked().

	* psycopg/pqpath.c (pq_begin): remove unused function.

	* psycopg/connection_type.c (psyco_conn_commit): if conn_commit()
	raises an error, just return NULL, since it is now setting an
	exception itself.
	(psyco_conn_rollback): same here.

	* psycopg/connection_int.c (conn_commit): don't drop GIL and lock
	connection before calling pq_commit().
	(conn_rollback): same here.
	(conn_close): use pq_abort_locked().
	(conn_switch_isolation_level): same here.
	(conn_set_client_encoding): same here.

	* psycopg/pqpath.h: add prototype for pq_abort_locked().

	* psycopg/pqpath.c (pq_commit): convert function to run with GIL
	held, and handle errors appropriately.
	(pq_abort): same here.
	(pq_abort_locked): new function to abort a locked connection.

2007-12-22  James Henstridge  <james@jamesh.id.au>

	* psycopg/pqpath.c (pq_raise): add a "pgres" argument so we can
	generate nice errors not related to a particular cursor.
	(pq_execute): use pq_begin_locked() rather than pq_begin().  Use
	pq_raise() to handle any errors from it.

	* psycopg/pqpath.c (pq_execute_command_locked): helper function
	used to execute a command-style query on a locked connection.
	(pq_begin_locked): a variant of pq_begin() that uses
	pq_execute_command_locked().
	(pq_begin): rewrite to use pq_begin_locked().
2008-01-10 06:14:20 +00:00
James Henstridge
5fe08ae83e 2007-12-22 James Henstridge <james@jamesh.id.au>
* psycopg/config.h: only print debug messages if
        psycopg_debug_enabled is true.

        * psycopg/psycopgmodule.c (init_psycopg): set
        psycopg_debug_enabled to true if the $PSYCOPG_DEBUG environment
        variable is set.
2007-12-22 13:03:41 +00:00
Federico Di Gregorio
f3e74d2c48 DA version patch. 2007-12-21 00:45:01 +00:00
Federico Di Gregorio
d31b4add22 Applied win32 patch from Jason Erickson. 2007-12-21 00:18:55 +00:00
James Henstridge
4910f53b7e * psycopg/pqpath.c (pq_execute): uncomment the "curs->pgres ==
NULL" error handler after the PQexec() call.  This is needed to
	catch database disconnects (and probably other errors).  According
	to Federico, it was commented out to avoid a spurious error, so we
	should watch for problems.
2007-12-19 14:33:44 +00:00
James Henstridge
fd5d2d5238 * psycopg/pqpath.c (pq_raise): only remove the first 8 characters
of the exception message if it actually gives the severity.

	* psycopg/pqpath.h (pq_resolve_critical): add prototype, since
	this function is being used from connection_int.c.

	* psycopg/psycopg.h: update psyco_set_error() prototype.

	* psycopg/psycopgmodule.c (psyco_errors_init): set pgerror, pgcode
	and cursor class attributes to None on psycopg2.Error so that the
	attributes will always be available (simplifies error handling).
	(psyco_set_error): add const qualifiers to msg, pgerror and pgcode
	arguments.
	Don't bother setting pgerror, pgcode or cursor to None if they are
	not provided -- the class defaults take care of this.
2007-12-19 14:29:03 +00:00
Daniele Varrazzo
67afd678b0 Added 'make check' target, running all the available tests.
Most of the updates have been provided by James Henstridge.

Closes ticket #195.
2007-11-11 10:40:12 +00:00
Daniele Varrazzo
fd1ee6fffc Fixes to let the dbapi20 test suite pass.
Submitted by James Henstridge in ticket #195.
2007-11-11 10:18:43 +00:00
Daniele Varrazzo
75cb5d75d7 Use escape string syntax for string escape if connected to a server
requiring it.

Added a connection flag to store whether E''-style quoting is required: this
avoids repeated PQparameterStatus() calls.

Added a test case to verify correct behavior on strings, unicode and binary 
data. Tested with PG versions from 7.4 to 8.3b2, with any server
'standard_conforming_strings' setting and with 'PSYCOPG_OWN_QUOTING' too.
2007-11-11 08:53:44 +00:00
Daniele Varrazzo
a6ea092acc - Tabs fixed. 2007-11-11 03:58:45 +00:00
Daniele Varrazzo
70e555585e Fixed selection of the proper binary string quoting. 2007-11-09 13:00:37 +00:00
Daniele Varrazzo
272140f5c1 Use escape string syntax for binary escape if connected with a
server with ver >= 8.2.

The feature is only enabled when compiling psycopg with libpq
ver >= 8.0.
2007-11-09 05:51:12 +00:00
Daniele Varrazzo
7d408b47d7 ChangeLog updated after r903. 2007-11-09 05:49:13 +00:00
Daniele Varrazzo
277f57ffb0 - Hard limit on the connection.notices list to avoid them
growing indefinitely.
  Notices are treated as a queue: when the queue is full 
  drop the oldest notice.
2007-11-09 02:28:47 +00:00
Daniele Varrazzo
e1dd9ca843 Fixed bug #192 (Decimal support not safe for use with multiple sub
interpreters) as proposed by Graham Dumpleton.

If running in the main interpreter, use a cached version of the Decimal
object. Else repeat the object lookup.
2007-10-21 03:22:55 +00:00
Daniele Varrazzo
63773ad1e0 Added missing DECREF. 2007-10-18 17:29:15 +00:00
Daniele Varrazzo
c71b7a03d0 Added missing return in case out of memory. 2007-10-18 17:19:16 +00:00
Federico Di Gregorio
1ed16c8265 Added test for DateTime object allocation bug. 2007-09-19 13:40:18 +00:00
Federico Di Gregorio
07892b29a6 Aggressive threading on fetch (and a new bug!) 2007-09-19 13:39:48 +00:00
Federico Di Gregorio
c9e701baa9 Fixed bug #194 (and added nice MD project not that C/C++ is supported.) 2007-09-08 08:54:30 +00:00
Federico Di Gregorio
0422506404 Added name parameters to .cursor() calls in extras. 2007-09-01 09:32:42 +00:00
Federico Di Gregorio
dfda372fae Preparing release 2.0.6. 2007-06-08 00:39:06 +00:00
Federico Di Gregorio
98c0992b6e Fix for #182. 2007-05-29 08:56:25 +00:00
Federico Di Gregorio
dbbdcfb0c0 Fix for #182. 2007-05-29 08:56:17 +00:00
Federico Di Gregorio
46668d214b conn_commit/conn_rollback error handling (closes: #187). 2007-05-29 08:43:34 +00:00
Federico Di Gregorio
a07987cd90 Patchset copy_expert 5/5. 2007-05-29 08:30:24 +00:00
Federico Di Gregorio
b82c2f5cd9 Patchset copy_expert 4/5. 2007-05-29 08:23:35 +00:00
Federico Di Gregorio
c54e9142f4 Patchset copy_expert 3/5. 2007-05-29 08:16:44 +00:00
Federico Di Gregorio
3b2908b51e Patchset copy_expert 2/5. 2007-05-29 08:14:58 +00:00
Federico Di Gregorio
a23de80c6b Patchset copy_expert 1/5. 2007-05-29 08:13:40 +00:00
Federico Di Gregorio
a779c8ef99 .get_transaction_status() implementation. 2007-04-25 22:42:36 +00:00
Federico Di Gregorio
d6e232e2b9 Various fixes, now all examples work. 2007-04-13 14:07:11 +00:00
Federico Di Gregorio
8274a032b1 typecast_binary.c cleanup. 2007-04-13 01:17:54 +00:00
Federico Di Gregorio
967ec370ed int->size_t transition. 2007-04-13 01:16:22 +00:00
Federico Di Gregorio
ee44315ff2 Appliet Jasons patch to fix win32 build glitches. 2007-04-13 01:14:01 +00:00
Federico Di Gregorio
f57920b0dd Release 2.0.6b2. 2007-04-11 07:12:16 +00:00
Federico Di Gregorio
2a6b523506 Fixed crash and win32 patches. 2007-04-11 04:16:00 +00:00
Federico Di Gregorio
d6f2aa27b7 Fixed mem and ref leak in connect(). 2007-04-10 06:51:35 +00:00
Federico Di Gregorio
e5829292cd Fixed both Python 2.5 and 64 bit problems. 2007-04-10 06:36:18 +00:00
Fabio Tranchitella
fadd1a6938 psycopg2da: better pattern matching for Retry exceptions; it is now compatible with postgresql 8.0, 8.1 and 8.2 exception messages. 2007-03-25 03:39:23 +00:00
Federico Di Gregorio
2ae0c32031 ZPsycopgDA now uses connection-level type-casters. 2007-02-23 15:23:06 +00:00
Federico Di Gregorio
6598a279e2 Added support for per-cursor and per-connection typecasters. 2007-02-22 15:16:54 +00:00
Federico Di Gregorio
c2e16b8901 Applied patch from #135. 2007-02-11 08:25:33 +00:00
Federico Di Gregorio
09c866221c Password obfuscation done right (closes: #147) 2007-02-11 08:11:22 +00:00
Federico Di Gregorio
3a94e747d7 Encodings from Karsten (part 2.) 2007-01-19 14:47:21 +00:00
Federico Di Gregorio
5642a68adb Encodings from Karsten. 2007-01-19 14:38:01 +00:00
Federico Di Gregorio
1c16009985 Added support for NULL in arrays (closes: #154) 2007-01-19 14:08:06 +00:00
Federico Di Gregorio
2883428791 Lets do a beta release. 2007-01-19 03:40:27 +00:00