-function
-pg_column_has_type($table, $column, $wanttype)
-{
-global $wgDatabase, $wgDBname, $wgDBmwschema;
-
- $q = <<<END
-SELECT typname FROM pg_class, pg_namespace, pg_attribute, pg_type
- WHERE relnamespace=pg_namespace.oid AND relkind='r'
- AND attrelid=pg_class.oid AND atttypid=pg_type.oid
- AND nspname=%s AND relname=%s AND attname=%s;
-END;
- $res = $wgDatabase->query(sprintf($q,
- $wgDatabase->addQuotes($wgDBmwschema),
- $wgDatabase->addQuotes($table),
- $wgDatabase->addQuotes($column)));
- $row = $wgDatabase->fetchRow($res);
- $istype = false;
- if ($row)
- $istype = $row[0] === $wanttype;
- $wgDatabase->freeResult($res);
- return $istype;
-}
-
-function
-pg_column_exists($table, $column)
-{
-global $wgDatabase, $wgDBname, $wgDBmwschema;
-
- $q = <<<END
-SELECT 1 FROM pg_class, pg_namespace, pg_attribute
- WHERE relnamespace=pg_namespace.oid AND relkind='r'
- AND attrelid=pg_class.oid
- AND nspname=%s AND relname=%s AND attname=%s;
-END;
- $res = $wgDatabase->query(sprintf($q,
- $wgDatabase->addQuotes($wgDBmwschema),
- $wgDatabase->addQuotes($table),
- $wgDatabase->addQuotes($column)));
- $row = $wgDatabase->fetchRow($res);
- $exists = !!$row;
- $wgDatabase->freeResult($res);
- return $exists;
-}
-
-function
-pg_column_is_nullable($table, $column)
-{
-global $wgDatabase, $wgDBname, $wgDBmwschema;
-
- $q = <<<END
-SELECT attnotnull FROM pg_class, pg_namespace, pg_attribute
- WHERE relnamespace=pg_namespace.oid AND relkind='r'
- AND attrelid=pg_class.oid
- AND nspname=%s AND relname=%s AND attname=%s;
-END;
- $res = $wgDatabase->query(sprintf($q,
- $wgDatabase->addQuotes($wgDBmwschema),
- $wgDatabase->addQuotes($table),
- $wgDatabase->addQuotes($column)));
- $row = $wgDatabase->fetchRow($res);
- $nullable = ($row[0] === 'f');
- $wgDatabase->freeResult($res);
- return $nullable;
-}
-
-define('PG_RELTYPE_TABLE', 'r');
-define('PG_RELTYPE_SEQUENCE', 'S');
-
-function
-pg_relation_exists($rel, $type)
-{
-global $wgDatabase, $wgDBname, $wgDBmwschema;
-
- $q = <<<END
-SELECT 1 FROM pg_class, pg_namespace
- WHERE relnamespace=pg_namespace.oid AND relkind=%s
- AND nspname=%s AND relname=%s
-END;
- $res = $wgDatabase->query(sprintf($q,
- $wgDatabase->addQuotes($type),
- $wgDatabase->addQuotes($wgDBmwschema),
- $wgDatabase->addQuotes($rel)));
- $row = $wgDatabase->fetchRow($res);
- $exists = !!$row;
- $wgDatabase->freeResult($res);
- return $exists;
-}
-
-function
-pg_table_exists($table)
-{
- return pg_relation_exists($table, PG_RELTYPE_TABLE);
-}
-
-function
-pg_sequence_exists($seq)
-{
- return pg_relation_exists($seq, PG_RELTYPE_SEQUENCE);
-}
-
-function
-pg_trigger_exists($table, $trigger)
-{
-global $wgDatabase, $wgDBname, $wgDBmwschema;
-
- $q = <<<END
-SELECT 1 FROM pg_class, pg_namespace, pg_trigger
- WHERE relnamespace=pg_namespace.oid AND relkind='r'
- AND tgrelid=pg_class.oid
- AND nspname=%s AND relname=%s AND tgname=%s
-END;
- $res = $wgDatabase->query(sprintf($q,
- $wgDatabase->addQuotes($wgDBmwschema),
- $wgDatabase->addQuotes($table),
- $wgDatabase->addQuotes($trigger)));
- $row = $wgDatabase->fetchRow($res);
- $exists = !!$row;
- $wgDatabase->freeResult($res);
- return $exists;
-}
-
-