rdbms: remove $opened field from Database for simplicity
authorAaron Schulz <aschulz@wikimedia.org>
Thu, 13 Jun 2019 12:46:03 +0000 (13:46 +0100)
committerTimo Tijhof <krinklemail@gmail.com>
Thu, 27 Jun 2019 17:29:12 +0000 (18:29 +0100)
commit7911da9c6f3a027925139f2831dd674e3bcf35aa
tree65e27d5845cd7962034d56e0e862c596f179e3ed
parent5cbb90cf67db3d59f14e47f67895f68b3dea9df5
rdbms: remove $opened field from Database for simplicity

This avoids having two similar fields that have to stay
in sync. Clean up the related error handling for connections.
If a connection handle is unusable, like when essential SET
queries fail, then destroy it.

Also:
* Avoid use of transactions in DatabasePostgres::determineCoreSchema.
* Make sure all subclasses log on connection failure.
* Add schema sanity checks to mysql/sqlite classes.
* Add IDatabase::QUERY_NO_RETRY flag to simplify reasoning about
  queries that already run on open() to begin with.
* Remove unused return value of Database::open.
* Remove deprecated Database::reportConnectionError method.

Change-Id: I97beba7ead1523085bda8784234d00c69ef1accc
RELEASE-NOTES-1.34
includes/db/DatabaseOracle.php
includes/installer/PostgresInstaller.php
includes/libs/rdbms/database/Database.php
includes/libs/rdbms/database/DatabaseMssql.php
includes/libs/rdbms/database/DatabaseMysqlBase.php
includes/libs/rdbms/database/DatabaseMysqli.php
includes/libs/rdbms/database/DatabasePostgres.php
includes/libs/rdbms/database/DatabaseSqlite.php
includes/libs/rdbms/database/IDatabase.php
tests/phpunit/includes/db/DatabaseTestHelper.php