This changeset defines on the field the (somehow) abstract SQL type a field
should use letting the duty of specifying the real SQL type the database
supports and the conversion to/from the python types to the backend.
issue6351
review33951002
It is too complex and expensive to lazy create the connection pool because all
methods which uses the pool needs to acquire a lock. So it is easier to create
it when the instance is also created. In this case, on closing the database, it
should be unregistered from the instances dictionary.
issue6202
review32991002
The code added from changeset 9b2e0aac2d9c does not work anymore because the
method has moved on the Database object and it requires a connection as
parameter.
So we add cache on the returned value to prevent to consume unnecessary
connection.
issue5818
When we instantiate a Database for each database to test, the threaded
connection pool keep one connection opens which could consume all the available
connections even if the databases are not really used.
issue5368
review16091002
Replace usage of pg_catalog tables by information_schema to take care of user
access.
Ensure to fetch the columns information from the right schema.
Prevent to update default column values if it did not change.
Comment table and column only if the current user is the owner.
issue4924
review24291002
lock is used to enforce a serializable level for all transaction using on the
same table. This is not achieved if transactions are waiting for the lock
instead of abort and retry with a new transaction because they will still have
the initial transaction row values with the repeatable read level.
issue4373
review5901002
Previous implementation used ACCESS EXCLUSIVE MODE (PostgreSQL's default) which
does not allow SELECTs on the locked table. This is too pessimistic so it's been
replaced by a plain EXCLUSIVE MODE which still blocks INSERTs and UPDATEs
but not SELECTs.
review1011002
issue2280
* Use python-sql
* Add convert_domain method on Fields
* Add sql_format and sql_type methods on Fields
* Allow to return a full domain for Function.searcher
* Replace static backend by dynamic get method
* Replace order_field by order_<field name> method
review1001002