123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- <?php
- use PhpMyAdmin\Core;
- if (!isset($partitionDetails)) {
- $partitionDetails = array();
-
- $partitionParams = array(
- 'partition_by', 'partition_expr',
- 'subpartition_by', 'subpartition_expr',
- );
- foreach ($partitionParams as $partitionParam) {
- $partitionDetails[$partitionParam] = isset($_POST[$partitionParam])
- ? $_POST[$partitionParam] : '';
- }
- if (Core::isValid($_POST['partition_count'], 'numeric')) {
-
- $partition_count = min(intval($_POST['partition_count']), 8192);
- } else {
- $partition_count = 0;
- }
- $partitionDetails['partition_count']
- = ($partition_count === 0) ? '' : $partition_count;
- if (Core::isValid($_POST['subpartition_count'], 'numeric')) {
-
- $subpartition_count = min(intval($_POST['subpartition_count']), 8192);
- } else {
- $subpartition_count = 0;
- }
- $partitionDetails['subpartition_count']
- = ($subpartition_count === 0) ? '' : $subpartition_count;
-
- $partitionDetails['can_have_subpartitions'] = $partition_count > 1
- && isset($_POST['partition_by'])
- && ($_POST['partition_by'] == 'RANGE'
- || $_POST['partition_by'] == 'RANGE COLUMNS'
- || $_POST['partition_by'] == 'LIST'
- || $_POST['partition_by'] == 'LIST COLUMNS');
-
- $partitionDetails['value_enabled'] = isset($_POST['partition_by'])
- && ($_POST['partition_by'] == 'RANGE'
- || $_POST['partition_by'] == 'RANGE COLUMNS'
- || $_POST['partition_by'] == 'LIST'
- || $_POST['partition_by'] == 'LIST COLUMNS');
-
- if ($partition_count > 1) {
- $partitions = isset($_POST['partitions'])
- ? $_POST['partitions']
- : array();
-
-
- array_splice($partitions, $partition_count);
- for ($i = 0; $i < $partition_count; $i++) {
- if (! isset($partitions[$i])) {
- $partitions[$i] = array(
- 'name' => 'p' . $i,
- 'value_type' => '',
- 'value' => '',
- 'engine' => '',
- 'comment' => '',
- 'data_directory' => '',
- 'index_directory' => '',
- 'max_rows' => '',
- 'min_rows' => '',
- 'tablespace' => '',
- 'node_group' => '',
- );
- }
- $partition =& $partitions[$i];
- $partition['prefix'] = 'partitions[' . $i . ']';
-
- if (! isset($partition['value_type'])) {
- $partition['value_type'] = '';
- $partition['value'] = '';
- }
- if (! isset($partition['engine'])) {
- $partition['engine'] = '';
- $partition['comment'] = '';
- $partition['data_directory'] = '';
- $partition['index_directory'] = '';
- $partition['max_rows'] = '';
- $partition['min_rows'] = '';
- $partition['tablespace'] = '';
- $partition['node_group'] = '';
- }
- if ($subpartition_count > 1
- && $partitionDetails['can_have_subpartitions'] == true
- ) {
- $partition['subpartition_count'] = $subpartition_count;
- if (! isset($partition['subpartitions'])) {
- $partition['subpartitions'] = array();
- }
- $subpartitions =& $partition['subpartitions'];
-
-
- array_splice($subpartitions, $subpartition_count);
- for ($j = 0; $j < $subpartition_count; $j++) {
- if (! isset($subpartitions[$j])) {
- $subpartitions[$j] = array(
- 'name' => $partition['name'] . '_s' . $j,
- 'engine' => '',
- 'comment' => '',
- 'data_directory' => '',
- 'index_directory' => '',
- 'max_rows' => '',
- 'min_rows' => '',
- 'tablespace' => '',
- 'node_group' => '',
- );
- }
- $subpartition =& $subpartitions[$j];
- $subpartition['prefix'] = 'partitions[' . $i . ']'
- . '[subpartitions][' . $j . ']';
- }
- } else {
- unset($partition['subpartitions']);
- unset($partition['subpartition_count']);
- }
- }
- $partitionDetails['partitions'] = $partitions;
- }
- }
|