diff --git a/adminer/create.inc.php b/adminer/create.inc.php index d50d75d8..c5ccc40a 100644 --- a/adminer/create.inc.php +++ b/adminer/create.inc.php @@ -91,6 +91,8 @@ if ($_POST && !process_fields($row["fields"]) && !$error) { unset($partitioning["partition_values"][$key]); } } + $partitioning["partition_names"] = array_values($partitioning["partition_names"]); + $partitioning["partition_values"] = array_values($partitioning["partition_values"]); if ($partitioning == $partitions_info) { $partitioning = array(); } diff --git a/adminer/drivers/pgsql.inc.php b/adminer/drivers/pgsql.inc.php index e8ea1714..9512b8cf 100644 --- a/adminer/drivers/pgsql.inc.php +++ b/adminer/drivers/pgsql.inc.php @@ -639,22 +639,19 @@ ORDER BY conkey, conname") as $row $status = ""; if ($partitioning) { $status = " PARTITION BY $partitioning[partition_by]($partitioning[partition])"; - $partition_names = array_values($partitioning["partition_names"]); - $partition_values = array_values($partitioning["partition_values"]); if ($partitioning["partition_by"] == 'HASH') { $partitions = +$partitioning["partitions"]; for ($i=0; $i < $partitions; $i++) { $queries[] = "CREATE TABLE " . idf_escape($name . "_$i") . " PARTITION OF " . idf_escape($name) . " FOR VALUES WITH (MODULUS $partitions, REMAINDER $i)"; } } else { - foreach ($partition_names as $i => $val) { - $value = $partition_values[$i]; + $prev = "MINVALUE"; + foreach ($partitioning["partition_names"] as $i => $val) { + $value = $partitioning["partition_values"][$i]; $queries[] = "CREATE TABLE " . idf_escape($name . "_$val") . " PARTITION OF " . idf_escape($name) . " FOR VALUES " - . ($partitioning["partition_by"] == 'LIST' - ? "IN ($value)" - : "FROM (" . ($i ? $partition_values[$i - 1] : "MINVALUE") . ") TO ($value)" - ) + . ($partitioning["partition_by"] == 'LIST' ? "IN ($value)" : "FROM ($prev) TO ($value)") ; + $prev = $value; } } }