Source for file Pgsql.php
Documentation is available at Pgsql.php
* $Id: Pgsql.php 1889 2007-06-28 12:11:55Z zYne $
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.phpdoctrine.com>.
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
* @author Paul Cooper <pgc@ucecom.com>
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
* @version $Revision: 1889 $
* @category Object Relational Mapping
* @link www.phpdoctrine.com
'listDatabases' =>
'SELECT datname FROM pg_database',
'listFunctions' =>
"SELECT
AND tp.typname <> 'trigger'
(SELECT oid FROM pg_namespace
WHERE nspname NOT LIKE 'pg_%' AND nspname != 'information_schema'",
'listSequences' =>
"SELECT
WHERE relkind = 'S' AND relnamespace IN
(SELECT oid FROM pg_namespace
WHERE nspname NOT LIKE 'pg_%' AND nspname != 'information_schema')",
FROM pg_class c, pg_user u
WHERE c.relowner = u.usesysid
AND NOT EXISTS (SELECT 1 FROM pg_views WHERE viewname = c.relname)
AND c.relname !~ '^(pg_|sql_)'
SELECT c.relname AS table_name
AND NOT EXISTS (SELECT 1 FROM pg_views WHERE viewname = c.relname)
AND NOT EXISTS (SELECT 1 FROM pg_user WHERE usesysid = c.relowner)
AND c.relname !~ '^pg_'",
'listViews' =>
'SELECT viewname FROM pg_views',
'listUsers' =>
'SELECT usename FROM pg_user',
'listTableConstraints' =>
"SELECT
WHERE pg_class.relname = %s
AND pg_class.oid = pg_index.indrelid
AND (indisunique = 't' OR indisprimary = 't')
'listTableIndexes' =>
"SELECT
WHERE pg_class.relname = %s
AND pg_class.oid=pg_index.indrelid
'listTableColumns' =>
"SELECT
format_type(a.atttypid, a.atttypmod) AS complete_type,
a.attnotnull AS isnotnull,
WHERE c.oid = pg_index.indrelid
AND pg_index.indkey[0] = a.attnum
AND pg_index.indisprimary = 't'
WHERE c.oid = pg_attrdef.adrelid
AND pg_attrdef.adnum=a.attnum
FROM pg_attribute a, pg_class c, pg_type t
* lists all database triggers
* @param string|null$database
* lists table constraints
* @param string $table database table name
$table =
$this->conn->quote($table);
$query =
sprintf($this->sql['listTableConstraints'], $table);
return $this->conn->fetchColumn($query);
* lists table constraints
* @param string $table database table name
$table =
$this->conn->quote($table);
$query =
sprintf($this->sql['listTableColumns'], $table);
$result =
$this->conn->fetchAssoc($query);
foreach ($result as $key =>
$val) {
// get length from varchar definition
$length =
preg_replace('~.*\(([0-9]*)\).*~', '$1', $val['complete_type']);
$val['length'] =
$length;
$decl =
$this->conn->dataDict->getPortableDeclaration($val);
'type' =>
$decl['type'][0],
'alltypes' =>
$decl['type'],
'length' =>
$decl['length'],
'fixed' =>
$decl['fixed'],
'unsigned' =>
$decl['unsigned'],
'notnull' =>
($val['isnotnull'] ==
''),
'default' =>
$val['default'],
'primary' =>
($val['pri'] ==
't'),
$columns[$val['field']] =
$description;
* list all indexes in a table
* @param string $table database table name
$table =
$this->conn->quote($table);
$query =
sprintf($this->sql['listTableIndexes'], $table);
return $this->conn->fetchColumn($query);
* @param string|null$database
return $this->conn->fetchColumn($this->sql['listTables']);
* @param string $table database table name
$query =
'SELECT trg.tgname AS trigger_name
WHERE trg.tgrelid = tbl.oid';
$query .=
" AND tbl.relname = $table";
return $this->conn->fetchColumn($query);
* list the views in the database that reference a given table
* @param string $table database table name
return $this->conn->fetchColumn($query);