summaryrefslogtreecommitdiff
path: root/hugo/libraries/Partition.class.php
diff options
context:
space:
mode:
Diffstat (limited to 'hugo/libraries/Partition.class.php')
-rw-r--r--hugo/libraries/Partition.class.php79
1 files changed, 79 insertions, 0 deletions
diff --git a/hugo/libraries/Partition.class.php b/hugo/libraries/Partition.class.php
new file mode 100644
index 0000000..72137f8
--- /dev/null
+++ b/hugo/libraries/Partition.class.php
@@ -0,0 +1,79 @@
+<?php
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * Library for extracting information about the partitions
+ *
+ * @package PhpMyAdmin
+ */
+if (! defined('PHPMYADMIN')) {
+ exit;
+}
+
+/**
+ * base Partition Class
+ *
+ * @package PhpMyAdmin
+ */
+class PMA_Partition
+{
+ /**
+ * returns array of partition names for a specific db/table
+ *
+ * @param string $db database name
+ * @param string $table table name
+ *
+ * @access public
+ * @return array of partition names
+ */
+ static public function getPartitionNames($db, $table)
+ {
+ if (PMA_Partition::havePartitioning()) {
+ return PMA_DBI_fetch_result(
+ "SELECT `PARTITION_NAME` FROM `information_schema`.`PARTITIONS`"
+ . " WHERE `TABLE_SCHEMA` = '" . $db
+ . "' AND `TABLE_NAME` = '" . $table . "'"
+ );
+ } else {
+ return array();
+ }
+ }
+
+ /**
+ * checks if MySQL server supports partitioning
+ *
+ * @static
+ * @staticvar boolean $have_partitioning
+ * @staticvar boolean $already_checked
+ * @access public
+ * @return boolean
+ */
+ static public function havePartitioning()
+ {
+ static $have_partitioning = false;
+ static $already_checked = false;
+
+ if (! $already_checked) {
+ if (PMA_MYSQL_INT_VERSION >= 50100) {
+ if (PMA_MYSQL_INT_VERSION < 50600) {
+ if (PMA_DBI_fetch_value(
+ "SHOW VARIABLES LIKE 'have_partitioning';"
+ )) {
+ $have_partitioning = true;
+ }
+ } else {
+ // see http://dev.mysql.com/doc/refman/5.6/en/partitioning.html
+ $plugins = PMA_DBI_fetch_result("SHOW PLUGINS");
+ foreach ($plugins as $value) {
+ if ($value['Name'] == 'partition') {
+ $have_partitioning = true;
+ break;
+ }
+ }
+ }
+ $already_checked = true;
+ }
+ }
+ return $have_partitioning;
+ }
+}
+?>