]> git.joonet.de Git - adminer.git/commitdiff
postgresql : unique partial index musn't be considered as unique. can cause problems...
authorsoleuu <soleuu@gmail.com>
Tue, 17 Jan 2017 09:25:35 +0000 (10:25 +0100)
committerJakub Vrana <jakub@vrana.cz>
Sat, 18 Feb 2017 16:32:40 +0000 (17:32 +0100)
adminer/drivers/pgsql.inc.php

index eb59bd8353fa32d7cd012d9027daf45e2ce9df6d..b70d96cd495c452122b82751340a8fc782eb1046 100644 (file)
@@ -311,9 +311,9 @@ ORDER BY a.attnum"
                $return = array();
                $table_oid = $connection2->result("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = " . q($table));
                $columns = get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $table_oid AND attnum > 0", $connection2);
-               foreach (get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption FROM pg_index i, pg_class ci WHERE i.indrelid = $table_oid AND ci.oid = i.indexrelid", $connection2) as $row) {
+               foreach (get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption , (indpred IS NOT NULL)::int as indispartial FROM pg_index i, pg_class ci WHERE i.indrelid = $table_oid AND ci.oid = i.indexrelid", $connection2) as $row) {
                        $relname = $row["relname"];
-                       $return[$relname]["type"] = ($row["indisprimary"] ? "PRIMARY" : ($row["indisunique"] ? "UNIQUE" : "INDEX"));
+                       $return[$relname]["type"] = ($row["indispartial"] ?  "INDEX" : ($row["indisprimary"] ? "PRIMARY" : ($row["indisunique"] ? "UNIQUE" : "INDEX")));
                        $return[$relname]["columns"] = array();
                        foreach (explode(" ", $row["indkey"]) as $indkey) {
                                $return[$relname]["columns"][] = $columns[$indkey];