]>
git.ipfire.org Git - thirdparty/psycopg.git/log
Daniele Varrazzo [Wed, 28 Oct 2020 21:04:31 +0000 (22:04 +0100)]
Merge branch 'sql-module'
Daniele Varrazzo [Wed, 28 Oct 2020 19:29:51 +0000 (20:29 +0100)]
More idiomatic python3 super()
Daniele Varrazzo [Wed, 28 Oct 2020 15:42:25 +0000 (16:42 +0100)]
Added Dumper.quote()
Return a representation of the object in a format useful for embedding
in SQL. For most objects this is only the representation in quotes and
escaped, for some it's a different value (numbers, bools, NULL).
None can be quoted but not dumped, so it can be passed to an
sql.Literal() without the need of a special case.
Daniele Varrazzo [Wed, 28 Oct 2020 12:00:35 +0000 (13:00 +0100)]
sql.Placeholder can represent binary placeholders
Daniele Varrazzo [Wed, 28 Oct 2020 11:38:59 +0000 (12:38 +0100)]
Move conversion of Composible to query string into PostgresQuery
Daniele Varrazzo [Wed, 28 Oct 2020 03:14:42 +0000 (04:14 +0100)]
Added sql adaptation from None to NULL
This is a special case now, because None is no more a value to adapt, as
it's not passed to PQexecParams like other values are.
Daniele Varrazzo [Wed, 28 Oct 2020 03:01:48 +0000 (04:01 +0100)]
Added psycopg3.sql module
A straight porting from psycopg2, with the addition of an utility
`quote()` function to provide a simple entry point to solve the problem
"adapt this object here".
Daniele Varrazzo [Wed, 28 Oct 2020 03:20:47 +0000 (04:20 +0100)]
Merge branch 'date-adapt'
Daniele Varrazzo [Tue, 27 Oct 2020 19:08:10 +0000 (20:08 +0100)]
Work around the mypy method assignment false positive without `ignore`
`ignore` in unused branches triggers https://github.com/python/mypy/issues/8823
so use `setattr()` to avoid https://github.com/python/mypy/issues/2427.
Daniele Varrazzo [Tue, 27 Oct 2020 18:17:25 +0000 (19:17 +0100)]
Force type checking with Python 3.8
Aligning Travis with my current dev environment to avoid cases where
it's not possible to type-check consistently with different Python
versions.
See https://github.com/python/mypy/issues/9652
Daniele Varrazzo [Tue, 27 Oct 2020 15:31:13 +0000 (16:31 +0100)]
Use local functions for encode/decode in date adaptation
Daniele Varrazzo [Tue, 27 Oct 2020 13:43:37 +0000 (14:43 +0100)]
Fixed timezone parsing on Python 3.6
Daniele Varrazzo [Tue, 27 Oct 2020 03:10:36 +0000 (04:10 +0100)]
Added interval loading
Daniele Varrazzo [Tue, 27 Oct 2020 01:40:29 +0000 (02:40 +0100)]
Added timedelta dump
Daniele Varrazzo [Tue, 27 Oct 2020 00:27:54 +0000 (01:27 +0100)]
Added time with timezone loader
Daniele Varrazzo [Mon, 26 Oct 2020 23:15:03 +0000 (00:15 +0100)]
Raise DataError for dates and times that can't be represented
Daniele Varrazzo [Mon, 26 Oct 2020 22:32:43 +0000 (23:32 +0100)]
Added time load/dump, and tests refactoring
Daniele Varrazzo [Mon, 26 Oct 2020 15:32:14 +0000 (16:32 +0100)]
Added timestamptz loader
Won't deal with formats other than ISO because they return the timezone
name and that requires interpretation by the client, using a tz library
such as pytz or Python 3.9
Daniele Varrazzo [Sun, 18 Oct 2020 19:42:21 +0000 (20:42 +0100)]
More compact date/time tests
Daniele Varrazzo [Sun, 18 Oct 2020 16:06:00 +0000 (17:06 +0100)]
Added timestamp text loading
Daniele Varrazzo [Sun, 6 Sep 2020 11:50:12 +0000 (12:50 +0100)]
Added datetime dump
Daniele Varrazzo [Sun, 23 Aug 2020 20:41:15 +0000 (21:41 +0100)]
Raise a polite exception for dates >= Y10K
Daniele Varrazzo [Sun, 23 Aug 2020 20:13:34 +0000 (21:13 +0100)]
Raise a polite exception for BC dates
Daniele Varrazzo [Sun, 23 Aug 2020 18:20:53 +0000 (19:20 +0100)]
Added date text loader
THe loader can already deal with all the Postgres DateStyle
Daniele Varrazzo [Sun, 23 Aug 2020 17:23:23 +0000 (18:23 +0100)]
Added date text dumper
Daniele Varrazzo [Wed, 28 Oct 2020 03:17:47 +0000 (04:17 +0100)]
Merge branch 'json-adapt'
Daniele Varrazzo [Tue, 27 Oct 2020 18:47:05 +0000 (19:47 +0100)]
Added JSON loaders
Daniele Varrazzo [Tue, 27 Oct 2020 17:35:13 +0000 (18:35 +0100)]
Added tests to verify json dump customisation
Daniele Varrazzo [Tue, 27 Oct 2020 16:17:21 +0000 (17:17 +0100)]
Added json binary dumpers
Daniele Varrazzo [Tue, 27 Oct 2020 16:09:08 +0000 (17:09 +0100)]
Added json text dump
Daniele Varrazzo [Wed, 28 Oct 2020 00:45:45 +0000 (01:45 +0100)]
Added missing methods to psycopg3.pq.Escaping proto
Daniele Varrazzo [Wed, 28 Oct 2020 00:11:39 +0000 (01:11 +0100)]
'psycopg3.transform' module made private
It's too easy to import psycopg3.transform.Transformer when instead
the C module is the one enabled. This will make some isinstance fail,
and e.g. _connecion_from_context would throw a TypeError.
Daniele Varrazzo [Tue, 27 Oct 2020 23:32:07 +0000 (00:32 +0100)]
Added PQescapeString wrapper
`psycopg3.pq.Escaping.escape_string()` can now work without a connection
too, with the limitation explained in the libpq docs.
Also fixed memory leak. Oops.
Daniele Varrazzo [Tue, 27 Oct 2020 17:30:50 +0000 (18:30 +0100)]
Subclasses of dumpable objects are dumpable too
Daniele Varrazzo [Tue, 27 Oct 2020 13:44:19 +0000 (14:44 +0100)]
Fixed test run on non-local server
Daniele Varrazzo [Tue, 27 Oct 2020 13:43:56 +0000 (14:43 +0100)]
Fixed hacking instruction, again
Daniel Fortunov [Thu, 6 Aug 2020 23:09:30 +0000 (00:09 +0100)]
Allow multiple commands in _exec_command()
Daniel Fortunov [Sat, 25 Jul 2020 11:36:47 +0000 (12:36 +0100)]
connection: Move lock acquisition out of _exec_commit_rollback()
Daniele Varrazzo [Mon, 26 Oct 2020 16:40:45 +0000 (17:40 +0100)]
Fixed hacking instructions in readme
Daniele Varrazzo [Sat, 25 Jul 2020 18:18:15 +0000 (19:18 +0100)]
Connection encoding renamed to client_encoding
More precise and consistent with set_client_encoding()
Daniele Varrazzo [Sat, 25 Jul 2020 11:17:51 +0000 (12:17 +0100)]
Connection.encoding made writable again
I'm so flipflopping on this...
Daniele Varrazzo [Sat, 25 Jul 2020 10:52:07 +0000 (11:52 +0100)]
Setting autocommit made thread safe
Using a setter on sync connections, a function on async connections.
Should review why this approach was abandoned for the client encoding,
because it seems working alright.
Daniel Fortunov [Sun, 19 Jul 2020 23:22:37 +0000 (00:22 +0100)]
test_ssl_in_use(): Adapt for Windows
Daniele Varrazzo [Fri, 16 Oct 2020 14:37:05 +0000 (15:37 +0100)]
Trailing comma dropped from where black would reformat
The changes are detected by black 20.8b1
Daniele Varrazzo [Fri, 16 Oct 2020 14:05:32 +0000 (15:05 +0100)]
Fixed dev mode readme instructions
Daniele Varrazzo [Sun, 23 Aug 2020 18:24:08 +0000 (19:24 +0100)]
Merge branch 'simplify-adapt'
Daniele Varrazzo [Fri, 7 Aug 2020 03:14:33 +0000 (04:14 +0100)]
Transformer._lookup_dumper/loader dropped altogether
Daniele Varrazzo [Fri, 7 Aug 2020 03:00:48 +0000 (04:00 +0100)]
Transformer.lookup_loader/dumper dropped from interface
Daniele Varrazzo [Fri, 7 Aug 2020 02:58:52 +0000 (03:58 +0100)]
Dropped Transformer.get_load_function
Daniele Varrazzo [Fri, 7 Aug 2020 02:49:20 +0000 (03:49 +0100)]
Dropped Transformer.load()
Daniele Varrazzo [Fri, 7 Aug 2020 02:43:21 +0000 (03:43 +0100)]
PyxLoader renamed to CLoader
Daniele Varrazzo [Fri, 7 Aug 2020 02:38:26 +0000 (03:38 +0100)]
All C loaders converted to the PyxLoader class
Daniele Varrazzo [Fri, 7 Aug 2020 01:52:14 +0000 (02:52 +0100)]
Use a C fast path to use the Loader.cload where available
Daniele Varrazzo [Fri, 7 Aug 2020 01:20:57 +0000 (02:20 +0100)]
Dropped unused Transform._oids
Daniele Varrazzo [Fri, 7 Aug 2020 00:52:23 +0000 (01:52 +0100)]
Added guard to avoid importing psycog3_c without psycopg3
Doing so result in mysterious import error.
Daniele Varrazzo [Fri, 7 Aug 2020 00:51:29 +0000 (01:51 +0100)]
Allow overriding of Py loaders by C loaders
Only registering our toy bytea loader for the moment, other will follow
a similar pattern.
Daniele Varrazzo [Thu, 6 Aug 2020 21:22:52 +0000 (22:22 +0100)]
Creating a Cython Loader with the same interface as Python
Added C implementation of the BinaryByteaLoader to test the interface
Daniele Varrazzo [Thu, 6 Aug 2020 18:52:44 +0000 (19:52 +0100)]
Dropped support for loader functions
Daniele Varrazzo [Thu, 6 Aug 2020 18:41:34 +0000 (19:41 +0100)]
All loader functions converted to classes
Daniele Varrazzo [Thu, 6 Aug 2020 02:51:12 +0000 (03:51 +0100)]
Dropped Transform.dump_sequence(), Transform.types_sequence()
Daniele Varrazzo [Thu, 6 Aug 2020 02:29:08 +0000 (03:29 +0100)]
Dropped Transformer.dump()
Daniele Varrazzo [Thu, 6 Aug 2020 02:18:53 +0000 (03:18 +0100)]
Dropped MaybeOid type and optional second return value from Dumper.dump()
Daniele Varrazzo [Thu, 6 Aug 2020 01:15:52 +0000 (02:15 +0100)]
Dropped oids from Transform.dump_sequence() return value
Daniele Varrazzo [Thu, 6 Aug 2020 01:09:35 +0000 (02:09 +0100)]
Added Transformer.types_sequence
Not entirely sure yet if it will be needed, but this allows to free
dump_sequence() from returning the oids as second argument.
Dropped Transformer.get_dump_function() too.
Daniele Varrazzo [Thu, 6 Aug 2020 00:08:59 +0000 (01:08 +0100)]
Added oid property on Dumper object
Daniele Varrazzo [Wed, 5 Aug 2020 22:25:56 +0000 (23:25 +0100)]
Dropped use of plain functions to define dumpers
Daniele Varrazzo [Sun, 23 Aug 2020 18:22:29 +0000 (19:22 +0100)]
Flake8 configured to deal with the psycopg3 dir
Daniele Varrazzo [Sun, 23 Aug 2020 15:41:19 +0000 (16:41 +0100)]
Test and dev dependencies expressed as extras
Daniele Varrazzo [Sun, 23 Aug 2020 14:50:57 +0000 (15:50 +0100)]
Test fixed to not assume PID < 65535
Daniel Fortunov [Sun, 26 Jul 2020 01:37:02 +0000 (02:37 +0100)]
Tests: Create svcconn with autocommit on
So that you don't deadlock the test run if you forget to call commit()
e.g. If you use svcconn to create a test table for use by tests, and
forget to call svcconn.commit(), the first test to (try to) touch the
table will block forever waiting on the svcconn transaction to commit.
Daniele Varrazzo [Sat, 8 Aug 2020 19:55:39 +0000 (20:55 +0100)]
More complete string escaping test
Daniele Varrazzo [Sat, 8 Aug 2020 19:42:00 +0000 (20:42 +0100)]
Added Escaping.escape_string
Daniele Varrazzo [Sat, 8 Aug 2020 18:31:43 +0000 (19:31 +0100)]
Added Escaping.escape_identifier
Daniele Varrazzo [Sat, 8 Aug 2020 18:07:52 +0000 (19:07 +0100)]
Added Escaping.escape_literal
Daniele Varrazzo [Sat, 8 Aug 2020 18:05:32 +0000 (19:05 +0100)]
Ignore html files generated by Cython
Daniel Fortunov [Thu, 6 Aug 2020 23:48:25 +0000 (00:48 +0100)]
Don't be so eager to execute 'begin'
Only execute an automatic 'begin' statement if the TransactionStatus is
IDLE, so that a failure to execute 'begin' doesn't overshadow a failure
to execute a user query.
Daniele Varrazzo [Wed, 5 Aug 2020 01:30:47 +0000 (02:30 +0100)]
Update pytest to v6
Daniele Varrazzo [Sat, 25 Jul 2020 23:54:32 +0000 (00:54 +0100)]
Create two different python distributions in the project
The psycopg3 package is pure Python and doesn't depend on Cython, the
psycopg3_c package is entirely optional and depends on the former.
Tox had to be split, because it gets confused by the presence of the
top-level pyproject.toml, which is there only to configure black.
Daniele Varrazzo [Fri, 3 Jul 2020 09:12:37 +0000 (21:12 +1200)]
Dropped unused function
Daniele Varrazzo [Tue, 30 Jun 2020 18:41:50 +0000 (06:41 +1200)]
Added row-by-row copy in
Daniele Varrazzo [Tue, 30 Jun 2020 17:58:08 +0000 (05:58 +1200)]
Handle a bad command passed to copy
Daniele Varrazzo [Wed, 24 Jun 2020 14:17:20 +0000 (02:17 +1200)]
Some mypy cleanup
Daniele Varrazzo [Wed, 24 Jun 2020 11:12:17 +0000 (23:12 +1200)]
Use a standard mypy config file
It integrates better with the editor (trying ALE on Vim).
Newer mypy version allows to hide the file.
Daniele Varrazzo [Wed, 24 Jun 2020 08:44:32 +0000 (20:44 +1200)]
Dropped attempt of read support
It doesn't add anything to selecting, except that it cannot work as type
info is not available on copy. Furthermore it was based on the broken
assumption that copy sends generic buffers, whereas it sends entire
rows, so it was uselessly complicated.
Daniele Varrazzo [Wed, 24 Jun 2020 08:35:58 +0000 (20:35 +1200)]
Allow passing a str buffer to copy
Daniele Varrazzo [Tue, 23 Jun 2020 11:17:10 +0000 (23:17 +1200)]
Raise error messages in the connection encoding
Daniele Varrazzo [Tue, 23 Jun 2020 10:31:40 +0000 (22:31 +1200)]
Added reading from copy
Daniele Varrazzo [Tue, 23 Jun 2020 08:28:27 +0000 (20:28 +1200)]
Added wrapper for libpq function PQgetCopyData
Daniele Varrazzo [Mon, 22 Jun 2020 09:41:58 +0000 (21:41 +1200)]
Added context manager interface to copy objects
Daniele Varrazzo [Mon, 22 Jun 2020 07:32:34 +0000 (19:32 +1200)]
Added basic copy to server in blocks
Daniele Varrazzo [Sun, 21 Jun 2020 10:15:15 +0000 (22:15 +1200)]
Implemented rows and fields splitting on text copy
Daniele Varrazzo [Sun, 21 Jun 2020 07:01:32 +0000 (19:01 +1200)]
Added pq.PGresult.set_attributes() method
Daniele Varrazzo [Sun, 21 Jun 2020 05:51:11 +0000 (17:51 +1200)]
Sketching an interface for a copy object
Daniele Varrazzo [Sun, 21 Jun 2020 04:38:50 +0000 (16:38 +1200)]
binary attribute replaced by format
Daniele Varrazzo [Sat, 30 May 2020 21:14:50 +0000 (09:14 +1200)]
Added mapping from sqlstate to error classes
Daniele Varrazzo [Sat, 30 May 2020 18:00:27 +0000 (06:00 +1200)]
Added query canceling
Daniele Varrazzo [Mon, 25 May 2020 06:13:44 +0000 (18:13 +1200)]
Added notification handling in connections
Added both a callback systen and an explicit generator. I'll share the
design on the ML and ask for comments.
Daniele Varrazzo [Sun, 24 May 2020 05:43:27 +0000 (17:43 +1200)]
Added PQnotifies libpq wrapper
Daniele Varrazzo [Sat, 23 May 2020 05:18:58 +0000 (17:18 +1200)]
Added further tests about dsn parsing
Daniele Varrazzo [Sat, 23 May 2020 04:50:41 +0000 (16:50 +1200)]
Close the connection on GC only if created in the same process
Fix the same issue reported in psycopg/psycopg2#829.