| @@ 21-38 (lines=18) @@ | ||
| 18 | * |
|
| 19 | * @return bool true if the table has been already clustered |
|
| 20 | */ |
|
| 21 | public function alreadyClustered($table) |
|
| 22 | { |
|
| 23 | $c_schema = $this->_schema; |
|
| 24 | $this->clean($c_schema); |
|
| 25 | $this->clean($table); |
|
| 26 | ||
| 27 | $sql = "SELECT i.indisclustered |
|
| 28 | FROM pg_catalog.pg_class c, pg_catalog.pg_index i |
|
| 29 | WHERE c.relname = '{$table}' |
|
| 30 | AND c.oid = i.indrelid AND i.indisclustered |
|
| 31 | AND c.relnamespace = (SELECT oid FROM pg_catalog.pg_namespace |
|
| 32 | WHERE nspname='{$c_schema}') |
|
| 33 | "; |
|
| 34 | ||
| 35 | $v = $this->selectSet($sql); |
|
| 36 | ||
| 37 | return !($v->RecordCount() == 0); |
|
| 38 | } |
|
| 39 | ||
| 40 | /** |
|
| 41 | * Creates an index. |
|
| @@ 622-655 (lines=34) @@ | ||
| 619 | * |
|
| 620 | * @return int|\PHPPgAdmin\ADORecordSet A recordset or -1 in case of error |
|
| 621 | */ |
|
| 622 | public function getReferrers($table) |
|
| 623 | { |
|
| 624 | $this->clean($table); |
|
| 625 | ||
| 626 | $status = $this->beginTransaction(); |
|
| 627 | if ($status != 0) { |
|
| 628 | return -1; |
|
| 629 | } |
|
| 630 | ||
| 631 | $c_schema = $this->_schema; |
|
| 632 | $this->clean($c_schema); |
|
| 633 | ||
| 634 | $sql = " |
|
| 635 | SELECT |
|
| 636 | pn.nspname, |
|
| 637 | pl.relname, |
|
| 638 | pc.conname, |
|
| 639 | pg_catalog.pg_get_constraintdef(pc.oid) AS consrc |
|
| 640 | FROM |
|
| 641 | pg_catalog.pg_constraint pc, |
|
| 642 | pg_catalog.pg_namespace pn, |
|
| 643 | pg_catalog.pg_class pl |
|
| 644 | WHERE |
|
| 645 | pc.connamespace = pn.oid |
|
| 646 | AND pc.conrelid = pl.oid |
|
| 647 | AND pc.contype = 'f' |
|
| 648 | AND confrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}' |
|
| 649 | AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace |
|
| 650 | WHERE nspname='{$c_schema}')) |
|
| 651 | ORDER BY 1,2,3 |
|
| 652 | "; |
|
| 653 | ||
| 654 | return $this->selectSet($sql); |
|
| 655 | } |
|
| 656 | ||
| 657 | abstract public function fieldClean(&$str); |
|
| 658 | ||
| @@ 22-37 (lines=16) @@ | ||
| 19 | * |
|
| 20 | * @return \PHPPgAdmin\ADORecordSet A recordset |
|
| 21 | */ |
|
| 22 | public function getTrigger($table, $trigger) |
|
| 23 | { |
|
| 24 | $c_schema = $this->_schema; |
|
| 25 | $this->clean($c_schema); |
|
| 26 | $this->clean($table); |
|
| 27 | $this->clean($trigger); |
|
| 28 | ||
| 29 | $sql = " |
|
| 30 | SELECT * FROM pg_catalog.pg_trigger t, pg_catalog.pg_class c |
|
| 31 | WHERE t.tgrelid=c.oid AND c.relname='{$table}' AND t.tgname='{$trigger}' |
|
| 32 | AND c.relnamespace=( |
|
| 33 | SELECT oid FROM pg_catalog.pg_namespace |
|
| 34 | WHERE nspname='{$c_schema}')"; |
|
| 35 | ||
| 36 | return $this->selectSet($sql); |
|
| 37 | } |
|
| 38 | ||
| 39 | /** |
|
| 40 | * Creates a trigger. |
|
| @@ 181-205 (lines=25) @@ | ||
| 178 | * |
|
| 179 | * @return \PHPPgAdmin\ADORecordSet A recordset |
|
| 180 | */ |
|
| 181 | public function getAggregate($name, $basetype) |
|
| 182 | { |
|
| 183 | $c_schema = $this->_schema; |
|
| 184 | $this->clean($c_schema); |
|
| 185 | $this->clean($name); |
|
| 186 | $this->clean($basetype); |
|
| 187 | ||
| 188 | $sql = " |
|
| 189 | SELECT p.proname, |
|
| 190 | CASE p.proargtypes[0] |
|
| 191 | WHEN 'pg_catalog.\"any\"'::pg_catalog.regtype THEN NULL |
|
| 192 | ELSE pg_catalog.format_type(p.proargtypes[0], NULL) |
|
| 193 | END AS proargtypes, a.aggtransfn, format_type(a.aggtranstype, NULL) AS aggstype, |
|
| 194 | a.aggfinalfn, a.agginitval, u.usename, pg_catalog.obj_description(p.oid, 'pg_proc') AS aggrcomment |
|
| 195 | FROM pg_catalog.pg_proc p, pg_catalog.pg_namespace n, pg_catalog.pg_user u, pg_catalog.pg_aggregate a |
|
| 196 | WHERE n.oid = p.pronamespace AND p.proowner=u.usesysid AND p.oid=a.aggfnoid |
|
| 197 | AND p.proisagg AND n.nspname='{$c_schema}' |
|
| 198 | AND p.proname='{$name}' |
|
| 199 | AND CASE p.proargtypes[0] |
|
| 200 | WHEN 'pg_catalog.\"any\"'::pg_catalog.regtype THEN '' |
|
| 201 | ELSE pg_catalog.format_type(p.proargtypes[0], NULL) |
|
| 202 | END ='{$basetype}'"; |
|
| 203 | ||
| 204 | return $this->selectSet($sql); |
|
| 205 | } |
|
| 206 | ||
| 207 | // Sequence functions |
|
| 208 | ||