/home/mjc1/public_html/phpMyAdmin/libraries/Partition.class.php


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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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;
    }
}
?>