diff --git a/resources/classes/database.php b/resources/classes/database.php index 24ccb0f95..2dfe9f471 100644 --- a/resources/classes/database.php +++ b/resources/classes/database.php @@ -3628,7 +3628,7 @@ class database { $pg_indexes = $prep_statement->fetchAll(PDO::FETCH_NAMED); $database_indexes = array(); foreach($pg_indexes as $row) { - $database_indexes[$row['table']][$row['index_name']] = $row['definition']; + $database_indexes[$row['index_name']] = $row['definition']; } } return $database_indexes; @@ -3692,10 +3692,17 @@ class database { } // create the database index - postgresql index name limited to 63 bytes - if ($this->type == 'pgsql' && !isset($database_indexes[$table_name][substr($table_name . "_" . $column_name . "_fkey", 0, 63)])) { - $sql = "CREATE INDEX IF NOT EXISTS " . $table_name . "_" . $column_name . "_fkey ON " . $table_name . " (" . $column_name . ");\n"; + $index_name = substr($table_name . "_" . $column_name . "_fkey", 0, 63); + if ($this->type == 'pgsql' && !isset($database_indexes[$index_name])) { + // add the database index + $sql = "CREATE INDEX " . $index_name . " ON " . $table_name . " (" . $column_name . ");\n"; $prep_statement = $this->db->prepare($sql); $prep_statement->execute(); + + // add the new index to the database indexes array + $database_indexes[$index_name] = $sql; + + // build the results array $row['table_name'] = $table_name; $row['column_name'] = $column_name; $row['sql'] = $sql;