]> git.joonet.de Git - adminer.git/commitdiff
Partitioning: Compact array earlier
authorJakub Vrana <jakub@vrana.cz>
Tue, 15 Apr 2025 04:45:47 +0000 (06:45 +0200)
committerJakub Vrana <jakub@vrana.cz>
Tue, 15 Apr 2025 04:46:23 +0000 (06:46 +0200)
adminer/create.inc.php
adminer/drivers/pgsql.inc.php

index d50d75d8fcb73f4e346a5d394c417511f6cdb5dc..c5ccc40a91a5d2282edd7a6a3bd6b25bf9096307 100644 (file)
@@ -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();
                        }
index e8ea1714c4d88b8f19560545e2c7580b7f9c8344..9512b8cf148992810a47c6bb2de29a87da85e82a 100644 (file)
@@ -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;
                                        }
                                }
                        }