summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Cyril Poiraud <jclgms@gmail.com>2019-01-29 20:00:48 +0100
committerDamien Regad <dregad@mantisbt.org>2019-12-30 00:19:15 +0100
commit248188451a329c9f1cec9c0a26206c7d57bb9784 (patch)
tree6ecad4fa7b5c8ffa3d6277f792da6f50e320a325
parent5ea89245ddf78a7aaefea792e95fde7871cec48e (diff)
downloadadodb-248188451a329c9f1cec9c0a26206c7d57bb9784.tar.gz
adodb-248188451a329c9f1cec9c0a26206c7d57bb9784.tar.bz2
adodb-248188451a329c9f1cec9c0a26206c7d57bb9784.zip
mssql: MetaForeignKeys not returning all FK's
MetaForeignKeys returns an associative array with the name of reference table for key. But when there are 2 foreign keys from the same reference table, MetaForeignKeys returns only the last foreign key. A solution is to merge arrays when there are several foreign keys. Fixes #486 Signed-off-by: Damien Regad <dregad@mantisbt.org> Original commits from PR squashed and message reworded.
-rw-r--r--drivers/adodb-mssql.inc.php6
-rw-r--r--drivers/adodb-mssqlnative.inc.php6
2 files changed, 10 insertions, 2 deletions
diff --git a/drivers/adodb-mssql.inc.php b/drivers/adodb-mssql.inc.php
index b60d28c3..c137d17a 100644
--- a/drivers/adodb-mssql.inc.php
+++ b/drivers/adodb-mssql.inc.php
@@ -511,7 +511,11 @@ order by constraint_name, referenced_table_name, keyno";
foreach($arr as $k => $v) {
foreach($v as $a => $b) {
if ($upper) $a = strtoupper($a);
- $arr2[$a] = $b;
+ if (is_array($arr2[$a])) { // a previous foreign key was define for this reference table, we merge the new one
+ $arr2[$a] = array_merge($arr2[$a], $b);
+ } else {
+ $arr2[$a] = $b;
+ }
}
}
return $arr2;
diff --git a/drivers/adodb-mssqlnative.inc.php b/drivers/adodb-mssqlnative.inc.php
index 312fcfd0..acb4eec3 100644
--- a/drivers/adodb-mssqlnative.inc.php
+++ b/drivers/adodb-mssqlnative.inc.php
@@ -735,7 +735,11 @@ class ADODB_mssqlnative extends ADOConnection {
foreach($arr as $k => $v) {
foreach($v as $a => $b) {
if ($upper) $a = strtoupper($a);
- $arr2[$a] = $b;
+ if (is_array($arr2[$a])) { // a previous foreign key was define for this reference table, we merge the new one
+ $arr2[$a] = array_merge($arr2[$a], $b);
+ } else {
+ $arr2[$a] = $b;
+ }
}
}
return $arr2;