When we updated PyPy on Travis to 5.8.0, it started producing errors
"Use multi-True when executing multiple statements", even when we are
demonstrably only executing one statement. E.g.,
https://travis-ci.org/zodb/relstorage/jobs/335720512#L923
If this doesn't fix it, then I plan to take PyPy+MySQL Connector out
of the test matrix.
Fixes#169.
We need this version for IMultiCommitStorage and the registerDB fix in
ConflictResolvingStorage. Since these versions run on Python 2.7.8,
there's no motivation for trying to go back farther.
* First basic version of appveyor.yml for testing. Still need to configure databases. Lets just see if we build.
* stdint.h is not available on MSVC before 2010, but we're not using it anyway. myssqlclient won't compile on windows
* Try a define for broken c99 support in MSVC.
* Broader macro.
* Use old form of 0 initializing struct.
* More fixes for broken c99 support of MSVC.
* Attempt to setup the database.
* need /c
* give up on running the DB tests.
* produce wheels
* produce wheels
* one more try for mysql tests.
* Run the db script as part of the test, it seems services aren't started during install phase.
* MySQL tests are running, try adding postgres.
* badges
* right bin directory for postgres
* Skip one blob test on windows/py3
* Adapt code from NextThought to implement umysqldb support. Fixes#79.
* exclude should be a sub-key of matrix.
* Force the right driver for the umysqldb tests.
* formatting and debuging.
* Use bytes, not bytearry, to avoid a crash in umysql.
* Tweak driver selection.
* test fixes for umysqldb.
The major difference from psycopg2/cffi is that it doesn't have native
lobject support. This is easily worked around, but this draft is not
complete because it doesn't support chunks. Some refactoring will be
required to elegantly handle this.
Two minor differences:
- It doesn't support multiple statements in a single `cursor.execute()`
call. Apparently it turns all statements into prepared statements,
because the error is from the server. Easily worked around and
unlikely to be a perfomance difference.
- It handles transaction isolation levels like most other drivers, in
SQL. This could be handled more elegantly too.
One thing: The server spits out lots of "WARNING: not in a transaction".
If I enable statement logging, I see every `commit` immediately followed
by a `rollback`, which generates the warning. I'm not sure if that's
just us, or something the driver is doing differently (e.g, maybe
psycopg2/cffi always follows `commit` with `begin`? and then when we try
to `rollback` we're already in a transaction?). Annoying but harmless.
Still, would like to figure it out though.
Testing this pure-python driver on Python 3 also revealed a lot of
connection leaks, many of which I've fixed, but there are probably more.
This should be a win for PyPy. See also zopefoundation/ZODB#78.
The testing matrix is expanded to test the pure-python drivers on
CPython too and to test pg8000. (Travis will be the first time I run
psycopg2 tests; hope I didn't break anything!)
Fixes#85.
Adds .travis.yml and scripts for creating the DBs for those tests.
Travis is setup to send coverage reports to coveralls.io (once the tests
pass).
Also adds a tox.ini and .coveragerc for checking coverage locally.
Run the tests with '-m relstorage.tests.alltests', which now behaves
like the existing '-m relstorage.tests.testmysql' et al.
Fixes an issue running blob tests with '-m'.