PostgreSQL: Mark unique partial indexes as unique (fix #1172)

This commit is contained in:
Jakub Vrana
2025-10-26 15:40:31 +01:00
parent c5f3707bb9
commit c7ede7331e
3 changed files with 3 additions and 2 deletions

View File

@@ -1,4 +1,5 @@
## Adminer dev
- PostgreSQL: Mark unique partial indexes as unique (bug #1172)
- Plugins: Methods showVariables() and showStatus() (bug #1157)
## Adminer 5.4.1 (released 2025-09-26)

View File

@@ -539,7 +539,7 @@ WHERE indrelid = $table_oid
ORDER BY indisprimary DESC, indisunique DESC", $connection2) as $row
) {
$relname = $row["relname"];
$return[$relname]["type"] = ($row["partial"] ? "INDEX" : ($row["indisprimary"] ? "PRIMARY" : ($row["indisunique"] ? "UNIQUE" : "INDEX")));
$return[$relname]["type"] = ($row["indisprimary"] ? "PRIMARY" : ($row["indisunique"] ? "UNIQUE" : "INDEX"));
$return[$relname]["columns"] = array();
$return[$relname]["descs"] = array();
$return[$relname]["algorithm"] = $row["amname"];

View File

@@ -244,7 +244,7 @@ function get_rows(string $query, ?Db $connection2 = null, string $error = "<p cl
*/
function unique_array(?array $row, array $indexes) {
foreach ($indexes as $index) {
if (preg_match("~PRIMARY|UNIQUE~", $index["type"])) {
if (preg_match("~PRIMARY|UNIQUE~", $index["type"]) && !$index["partial"]) {
$return = array();
foreach ($index["columns"] as $key) {
if (!isset($row[$key])) { // NULL is ambiguous