Commit Graph

2592 Commits

Author SHA1 Message Date
Daniele Varrazzo
27b26bc210 Fixed apparent access to uninitialized var
No error before: cpychecker is confused but the var was init'd by
PyLong_FromString.

davidmalcolm/gcc-python-plugin#167
2019-02-16 13:11:01 +01:00
Daniele Varrazzo
1f62b47dc5 Further cpychecker annotations 2019-02-16 13:11:01 +01:00
Daniele Varrazzo
d38ffc6cf1 Cleanup after pq_fetch static analysis
The behaviour around _pq_fetch_tuples might have changed a little but it
seems behaving right and is more straightforward now.
2019-02-16 13:11:01 +01:00
Daniele Varrazzo
6dc1f9a3b0 Added cpychecker hints to libpq 2019-02-16 13:11:01 +01:00
Daniele Varrazzo
de1b816f83 Cleanup of gcc fake positives in lobject 2019-02-16 13:05:51 +01:00
Daniele Varrazzo
2aedbedcbf Work around refcount cpychecker bug
Also increment error/code refcounts before storing in error state.
2019-02-16 13:05:51 +01:00
Daniele Varrazzo
6aaecd6563 Added dockerfile to run cpychecker in isolation 2019-02-16 13:05:51 +01:00
Daniele Varrazzo
0abf947cd8 Ignore checking a few functions triggering cpychecker bugs
With these changes cpychecker can run on the whole codebase without
crashing.
2019-02-16 13:05:51 +01:00
Daniele Varrazzo
18c34c2369 Mark state setting in _psyco_curs_execute() 2019-02-16 13:05:51 +01:00
Daniele Varrazzo
d344ff818a Flag cpychecker false positives in adapters 2019-02-16 13:05:51 +01:00
Daniele Varrazzo
bcd7fca543 replication_cursor_type: solved cpychecker false positives 2019-02-16 13:05:51 +01:00
Daniele Varrazzo
86d460e80b replication_connection_type: mark state setting to help cpychecker 2019-02-16 13:05:51 +01:00
Daniele Varrazzo
c123439e66 cursor_type.c: avoid running the static checker on a handful of functions
Various bugs raised to cpychecker.
2019-02-16 13:05:51 +01:00
Daniele Varrazzo
aabb868ca6 Try to annotate a function as raising on returning null
It would be the same semantics of the PyObject* returning functions but
this returns a char* for success.

Currently the annotated function is validated alright but can't validate
the caller just yet, hence the need of a FAKE_RAISE().
2019-02-16 13:05:51 +01:00
Daniele Varrazzo
07b8cfe4a5 cursor_type -- mark state setting to avoid cpychecker false positives 2019-02-16 13:05:51 +01:00
Daniele Varrazzo
1d0ae3eb9b Work around false cpychecker false positive
davidmalcolm/gcc-python-plugin#158
2019-02-16 13:05:51 +01:00
Daniele Varrazzo
22edcd3d0e Added TO_STATE() marker to work around cpychecker refcount issue
See davidmalcolm/gcc-python-plugin#109
2019-02-16 13:05:51 +01:00
Daniele Varrazzo
79ba3a9573 Ignore checking a function triggering a cpychecker bug
See davidmalcolm/gcc-python-plugin#155
2019-02-16 13:05:51 +01:00
Daniele Varrazzo
0b68f344d1 Added attribute to ignore refcount check in a function
Hacking a feature together in a ignore-refcount branch of cpychecker
2019-02-16 13:05:51 +01:00
Daniele Varrazzo
16b35ac77b Merge remote-tracking branch 'origin/errors-module-c' 2019-02-16 13:05:20 +01:00
Daniele Varrazzo
7c148ecee4 Improvements to errors module docs 2019-02-11 01:20:21 +00:00
Daniele Varrazzo
3de4d17519 Fixed use of StandardError in test
In Py3 it's gone.
2019-02-11 00:26:01 +00:00
Daniele Varrazzo
99f680b6fe Allow importing _psycopg even if the 'errors' module is not available 2019-02-10 04:25:06 +00:00
Daniele Varrazzo
30c1befa64 SQLSTATE error classes implemented in C
The module is only used to export them to Python.
2019-02-10 03:45:14 +00:00
Daniele Varrazzo
f1e73507d0 Merge remote-tracking branch 'origin/fast-namedtuple'
Close #838
2019-02-06 02:42:10 +00:00
Daniele Varrazzo
35ec7ad9c1 Use a proper LRU cache for namedtuples
Previous one didn't refresh by last use. Use the stdlib version for py3
and one of our own for py2.

Max size set to 512, which should be fine for everyone (tweaking is
still possible by monkeypatching, as the tests do, but I don't want to
make an interface of it).
2019-02-02 19:29:20 +00:00
Daniele Varrazzo
805527fcd6 Added caching of types generated by NamedTupleCursor
see #838
2019-02-02 14:22:25 +00:00
Daniele Varrazzo
3f20f7934a Merge branch 'drop-display-size' 2019-01-25 17:31:55 +00:00
Daniele Varrazzo
4298718978 Dropped PSYCOPG_DISPLAY_SIZE build parameter
Big and complex _pq_fetch_tuples simplified by moving per-column
calculation to a separate function.
2019-01-25 17:31:39 +00:00
Daniele Varrazzo
00cb2636f5 Merge branch 'module-init-cleanup' 2019-01-23 14:17:07 +00:00
Daniele Varrazzo
65a2a18a1b General cleanup of module init shenanigans
Pass around the module instead of its dict (getting the latter is fast
if needed), mark function raising with negative results, check all errors,
consistent names...
2019-01-23 09:46:18 +00:00
Daniele Varrazzo
66d5c6da07 Incref an object which will be held forever in a static var 2019-01-23 09:46:18 +00:00
Daniele Varrazzo
e9c476266c Decrement the refcount of temporary objects in module init failed
We are going to die anyway, but let's do it in style.
2019-01-22 19:40:42 +00:00
Daniele Varrazzo
63040e5134 Mention new OpenSSL version in wheel package 2019-01-22 12:25:03 +00:00
Daniele Varrazzo
1e6d5fb32d Merge branch 'execute-locks' 2019-01-22 12:24:41 +00:00
Daniele Varrazzo
c34c99aa7f Mention cursor locks cleanup in news file 2019-01-22 11:20:36 +00:00
Daniele Varrazzo
92e615a1a4 Assign the PGresult to the cursor in the execute critical section
Possible cause of the issue reported in #346 (in concurrent
environments).
2019-01-22 11:02:09 +00:00
Daniele Varrazzo
37891500d9 Split pq_execute into sync/async parts 2019-01-22 10:51:27 +00:00
Daniele Varrazzo
eab5d5d93f Date/time modules initialized in separate functions 2019-01-22 09:09:07 +00:00
Daniele Varrazzo
111a71ccee Dropped psyco_errors_fill()
Just use psyco_errors_init() for complete errors initialization
2019-01-21 20:18:53 +00:00
Daniele Varrazzo
1839806c3c Dropped project wide type to define encodings table 2019-01-21 20:18:53 +00:00
Daniele Varrazzo
8f17ccf784 Dropped C API interface
I guess it was unused as it only contained two init functions. The
Capsule should do things better now I guess.
2019-01-21 20:18:53 +00:00
Daniele Varrazzo
7b2e8f0aa4 Respect refcount with PyModule_AddObject()
The function steals a ref. The module is never destroyed so things work
fine but the refcount is wrong.
2019-01-21 20:18:53 +00:00
Daniele Varrazzo
549beeea84 Module constants definition moved in a separate function for clarity 2019-01-21 20:18:53 +00:00
Daniele Varrazzo
4246fdf809 Merge remote-tracking branch 'origin/code-cleanup' 2019-01-21 12:49:05 +00:00
Daniele Varrazzo
e67028f4bc Handle failed allocation in list adaptation 2019-01-21 02:49:38 +00:00
Daniele Varrazzo
7a3bce8fc3 Dropped funny handling of REPLICATION_* constants 2019-01-21 02:49:38 +00:00
Daniele Varrazzo
c77615adc9 _psyco_curs_execute() simplified
Dropped code duplications, more regular increc/decref pattern.

Check the return value of formatting named cursor: would have segfaulted
in case of error.
2019-01-21 02:49:38 +00:00
Daniele Varrazzo
594df09a63 More straightforward semantics for psyco_GetDecimalType
Raise an exception when returning NULL, leave the caller cleaning it.
2019-01-21 02:41:58 +00:00
Daniele Varrazzo
2ad2b27065 Dropped use of converter function to verify copy argument
They weren't really converters, and they confused the static checker
2019-01-21 02:41:58 +00:00