You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
3.3 KiB
154 lines
3.3 KiB
<?php |
|
/** |
|
* Library for extracting information about the sub-partitions |
|
*/ |
|
|
|
declare(strict_types=1); |
|
|
|
namespace PhpMyAdmin\Partitioning; |
|
|
|
/** |
|
* Represents a sub partition of a table |
|
*/ |
|
class SubPartition |
|
{ |
|
/** @var string the database */ |
|
protected $db; |
|
/** @var string the table */ |
|
protected $table; |
|
/** @var string partition name */ |
|
protected $name; |
|
/** @var int ordinal */ |
|
protected $ordinal; |
|
/** @var string partition method */ |
|
protected $method; |
|
/** @var string partition expression */ |
|
protected $expression; |
|
/** @var int no of table rows in the partition */ |
|
protected $rows; |
|
/** @var int data length */ |
|
protected $dataLength; |
|
/** @var int index length */ |
|
protected $indexLength; |
|
/** @var string partition comment */ |
|
protected $comment; |
|
|
|
/** |
|
* Constructs a partition |
|
* |
|
* @param array $row fetched row from information_schema.PARTITIONS |
|
*/ |
|
public function __construct(array $row) |
|
{ |
|
$this->db = $row['TABLE_SCHEMA']; |
|
$this->table = $row['TABLE_NAME']; |
|
$this->loadData($row); |
|
} |
|
|
|
/** |
|
* Loads data from the fetched row from information_schema.PARTITIONS |
|
* |
|
* @param array $row fetched row |
|
*/ |
|
protected function loadData(array $row): void |
|
{ |
|
$this->name = $row['SUBPARTITION_NAME']; |
|
$this->ordinal = $row['SUBPARTITION_ORDINAL_POSITION']; |
|
$this->method = $row['SUBPARTITION_METHOD']; |
|
$this->expression = $row['SUBPARTITION_EXPRESSION']; |
|
$this->loadCommonData($row); |
|
} |
|
|
|
/** |
|
* Loads some data that is common to both partitions and sub partitions |
|
* |
|
* @param array $row fetched row |
|
*/ |
|
protected function loadCommonData(array $row): void |
|
{ |
|
$this->rows = $row['TABLE_ROWS']; |
|
$this->dataLength = $row['DATA_LENGTH']; |
|
$this->indexLength = $row['INDEX_LENGTH']; |
|
$this->comment = $row['PARTITION_COMMENT']; |
|
} |
|
|
|
/** |
|
* Return the partition name |
|
* |
|
* @return string partition name |
|
*/ |
|
public function getName() |
|
{ |
|
return $this->name; |
|
} |
|
|
|
/** |
|
* Return the ordinal of the partition |
|
* |
|
* @return int the ordinal |
|
*/ |
|
public function getOrdinal() |
|
{ |
|
return $this->ordinal; |
|
} |
|
|
|
/** |
|
* Returns the partition method |
|
* |
|
* @return string partition method |
|
*/ |
|
public function getMethod() |
|
{ |
|
return $this->method; |
|
} |
|
|
|
/** |
|
* Returns the partition expression |
|
* |
|
* @return string partition expression |
|
*/ |
|
public function getExpression() |
|
{ |
|
return $this->expression; |
|
} |
|
|
|
/** |
|
* Returns the number of data rows |
|
* |
|
* @return int number of rows |
|
*/ |
|
public function getRows() |
|
{ |
|
return $this->rows; |
|
} |
|
|
|
/** |
|
* Returns the data length |
|
* |
|
* @return int data length |
|
*/ |
|
public function getDataLength() |
|
{ |
|
return $this->dataLength; |
|
} |
|
|
|
/** |
|
* Returns the index length |
|
* |
|
* @return int index length |
|
*/ |
|
public function getIndexLength() |
|
{ |
|
return $this->indexLength; |
|
} |
|
|
|
/** |
|
* Returns the partition comment |
|
* |
|
* @return string partition comment |
|
*/ |
|
public function getComment() |
|
{ |
|
return $this->comment; |
|
} |
|
}
|
|
|