aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phpBB/docs/CHANGELOG.html2
-rw-r--r--phpBB/includes/acp/acp_database.php27
2 files changed, 25 insertions, 4 deletions
diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html
index bdfe15fa87..fcd18a199c 100644
--- a/phpBB/docs/CHANGELOG.html
+++ b/phpBB/docs/CHANGELOG.html
@@ -92,6 +92,8 @@
<li>[Fix] Properly check for invalid characters in MySQL DB prefixes during install (Bug #18775)</li>
<li>[Change] Generalize load check (Bug #21255 / thanks to Xipher)</li>
<li>[Change] Make utf8_htmlspecialchars not pass its argument by reference (Bug #21885)</li>
+ <li>[Fix] Bring the PostgreSQL backup system back to working order (Bug #22385)</li>
+ <li>[Change] Sort the tables at the database table backup screen</li>
</ul>
<a name="v300"></a><h3>1.ii. Changes since 3.0.0</h3>
diff --git a/phpBB/includes/acp/acp_database.php b/phpBB/includes/acp/acp_database.php
index 1600aa266d..eaf3145107 100644
--- a/phpBB/includes/acp/acp_database.php
+++ b/phpBB/includes/acp/acp_database.php
@@ -171,6 +171,7 @@ class acp_database
default:
include($phpbb_root_path . 'includes/functions_install.' . $phpEx);
$tables = get_tables($db);
+ asort($tables);
foreach ($tables as $table_name)
{
if (strlen($table_prefix) === 0 || stripos($table_name, $table_prefix) === 0)
@@ -345,7 +346,25 @@ class acp_database
while (($sql = $fgetd($fp, $delim, $read, $seek, $eof)) !== false)
{
$query = trim($sql);
- $db->sql_query($query);
+
+ if (substr($query, 0, 13) == 'CREATE DOMAIN')
+ {
+ list(, , $domain) = explode(' ', $query);
+ $sql = "SELECT domain_name
+ FROM information_schema.domains
+ WHERE domain_name = '$domain';";
+ $result = $db->sql_query($sql);
+ if (!$db->sql_fetchrow($result))
+ {
+ $db->sql_query($query);
+ }
+ $db->sql_freeresult($result);
+ }
+ else
+ {
+ $db->sql_query($query);
+ }
+
if (substr($query, 0, 4) == 'COPY')
{
while (($sub = $fgetd($fp, "\n", $read, $seek, $eof)) !== '\.')
@@ -1087,7 +1106,7 @@ class postgres_extractor extends base_extractor
}
$sql_data = '-- Table: ' . $table_name . "\n";
- //$sql_data .= "DROP TABLE $table_name;\n";
+ $sql_data .= "DROP TABLE $table_name;\n";
// PGSQL does not "tightly" bind sequences and tables, we must guess...
$sql = "SELECT relname
FROM pg_class
@@ -1156,7 +1175,7 @@ class postgres_extractor extends base_extractor
$line .= ')';
}
- if (!empty($row['rowdefault']))
+ if (isset($row['rowdefault']))
{
$line .= ' DEFAULT ' . $row['rowdefault'];
}
@@ -2279,4 +2298,4 @@ function fgetd_seekless(&$fp, $delim, $read, $seek, $eof, $buffer = 8192)
return false;
}
-?> \ No newline at end of file
+?>