aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/DB/MySqlTools.php
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2017-02-03 16:24:53 +0100
committerRoeland Jago Douma <roeland@famdouma.nl>2017-04-28 09:35:36 +0200
commit43427e26d78123e66652741d960c14cf40342715 (patch)
tree411718cd0fb932c2fce38fb6dc879bcdbad12144 /lib/private/DB/MySqlTools.php
parent6d93cb74888ae0da0d2286ca1cd82179ea367513 (diff)
downloadnextcloud-server-43427e26d78123e66652741d960c14cf40342715.tar.gz
nextcloud-server-43427e26d78123e66652741d960c14cf40342715.zip
Add console command to migrate the charset
Diffstat (limited to 'lib/private/DB/MySqlTools.php')
-rw-r--r--lib/private/DB/MySqlTools.php49
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/private/DB/MySqlTools.php b/lib/private/DB/MySqlTools.php
new file mode 100644
index 00000000000..32f1de887c3
--- /dev/null
+++ b/lib/private/DB/MySqlTools.php
@@ -0,0 +1,49 @@
+<?php
+/**
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
+ *
+ * @copyright Copyright (c) 2017, ownCloud GmbH
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\DB;
+
+use OCP\IDBConnection;
+
+/**
+* Various MySQL specific helper functions.
+*/
+class MySqlTools {
+
+ /**
+ * @param Connection $connection
+ * @return bool
+ */
+ public function supports4ByteCharset(IDBConnection $connection) {
+ foreach (['innodb_file_format' => 'Barracuda', 'innodb_large_prefix' => 'ON', 'innodb_file_per_table' => 'ON'] as $var => $val) {
+ $result = $connection->executeQuery("SHOW VARIABLES LIKE '$var'");
+ $rows = $result->fetch();
+ $result->closeCursor();
+ if ($rows === false) {
+ return false;
+ }
+ if (strcasecmp($rows['Value'], $val) !== 0) {
+ return false;
+ }
+ }
+ return true;
+ }
+}