diff options
| author | Robert Treat | 2014-02-22 18:45:37 +0000 |
|---|---|---|
| committer | Robert Treat | 2014-02-22 18:45:37 +0000 |
| commit | 8ebf7562291f7018dedfa1ebb47290bb77b86087 (patch) | |
| tree | 5fe9ebd6ed56c721e55523093835417609102228 /classes | |
| parent | 6ea25f2fb443e76480b993c3ef3aefbe774769c9 (diff) | |
Improve support for handling IN / named params in functions
Based on work by Bert Thomas <bthomas@brothom.nl>
Diffstat (limited to 'classes')
| -rwxr-xr-x | classes/database/Postgres.php | 9 | ||||
| -rw-r--r-- | classes/database/Postgres83.php | 33 |
2 files changed, 40 insertions, 2 deletions
diff --git a/classes/database/Postgres.php b/classes/database/Postgres.php index 4ab71646..1d72db0e 100755 --- a/classes/database/Postgres.php +++ b/classes/database/Postgres.php @@ -4112,14 +4112,19 @@ class Postgres extends ADODB_base { $sql = " SELECT - pc.oid AS prooid, proname, pg_catalog.pg_get_userbyid(proowner) AS proowner, + pc.oid AS prooid, proname, + pg_catalog.pg_get_userbyid(proowner) AS proowner, nspname as proschema, lanname as prolanguage, procost, prorows, pg_catalog.format_type(prorettype, NULL) as proresult, prosrc, probin, proretset, proisstrict, provolatile, prosecdef, pg_catalog.oidvectortypes(pc.proargtypes) AS proarguments, proargnames AS proargnames, pg_catalog.obj_description(pc.oid, 'pg_proc') AS procomment, - proconfig + proconfig, + (select array_agg( (select typname from pg_type pt + where pt.oid = p.oid) ) from unnest(proallargtypes) p) + AS proallarguments, + proargmodes FROM pg_catalog.pg_proc pc, pg_catalog.pg_language pl, pg_catalog.pg_namespace pn diff --git a/classes/database/Postgres83.php b/classes/database/Postgres83.php index 3ac4f789..ce0416b9 100644 --- a/classes/database/Postgres83.php +++ b/classes/database/Postgres83.php @@ -322,6 +322,39 @@ class Postgres83 extends Postgres84 { return 0; } + // Function functions + + /** + * Returns all details for a particular function + * @param $func The name of the function to retrieve + * @return Function info + */ + function getFunction($function_oid) { + $this->clean($function_oid); + + $sql = " + SELECT + pc.oid AS prooid, proname, pg_catalog.pg_get_userbyid(proowner) AS proowner, + nspname as proschema, lanname as prolanguage, procost, prorows, + pg_catalog.format_type(prorettype, NULL) as proresult, prosrc, + probin, proretset, proisstrict, provolatile, prosecdef, + pg_catalog.oidvectortypes(pc.proargtypes) AS proarguments, + proargnames AS proargnames, + pg_catalog.obj_description(pc.oid, 'pg_proc') AS procomment, + proconfig + FROM + pg_catalog.pg_proc pc, pg_catalog.pg_language pl, + pg_catalog.pg_namespace pn + WHERE + pc.oid = '{$function_oid}'::oid AND pc.prolang = pl.oid + AND pc.pronamespace = pn.oid + "; + + return $this->selectSet($sql); + } + + + // Capabilities function hasQueryKill() { return false; } function hasDatabaseCollation() { return false; } function hasAlterSequenceStart() { return false; } |
