]> git.ipfire.org Git - thirdparty/psycopg.git/log
thirdparty/psycopg.git
4 years agoImplement connection/cursor procedures as generators
Daniele Varrazzo [Tue, 22 Dec 2020 17:09:34 +0000 (18:09 +0100)] 
Implement connection/cursor procedures as generators

Generators are common to both sync and async code so there is much less
code duplication, which will be useful in the light of doing more
complex things such as prepared transactions.

As a side effect of the refactoring, operations on closed connections
are raised as OperationalError rather than InterfaceError because
connection closure may depend on external factors.

Dropped fd from PQGen stream: the having the fd in the middle of the
`Ready` values made more difficult to chain more than one operation in
the same generator. The fd is not passed as extra parameter.

4 years agoRegister automatically the array loader on all the builtins
Daniele Varrazzo [Wed, 23 Dec 2020 21:02:19 +0000 (22:02 +0100)] 
Register automatically the array loader on all the builtins

Also added reg* types to the known builtins. This way regtype[] is
loaded as a list of strings.

4 years agoBetter use of Cython public properties
Daniele Varrazzo [Sun, 20 Dec 2020 18:23:20 +0000 (19:23 +0100)] 
Better use of Cython public properties

4 years agoEnable cython faster call convention
Daniele Varrazzo [Mon, 21 Dec 2020 01:39:23 +0000 (02:39 +0100)] 
Enable cython faster call convention

4 years agoRelease the gil around functions known to be slow
Daniele Varrazzo [Mon, 21 Dec 2020 02:58:24 +0000 (03:58 +0100)] 
Release the gil around functions known to be slow

Profiling some time ago showed that these functions take relevant time.
Other paths will be reviewed.

https://www.varrazzo.com/blog/2020/05/19/a-trip-into-optimisation/

4 years agoAdded website to sponsors file
Daniele Varrazzo [Fri, 18 Dec 2020 20:08:05 +0000 (21:08 +0100)] 
Added website to sponsors file

4 years agoAdded @postgrespro sponsor!
Daniele Varrazzo [Fri, 18 Dec 2020 13:55:46 +0000 (14:55 +0100)] 
Added @postgrespro sponsor!

Thank you Oleg!

4 years agoAdded _oid C attribute to CDumper
Daniele Varrazzo [Thu, 17 Dec 2020 16:29:48 +0000 (17:29 +0100)] 
Added _oid C attribute to CDumper

4 years agoReduce re-allocations in objects quoting
Daniele Varrazzo [Thu, 17 Dec 2020 12:55:56 +0000 (13:55 +0100)] 
Reduce re-allocations in objects quoting

4 years agoFixed broken previous commit
Daniele Varrazzo [Thu, 17 Dec 2020 11:50:48 +0000 (12:50 +0100)] 
Fixed broken previous commit

4 years agoescape_string, escape_identifier use buffers too
Daniele Varrazzo [Thu, 17 Dec 2020 04:55:56 +0000 (05:55 +0100)] 
escape_string, escape_identifier use buffers too

4 years agoMake wider use of Composite.as_bytes
Daniele Varrazzo [Thu, 17 Dec 2020 04:13:25 +0000 (05:13 +0100)] 
Make wider use of Composite.as_bytes

4 years agoAdded buffer object to wrap libpq memory
Daniele Varrazzo [Thu, 17 Dec 2020 04:02:35 +0000 (05:02 +0100)] 
Added buffer object to wrap libpq memory

Several code paths extended to deal with objects implementing the buffer
protocol instead of just bytes: this allows to perform less memory copy.

Added sql.Composable.as_bytes method to use in preference of as_string
(you may do without decoding altogether).

4 years agoAdded bytearray and memoryview dumpers
Daniele Varrazzo [Thu, 17 Dec 2020 01:29:09 +0000 (02:29 +0100)] 
Added bytearray and memoryview dumpers

Also manage these objects when they rich the libp param passing.

4 years agoDropped use of a couple of constants in json
Daniele Varrazzo [Wed, 16 Dec 2020 21:06:17 +0000 (22:06 +0100)] 
Dropped use of a couple of constants in json

4 years agoAdded docs about string/binary adaptation
Daniele Varrazzo [Wed, 16 Dec 2020 21:05:02 +0000 (22:05 +0100)] 
Added docs about string/binary adaptation

4 years agoSponsorship by @commandprompt - Thank you very much @jdatcmd
Daniele Varrazzo [Thu, 10 Dec 2020 12:41:59 +0000 (13:41 +0100)] 
Sponsorship by @commandprompt - Thank you very much @jdatcmd

4 years agoAdded @mailupinc sponsor. Thank you!
Daniele Varrazzo [Thu, 10 Dec 2020 12:19:22 +0000 (13:19 +0100)] 
Added @mailupinc sponsor. Thank you!

4 years agoSponsorship by @phenopolis from @pontikos
Daniele Varrazzo [Thu, 10 Dec 2020 12:08:19 +0000 (13:08 +0100)] 
Sponsorship by @phenopolis from @pontikos

Thank you very much, Niko!

4 years agoUpdated sponsorship by @gporcari @genropy
Daniele Varrazzo [Thu, 10 Dec 2020 12:01:17 +0000 (13:01 +0100)] 
Updated sponsorship by @gporcari @genropy

Grazie tantissime, Giovanni!

4 years agoBackers file converted to yaml
Daniele Varrazzo [Thu, 10 Dec 2020 11:04:46 +0000 (12:04 +0100)] 
Backers file converted to yaml

It will be displayed at https://www.psycopg.org/sponsors/

4 years agoAdded several range tests and fixed a pasto error
Daniele Varrazzo [Thu, 10 Dec 2020 02:51:36 +0000 (03:51 +0100)] 
Added several range tests and fixed a pasto error

4 years agoMerge branch 'range-adaptation'
Daniele Varrazzo [Thu, 10 Dec 2020 01:43:55 +0000 (02:43 +0100)] 
Merge branch 'range-adaptation'

4 years agoAdded range type fetching and registration
Daniele Varrazzo [Sun, 6 Dec 2020 02:50:50 +0000 (02:50 +0000)] 
Added range type fetching and registration

Fixed quoting of [ ] chars for range types: unlike for composite they
need quoting.

4 years agoFetch/register composite made methods of a CompositeInfo class.
Daniele Varrazzo [Sun, 6 Dec 2020 01:35:16 +0000 (01:35 +0000)] 
Fetch/register composite made methods of a CompositeInfo class.

4 years agoAdded builtin ranges adaptation
Daniele Varrazzo [Sat, 5 Dec 2020 18:41:26 +0000 (18:41 +0000)] 
Added builtin ranges adaptation

4 years agoAdded `conection.execute()` method
Daniele Varrazzo [Tue, 8 Dec 2020 08:55:41 +0000 (09:55 +0100)] 
Added `conection.execute()` method

4 years agoComposite record parsing made independent from the "()" terminators
Daniele Varrazzo [Sat, 5 Dec 2020 15:51:39 +0000 (15:51 +0000)] 
Composite record parsing made independent from the "()" terminators

This should make this code useful to parse range representations too,
which may use a mix of () and [] terminators.

4 years ago@Intevation is sponsoring psycopg3, thank you :)
Daniele Varrazzo [Sat, 5 Dec 2020 14:38:39 +0000 (14:38 +0000)] 
@Intevation is sponsoring psycopg3, thank you :)

4 years agoFixed escaping of a few chars in composite dumping
Daniele Varrazzo [Sat, 5 Dec 2020 04:05:34 +0000 (04:05 +0000)] 
Fixed escaping of a few chars in composite dumping

4 years agoFixed composite info fetch with homonymous types
Daniele Varrazzo [Sat, 5 Dec 2020 02:48:40 +0000 (02:48 +0000)] 
Fixed composite info fetch with homonymous types

Use a fully qualified name, optionally expressed as sql.Identifier, to
find the type in the right schema.

4 years agoInstallation and readme improvements
Daniele Varrazzo [Sat, 5 Dec 2020 01:58:19 +0000 (01:58 +0000)] 
Installation and readme improvements

4 years agoDropped erroneous statement that psycopg3 quotes values
Daniele Varrazzo [Sat, 5 Dec 2020 00:52:05 +0000 (00:52 +0000)] 
Dropped erroneous statement that psycopg3 quotes values

4 years agoAdded backer @bernhardreiter, thank you!
Daniele Varrazzo [Sat, 5 Dec 2020 00:28:18 +0000 (00:28 +0000)] 
Added backer @bernhardreiter, thank you!

4 years agoSmall tweaks to add_backer script
Daniele Varrazzo [Fri, 4 Dec 2020 04:48:02 +0000 (04:48 +0000)] 
Small tweaks to add_backer script

4 years agoBackers file updated
Daniele Varrazzo [Fri, 4 Dec 2020 04:33:28 +0000 (04:33 +0000)] 
Backers file updated

Added scripts to help maintaining it.

4 years agoFixed COPY statement suggesting it accepts parameters
Daniele Varrazzo [Wed, 2 Dec 2020 19:03:15 +0000 (19:03 +0000)] 
Fixed COPY statement suggesting it accepts parameters

It was, it just didn't work... :P

4 years agoFixed testing for diag properties on Pg < 9.6
Daniele Varrazzo [Wed, 2 Dec 2020 17:26:26 +0000 (17:26 +0000)] 
Fixed testing for diag properties on Pg < 9.6

4 years agoSeparate generators where the fd can change from the ones where not
Daniele Varrazzo [Wed, 2 Dec 2020 17:23:14 +0000 (17:23 +0000)] 
Separate generators where the fd can change from the ones where not

This should make the query operation marginally faster.

4 years agoMake sure Notify is hashable
Daniele Varrazzo [Wed, 2 Dec 2020 04:01:48 +0000 (04:01 +0000)] 
Make sure Notify is hashable

4 years agoAdded a few tests from the psycopg2 test suite
Daniele Varrazzo [Wed, 2 Dec 2020 03:40:22 +0000 (03:40 +0000)] 
Added a few tests from the psycopg2 test suite

4 years agoRaise the correct error (diag and all) on commit error
Daniele Varrazzo [Wed, 2 Dec 2020 03:35:42 +0000 (03:35 +0000)] 
Raise the correct error (diag and all) on commit error

Also added other error-related tests from psycopg2 test suite.

4 years agoFixed sdist package for psycopg3-c
Daniele Varrazzo [Tue, 1 Dec 2020 14:29:00 +0000 (14:29 +0000)] 
Fixed sdist package for psycopg3-c

`types` made into a package so that the setup.py is able to find the
Cython sources there.

4 years agoFixed links in error docs, uniform DB-API spelling
Daniele Varrazzo [Tue, 1 Dec 2020 03:29:38 +0000 (03:29 +0000)] 
Fixed links in error docs, uniform DB-API spelling

4 years agoDropped executable flag from test
Daniele Varrazzo [Tue, 1 Dec 2020 03:19:02 +0000 (03:19 +0000)] 
Dropped executable flag from test

4 years agoAdded missing file headers
Daniele Varrazzo [Tue, 1 Dec 2020 03:13:15 +0000 (03:13 +0000)] 
Added missing file headers

4 years agoAdded test to check rowcount works after execmany returning tuples
Daniele Varrazzo [Tue, 1 Dec 2020 03:04:56 +0000 (03:04 +0000)] 
Added test to check rowcount works after execmany returning tuples

4 years agoCursor.description can be pickled
Daniele Varrazzo [Tue, 1 Dec 2020 02:54:56 +0000 (02:54 +0000)] 
Cursor.description can be pickled

4 years agoInclude typing information in packages
Daniele Varrazzo [Tue, 1 Dec 2020 01:53:45 +0000 (01:53 +0000)] 
Include typing information in packages

4 years agoDumper and Loader made abstract classes
Daniele Varrazzo [Tue, 1 Dec 2020 00:55:02 +0000 (00:55 +0000)] 
Dumper and Loader made abstract classes

4 years agoDropped register_binary() method from Loader and Dumper
Daniele Varrazzo [Tue, 1 Dec 2020 00:20:51 +0000 (00:20 +0000)] 
Dropped register_binary() method from Loader and Dumper

Use the format parameter on register(): documented and made public.

4 years agoMain interest point in docs landing page
Daniele Varrazzo [Thu, 26 Nov 2020 19:49:33 +0000 (19:49 +0000)] 
Main interest point in docs landing page

4 years agoFixed doc ref
Daniele Varrazzo [Thu, 26 Nov 2020 12:44:54 +0000 (12:44 +0000)] 
Fixed doc ref

4 years agoFix #16 Use svg logo in documentation
Paolo Melchiorre [Thu, 26 Nov 2020 08:48:18 +0000 (09:48 +0100)] 
Fix #16 Use svg logo in documentation

4 years agoWindows compatibility for tests
Daniel Fortunov [Thu, 26 Nov 2020 08:33:53 +0000 (08:33 +0000)] 
Windows compatibility for tests

* Skip test_connect_timeout() on Windows for the time being as
  Connection.connect() hangs for some reason. This skip can probably
  go away once connection timeouts are implemented.
* test_multiprocess_close(): Turn LocalPath instance back into a str
  before putting it back into env["PYTHONPATH"] to avoid failure in:
  _winapi.CreateProcess(): TypeError: environment can only contain str

4 years agoMaybe unbreak website generation on travis
Daniele Varrazzo [Thu, 26 Nov 2020 12:14:33 +0000 (12:14 +0000)] 
Maybe unbreak website generation on travis

4 years agoAdded a main level to the docs
Daniele Varrazzo [Thu, 26 Nov 2020 01:14:33 +0000 (01:14 +0000)] 
Added a main level to the docs

Docs split in several page with better visibility of titles.

Also adding a sort of narrative with several cross links between topics.

4 years agoMore contrasty pygment style
Daniele Varrazzo [Thu, 26 Nov 2020 02:52:24 +0000 (02:52 +0000)] 
More contrasty pygment style

4 years agoUppercase admonitions in docs
Daniele Varrazzo [Wed, 25 Nov 2020 23:52:52 +0000 (23:52 +0000)] 
Uppercase admonitions in docs

With the furo theme it's pretty clear that they are at the start of a
sentence.

4 years agoMerge branch 'docs-furo'
Daniele Varrazzo [Wed, 25 Nov 2020 23:58:50 +0000 (23:58 +0000)] 
Merge branch 'docs-furo'

4 years agoTake docs announcement out of repos 14/head
Daniele Varrazzo [Wed, 25 Nov 2020 23:30:36 +0000 (23:30 +0000)] 
Take docs announcement out of repos

Moved to the website.

4 years agoFuro style tweaked
Daniele Varrazzo [Wed, 25 Nov 2020 20:24:29 +0000 (20:24 +0000)] 
Furo style tweaked

- non smaller font in admonitions
- rubric styled.

4 years agoFix #13 Use a responsive docs theme
Paolo Melchiorre [Wed, 25 Nov 2020 16:00:41 +0000 (17:00 +0100)] 
Fix #13 Use a responsive docs theme

4 years agoAdapt find_library() call to find libpq.dll on Windows
Daniel Fortunov [Sun, 19 Jul 2020 23:19:21 +0000 (00:19 +0100)] 
Adapt find_library() call to find libpq.dll on Windows

4 years agoRaise TypeError attempting to use a Copy context more than once
Daniele Varrazzo [Tue, 24 Nov 2020 12:46:41 +0000 (12:46 +0000)] 
Raise TypeError attempting to use a Copy context more than once

See #10

4 years agoMake sure transaction blocks cannot be used more than once
Daniele Varrazzo [Tue, 24 Nov 2020 12:26:18 +0000 (12:26 +0000)] 
Make sure transaction blocks cannot be used more than once

See #12

4 years agoFix docs generation to avoid getting confused by __module__ rewritten
Daniele Varrazzo [Tue, 24 Nov 2020 03:13:35 +0000 (03:13 +0000)] 
Fix docs generation to avoid getting confused by __module__ rewritten

Autodoc features which need the original module get confused, so e.g. pq
enum members or Notify attribute docs are lost if not fixed.

4 years agoOther classes have their __module__ specified
Daniele Varrazzo [Tue, 24 Nov 2020 02:07:00 +0000 (02:07 +0000)] 
Other classes have their __module__ specified

These required jumping through hoop to have mypy and documentation
agreeing, now it's more natural.

4 years agopq enums __module__ changed to psycopg3.pq
Daniele Varrazzo [Tue, 24 Nov 2020 01:41:36 +0000 (01:41 +0000)] 
pq enums __module__ changed to psycopg3.pq

I have found cases of its writability in the stdlib, so I'm satisfied it
can be done.

4 years agoImport pq enums in modules where they are used
Daniele Varrazzo [Tue, 24 Nov 2020 01:18:57 +0000 (01:18 +0000)] 
Import pq enums in modules where they are used

4 years agoCall the params params, not vars
Daniele Varrazzo [Tue, 24 Nov 2020 00:29:13 +0000 (00:29 +0000)] 
Call the params params, not vars

4 years agoQueries modume moved out of utils package
Daniele Varrazzo [Tue, 24 Nov 2020 00:11:44 +0000 (00:11 +0000)] 
Queries modume moved out of utils package

4 years agoAdded some docs about adaptation
Daniele Varrazzo [Mon, 23 Nov 2020 23:53:25 +0000 (23:53 +0000)] 
Added some docs about adaptation

4 years agoFixed broken tests after fixing async connection discrepancies
Daniele Varrazzo [Mon, 23 Nov 2020 15:27:37 +0000 (15:27 +0000)] 
Fixed broken tests after fixing async connection discrepancies

4 years agoFixed tiny diffreences in behaviour between sync and async code
Daniele Varrazzo [Mon, 23 Nov 2020 15:11:44 +0000 (15:11 +0000)] 
Fixed tiny diffreences in behaviour between sync and async code

4 years agoRemove obsolete references to Transaction.Rollback
Daniel Fortunov [Mon, 23 Nov 2020 08:08:46 +0000 (08:08 +0000)] 
Remove obsolete references to Transaction.Rollback

Rollback exception is no longer available on the Transaction object.

4 years agoAdded Cursor.query and params.
Daniele Varrazzo [Mon, 23 Nov 2020 08:44:46 +0000 (08:44 +0000)] 
Added Cursor.query and params.

4 years agoDropped params from Cursor.copy()
Daniele Varrazzo [Mon, 23 Nov 2020 08:43:56 +0000 (08:43 +0000)] 
Dropped params from Cursor.copy()

Never tested... and they don't work.

4 years agoAdded some documentation on the adaptation system
Daniele Varrazzo [Mon, 23 Nov 2020 07:14:17 +0000 (07:14 +0000)] 
Added some documentation on the adaptation system

4 years agoAdded initial docs for psycopg3.pq module
Daniele Varrazzo [Mon, 23 Nov 2020 05:28:43 +0000 (05:28 +0000)] 
Added initial docs for psycopg3.pq module

4 years agoAdded installation instructions including the binary package
Daniele Varrazzo [Mon, 23 Nov 2020 05:23:48 +0000 (05:23 +0000)] 
Added installation instructions including the binary package

4 years agoUse the build script to build source packages too
Daniele Varrazzo [Sun, 22 Nov 2020 23:39:09 +0000 (23:39 +0000)] 
Use the build script to build source packages too

4 years agoCreate the psycopg3-binary package
Daniele Varrazzo [Sun, 22 Nov 2020 21:51:20 +0000 (21:51 +0000)] 
Create the psycopg3-binary package

4 years agoAdded in-progress script to build wheel packages
Daniele Varrazzo [Sun, 22 Nov 2020 21:37:53 +0000 (21:37 +0000)] 
Added in-progress script to build wheel packages

4 years agoPure Python implementation called 'python', not 'ctypes'
Daniele Varrazzo [Sun, 22 Nov 2020 18:46:55 +0000 (18:46 +0000)] 
Pure Python implementation called 'python', not 'ctypes'

4 years agoUse "pip install psycogp3[c]" to install the C extension
Daniele Varrazzo [Sun, 22 Nov 2020 18:36:41 +0000 (18:36 +0000)] 
Use "pip install psycogp3[c]" to install the C extension

4 years agoMerge branch 'c-dumpers'
Daniele Varrazzo [Sun, 22 Nov 2020 17:44:20 +0000 (17:44 +0000)] 
Merge branch 'c-dumpers'

4 years agoCursor.callproc dropped
Daniele Varrazzo [Sun, 22 Nov 2020 17:28:36 +0000 (17:28 +0000)] 
Cursor.callproc dropped

The method has a simplistic semantic which doesn't account for
PostgreSQL positional parameters, procedures, set-returning functions.
Users can use a normal `Cursor.execute()` with SELECT
function_name(...)` or CALL procedure_name(...)` instead.

4 years agoApi docs and typing system made consistent
Daniele Varrazzo [Sun, 22 Nov 2020 16:16:12 +0000 (16:16 +0000)] 
Api docs and typing system made consistent

Top-level objects are annotated as coming from the main package: this
way the documentation can link them consistently to where they are
documented (e.g. `Connection` is `psycopg3.Connection`, not
`psycopg3.connection.Connection`) and MyPy is happy too.

4 years agoCursor.connection made a read-only property
Daniele Varrazzo [Sun, 22 Nov 2020 16:15:02 +0000 (16:15 +0000)] 
Cursor.connection made a read-only property

4 years agoDropped "-> None" from function returning no result in docs
Daniele Varrazzo [Sun, 22 Nov 2020 16:13:31 +0000 (16:13 +0000)] 
Dropped "-> None" from function returning no result in docs

4 years agoAdded errors module documentation
Daniele Varrazzo [Sun, 22 Nov 2020 04:32:01 +0000 (04:32 +0000)] 
Added errors module documentation

4 years agoAdded documentation for the `sql` module
Daniele Varrazzo [Sun, 22 Nov 2020 02:33:36 +0000 (02:33 +0000)] 
Added documentation for the `sql` module

4 years agoAdded C string dumpers
Daniele Varrazzo [Sat, 21 Nov 2020 23:09:16 +0000 (23:09 +0000)] 
Added C string dumpers

4 years agoC Dumpers and Loaders attributes readable from Python
Daniele Varrazzo [Sat, 21 Nov 2020 23:08:36 +0000 (23:08 +0000)] 
C Dumpers and Loaders attributes readable from Python

4 years agoUse the right class instantiating a dumper on a subclass
Daniele Varrazzo [Sat, 21 Nov 2020 23:07:31 +0000 (23:07 +0000)] 
Use the right class instantiating a dumper on a subclass

4 years agoAdded oid constants in cython extension
Daniele Varrazzo [Sat, 21 Nov 2020 21:38:21 +0000 (21:38 +0000)] 
Added oid constants in cython extension

4 years agoAdded C bool dumpers (text, binary)
Daniele Varrazzo [Sat, 21 Nov 2020 20:33:51 +0000 (20:33 +0000)] 
Added C bool dumpers (text, binary)

4 years agoAdded C implementation of int dumpers (text, binary)
Daniele Varrazzo [Sat, 21 Nov 2020 20:17:26 +0000 (20:17 +0000)] 
Added C implementation of int dumpers (text, binary)

4 years agos/loaders/adapters/ where there will be dumpers too
Daniele Varrazzo [Sat, 21 Nov 2020 17:23:27 +0000 (17:23 +0000)] 
s/loaders/adapters/ where there will be dumpers too