diff --git a/phpBB/phpbb/db/extractor/postgres_extractor.php b/phpBB/phpbb/db/extractor/postgres_extractor.php index 0219d2ac8d..5c569abfdf 100644 --- a/phpBB/phpbb/db/extractor/postgres_extractor.php +++ b/phpBB/phpbb/db/extractor/postgres_extractor.php @@ -208,16 +208,16 @@ class postgres_extractor extends base_extractor } // Generate constraint clauses for CHECK constraints - $sql_checks = "SELECT conname as index_name, consrc - FROM pg_constraint, pg_class bc - WHERE conrelid = bc.oid + $sql_checks = "SELECT pc.conname AS index_name, pg_get_constraintdef(pc.oid) + FROM pg_constraint pc, pg_class bc + WHERE pc.conrelid = bc.oid AND bc.relname = '" . $this->db->sql_escape($table_name) . "' AND NOT EXISTS ( SELECT * - FROM pg_constraint as c, pg_inherits as i - WHERE i.inhrelid = pg_constraint.conrelid - AND c.conname = pg_constraint.conname - AND c.consrc = pg_constraint.consrc + FROM pg_constraint AS c, pg_inherits AS i + WHERE i.inhrelid = pc.conrelid + AND c.conname = pc.conname + AND pg_get_constraintdef(c.oid) = pg_get_constraintdef(pc.oid) AND c.conrelid = i.inhparent )"; $result = $this->db->sql_query($sql_checks); diff --git a/phpBB/phpbb/db/tools/postgres.php b/phpBB/phpbb/db/tools/postgres.php index 276ac135be..7cb024d4f6 100644 --- a/phpBB/phpbb/db/tools/postgres.php +++ b/phpBB/phpbb/db/tools/postgres.php @@ -559,16 +559,16 @@ class postgres extends tools // we don't want to double up on constraints if we change different number data types if (isset($column_data['constraint'])) { - $constraint_sql = "SELECT consrc as constraint_data - FROM pg_constraint, pg_class bc + $constraint_sql = "SELECT pg_get_constraintdef(pc.oid) AS constraint_data + FROM pg_constraint pc, pg_class bc WHERE conrelid = bc.oid - AND bc.relname = '{$table_name}' + AND bc.relname = '" . $this->db->sql_escape($table_name) . "' AND NOT EXISTS ( SELECT * - FROM pg_constraint as c, pg_inherits as i - WHERE i.inhrelid = pg_constraint.conrelid - AND c.conname = pg_constraint.conname - AND c.consrc = pg_constraint.consrc + FROM pg_constraint AS c, pg_inherits AS i + WHERE i.inhrelid = pc.conrelid + AND c.conname = pc.conname + AND pg_get_constraintdef(c.oid) = pg_get_constraintdef(pc.oid) AND c.conrelid = i.inhparent )";