Tasks::checkBinaryOutput()
Check Binary Output.
Unserializing does not work on Postgresql 9 when bytea_output is 'hex'.
File
- core/lib/Drupal/Core/Database/Driver/pgsql/Install/Tasks.php, line 136
Class
- Tasks
- Specifies installation tasks for PostgreSQL databases.
Namespace
Drupal\Core\Database\Driver\pgsql\Install
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | function checkBinaryOutput() { // PostgreSQL < 9 doesn't support bytea_output, so verify we are running // at least PostgreSQL 9. $database_connection = Database::getConnection(); if (version_compare( $database_connection ->version(), '9' ) >= 0) { if (! $this ->checkBinaryOutputSuccess()) { // First try to alter the database. If it fails, raise an error telling // the user to do it themselves. $connection_options = $database_connection ->getConnectionOptions(); // It is safe to include the database name directly here, because this // code is only called when a connection to the database is already // established, thus the database name is guaranteed to be a correct // value. $query = "ALTER DATABASE \"" . $connection_options [ 'database' ] . "\" SET bytea_output = 'escape';" ; try { db_query( $query ); } catch (\Exception $e ) { // Ignore possible errors when the user doesn't have the necessary // privileges to ALTER the database. } // Close the database connection so that the configuration parameter // is applied to the current connection. db_close(); // Recheck, if it fails, finally just rely on the end user to do the // right thing. if (! $this ->checkBinaryOutputSuccess()) { $replacements = array ( '%setting' => 'bytea_output' , '%current_value' => 'hex' , '%needed_value' => 'escape' , '@query' => $query , ); $this ->fail(t( "The %setting setting is currently set to '%current_value', but needs to be '%needed_value'. Change this by running the following query: <code>@query</code>" , $replacements )); } } } } |
Please login to continue.