diff --git a/lib/Cake/Model/Datasource/Database/Postgres.php b/lib/Cake/Model/Datasource/Database/Postgres.php index b944c2038..b0d91bd05 100644 --- a/lib/Cake/Model/Datasource/Database/Postgres.php +++ b/lib/Cake/Model/Datasource/Database/Postgres.php @@ -193,7 +193,7 @@ class Postgres extends DboSource { if ($fields === null) { $cols = $this->_execute( - "SELECT DISTINCT column_name AS name, data_type AS type, is_nullable AS null, + "SELECT DISTINCT table_schema AS schema, column_name AS name, data_type AS type, is_nullable AS null, column_default AS default, ordinal_position AS position, character_maximum_length AS char_length, character_octet_length AS oct_length FROM information_schema.columns WHERE table_name = ? AND table_schema = ? ORDER BY position", @@ -241,7 +241,12 @@ class Postgres extends DboSource { ) { $fields[$c->name]['default'] = null; if (!empty($seq) && isset($seq[1])) { - $this->_sequenceMap[$table][$c->default] = $seq[1]; + if (strpos($seq[1], '.') === false) { + $sequenceName = $c->schema . '.' . $seq[1]; + } else { + $sequenceName = $seq[1]; + } + $this->_sequenceMap[$table][$c->name] = $sequenceName; } } if ($fields[$c->name]['type'] == 'boolean' && !empty($fields[$c->name]['default'])) { @@ -310,6 +315,7 @@ class Postgres extends DboSource { $schema = $this->config['schema']; if (isset($this->_sequenceMap[$table]) && $reset != true) { foreach ($this->_sequenceMap[$table] as $field => $sequence) { + list($schema, $sequence) = explode('.', $sequence); $this->_execute("ALTER SEQUENCE \"{$schema}\".\"{$sequence}\" RESTART WITH 1"); } }