Commit Graph

1812 Commits

Author SHA1 Message Date
Daniele Varrazzo
c5411f67c2 Added link from news file 2016-07-07 02:47:34 +01:00
Daniele Varrazzo
a5970a21a8 Bunch of test tweaks to make the test grid green 2016-07-04 23:01:49 +01:00
Daniele Varrazzo
98a9203827 Merge branch 'issue443' into maint_2_6 2016-07-04 22:07:41 +01:00
Daniele Varrazzo
9886a7210e Connection state fixed noted in the news 2016-07-04 22:07:28 +01:00
Daniele Varrazzo
f4b57822b0 Fixed tests on Py 2.5 2016-07-04 22:07:28 +01:00
Daniele Varrazzo
9d4e3a06b7 Skip killing test on brontosaur servers 2016-07-04 21:50:33 +01:00
Daniele Varrazzo
88af6e790c errorcodes map updated to PostgreSQL 9.5. 2016-07-01 20:08:53 +01:00
Daniele Varrazzo
5e7a4983c6 Merge branch 'bug-424' into maint_2_6 2016-07-01 19:30:01 +01:00
Daniele Varrazzo
230d9d6b1a Mention closing bug #424 in the news 2016-07-01 19:29:45 +01:00
Gabriel Kihlman
e3ba21039c Avoid a possible null deref, tz might be NULL.
Found by clang static analyzer.
2016-07-01 19:29:45 +01:00
Daniele Varrazzo
61764ea581 Allow adapting bytes using QuotedString on Python 3 too
Close #365.
2016-07-01 19:11:04 +01:00
Daniele Varrazzo
c585478dd1 Fixed encoding tests on Py3 2016-07-01 18:50:44 +01:00
Daniele Varrazzo
2b52469a0b Docs wrapping 2016-07-01 17:56:29 +01:00
Udi Oron
bbe6414ad3 Suggest installing psycopg2 in windows using pip
pip is becoming the standard method for installing python packages, and now binary wheels are a better and easier option for users:
https://github.com/psycopg/psycopg2/issues/368
2016-07-01 17:55:31 +01:00
Daniele Varrazzo
ece7fb43b5 Merge branch 'qstring-writable-encoding' into maint_2_6 2016-07-01 17:54:28 +01:00
Daniele Varrazzo
f335c46a54 Don't hope to encode stuff in an arbitrary encoding
libpq's PQescapeString will use the same encoding it has seen before in
a connection (static_client_encoding).

So I think I'll leave this feature here for people who know what is
doing, but won't really document it as a feature: it can't really work
in a generic way (unless adding some disgusting hack like creating a
fake connection with the encoding we want to call PQescapeStringConn
instead of PQescapeString).
2016-07-01 17:47:40 +01:00
Daniele Varrazzo
e062404d5c Test moved to the right module, cleanup, but same problem 2016-07-01 16:57:25 +01:00
Daniele Varrazzo
600c744fba Work in progress on writable encoding
Would help using adapt(unicode) to quote strings without a connection,
see ticket #331.

Currently in heisenbug state: if test_connection_wins_anyway and
test_encoding_default run (in this order), the latter fail because the
returned value is "'\xe8 '", with an extra space. Skipping the first
test, the second succeed.

The bad value is returned by the libpq:

    ql = PQescapeString(to+eq+1, from, len);

just returns len = 2 and an extra space in the string... meh.
2016-07-01 11:17:55 +01:00
Daniele Varrazzo
556f25153f Fixed build on win32
Fix #422.
2016-07-01 02:23:59 +01:00
Daniele Varrazzo
8dff6a38c7 Fixed segfault on repr() for uninitialized connections
Close #361.
2016-07-01 02:09:56 +01:00
Daniele Varrazzo
05f23df238 Wordsmithing on COPY commands
Address somehow issue #397.
2016-07-01 01:41:03 +01:00
Daniele Varrazzo
5f3be39e0a Document that the libpq must be available at runtime
Fix issue #408.
2016-07-01 01:21:08 +01:00
Gabriel Linder
4d0b449cbf Typo. 2016-07-01 01:21:08 +01:00
Bernhard M. Wiedemann
89f2ab9f05 dont claim copyright for future years
otherwise, when building from unchanged source in 2018,
it would claim Copyright 2018
which is not true

Being able to reproduce identical output from identical input
is important to Linux distributions
2016-07-01 01:21:08 +01:00
Federico Di Gregorio
e79949f76e Merge pull request #447 from gward/maint_2_6
Fix scattered grammar/spelling errors in comments, debug output, etc.
2016-06-29 08:38:48 +02:00
Greg Ward
077e1f0e8d Fix scattered grammar/spelling errors in comments, debug output, etc. 2016-06-28 18:16:16 -04:00
Greg Ward
53c1607644 Always raise OperationalError when connection was closed externally.
From the DB-API (https://www.python.org/dev/peps/pep-0249/):

  OperationalError

  Exception raised for errors that are related to the database's
  operation and not necessarily under the control of the programmer,
  e.g. an unexpected disconnect occurs, [...]

Additionally, psycopg2 was inconsistent, at least in the async case:
depending on how the "connection closed" error was reported from the
kernel to libpq, it would sometimes raise OperationalError and
sometimes DatabaseError. Now it always raises OperationalError.
2016-06-28 18:03:05 -04:00
Greg Ward
ac14957fbb Always detect when a connection is closed behind psycopg2's back.
There's a race condition that only seems to happen over Unix-domain
sockets. Sometimes, the closed socket is reported by the kernel to
libpq like this (captured with strace):

  sendto(3, "Q\0\0\0\34select pg_backend_pid()\0", 29, MSG_NOSIGNAL, NULL, 0) = 29
  recvfrom(3, "E\0\0\0mSFATAL\0C57P01\0Mterminating "..., 16384, 0, NULL, NULL) = 110
  recvfrom(3, 0x12d0330, 16384, 0, 0, 0)  = -1 ECONNRESET (Connection reset by peer)

That is, psycopg2/libpq sees no error when sending the first query
after the connection is closed, but gets an error reading the result.
In that case, everything worked fine.

But sometimes, the error manifests like this:

  sendto(3, "Q\0\0\0\34select pg_backend_pid()\0", 29, MSG_NOSIGNAL, NULL, 0) = -1 EPIPE (Broken pipe)
  recvfrom(3, "E\0\0\0mSFATAL\0C57P01\0Mterminating "..., 16384, 0, NULL, NULL) = 110
  recvfrom(3, "", 16274, 0, NULL, NULL)   = 0
  recvfrom(3, "", 16274, 0, NULL, NULL)   = 0

i.e. libpq received an error when sending the query. This manifests as
a slightly different exception from a slightly different place. More
importantly, in this case connection.closed is left at 0 rather than
being set to 2, and that is the bug I'm fixing here.

Note that we see almost identical behaviour for sync and async
connections, and the fixes are the same. So I added extremely similar
test cases.

Finally, there is still a bug here: for async connections, we
sometimes raise DatabaseError (incorrect) and sometimes raise
OperationalError (correct). Will fix that next.
2016-06-28 17:46:21 -04:00
Karl O. Pinc
2714c9c638 Improve sentence. 2016-03-10 12:07:38 +00:00
Jan Janßen
072b6ef98b Update psycopg1.py 2016-03-10 11:58:37 +00:00
Daniele Varrazzo
5aa7588f56 Merge branch 'py35' into maint_2_6 2016-03-08 05:15:47 +00:00
Daniele Varrazzo
0fa44ea943 Start advertising Py 3.5 support 2016-03-08 05:13:57 +00:00
Daniele Varrazzo
fd58f9105e Fixed read() exception propagation in copy_from
Close issue #412.
2016-03-08 05:12:06 +00:00
Daniele Varrazzo
ae87645c43 Merge branch 'setuptools' into maint_2_6 2016-03-08 04:34:41 +00:00
Daniele Varrazzo
40997d901b Fixed 'make sdist' to work with setuptools 2016-03-08 04:34:12 +00:00
Daniele Varrazzo
1f737c4d65 Merge branch 'msvc-2015-fix' into maint_2_6 2016-03-08 00:27:17 +00:00
Daniele Varrazzo
a355d48aeb Py 3.5 MSVC 2015 build fixed noted in news
Close issue #380.
2016-03-08 00:25:19 +00:00
Christian Ullrich
b6d1fbdfd1 Work around late initialization in distutils._msvccompiler. 2016-03-08 00:23:08 +00:00
Daniele Varrazzo
cbeea0f98f Merge branch 'setuptools' into maint_2_6 2016-03-07 10:39:03 +00:00
Daniele Varrazzo
88593602de setuptools in the news 2016-03-07 10:38:40 +00:00
Jason Erickson
ef09ebe62a Modify setup.py to support setuptools/wheel
To support creation of whl files for PyPI, setuptools need to be imported
instead of distutils.  Created try/except case to fall back to integrated
distutils if setuptools is not installed.
2016-03-05 13:22:39 -07:00
Daniele Varrazzo
2833d4f5ff Merge branch 'bug-382' into maint_2_6 2015-12-16 12:02:31 +00:00
Daniele Varrazzo
c20503544f Fixed race condition on import in errorcodes.lookup
Fixes #382.
2015-12-16 12:00:52 +00:00
Oleksandr Shulgin
ff4c52f435 Fix stale Dprintfs in pqpath.c referring to 'status' 2015-10-27 10:39:39 +00:00
Daniele Varrazzo
db9082b6e4 Decref the ssl module after importing 2015-10-01 17:02:43 +01:00
Daniele Varrazzo
78d6dca65d Bump to next version (uploading the docs) 2015-10-01 15:32:45 +01:00
Daniele Varrazzo
c076fc3a26 The wait_select callback can cancel a query using Ctrl-C
Fixes #333.
2015-10-01 15:27:31 +01:00
Daniele Varrazzo
347a64b979 Fixed PersistentConnectionPool on Python 3
Fixes ticket #348.
2015-10-01 14:44:56 +01:00
ClodoaldoPinto
a09efaf5a1 Typo correction 2015-10-01 14:31:51 +01:00
Daniele Varrazzo
1714bd9273 MSVC 2015 compiler support added to news file 2015-10-01 14:29:56 +01:00