Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit982888b

Browse files
committed
Fix information_schema for OUT and INOUT parameters.
1 parent6dfe64e commit982888b

File tree

1 file changed

+21
-23
lines changed

1 file changed

+21
-23
lines changed

‎src/backend/catalog/information_schema.sql

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* Copyright (c) 2003-2005, PostgreSQL Global Development Group
66
*
7-
* $PostgreSQL: pgsql/src/backend/catalog/information_schema.sql,v 1.27 2005/03/29 00:16:56 tgl Exp $
7+
* $PostgreSQL: pgsql/src/backend/catalog/information_schema.sql,v 1.28 2005/05/31 03:36:24 tgl Exp $
88
*/
99

1010
/*
@@ -30,22 +30,14 @@ SET search_path TO information_schema, public;
3030
* A few supporting functions first ...
3131
*/
3232

33-
/* Expand an oidvector or smallint[] into a set with integers 1..N*/
34-
CREATETYPE_pg_expandoidvector_typeAS (ooid, nint);
35-
36-
CREATEFUNCTION_pg_expandoidvector(oidvector)
37-
RETURNS SETOF _pg_expandoidvector_type
33+
/* Expand any 1-D array into a set with integers 1..N*/
34+
CREATEFUNCTION_pg_expandarray(IN anyarray, OUT x anyelement, OUT nint)
35+
RETURNS SETOF RECORD
3836
LANGUAGE sql STRICT IMMUTABLE
39-
AS'select $1[s], s+1
40-
from generate_series(0,array_upper($1,1),1) as g(s)';
41-
42-
CREATETYPE_pg_expandsmallint_typeAS (ismallint, nint);
43-
44-
CREATEFUNCTION_pg_expandsmallint(smallint[])
45-
RETURNS SETOF _pg_expandsmallint_type
46-
LANGUAGE sql STRICT IMMUTABLE
47-
AS'select $1[s], s
48-
from generate_series(1,array_upper($1,1),1) as g(s)';
37+
AS'select $1[s], s - pg_catalog.array_lower($1,1) + 1
38+
from pg_catalog.generate_series(pg_catalog.array_lower($1,1),
39+
pg_catalog.array_upper($1,1),
40+
1) as g(s)';
4941

5042
CREATEFUNCTION_pg_keyissubset(smallint[],smallint[]) RETURNSboolean
5143
LANGUAGE sql
@@ -727,7 +719,7 @@ CREATE VIEW key_column_usage AS
727719
FROM pg_attribute a,
728720
(SELECTr.oid,nc.nspnameAS nc_nspname,c.conname,
729721
nr.nspnameAS nr_nspname,r.relname,
730-
_pg_expandsmallint(c.conkey)AS x
722+
_pg_expandarray(c.conkey)AS x
731723
FROM pg_namespace nr, pg_class r, pg_namespace nc,
732724
pg_constraint c, pg_user u
733725
WHEREnr.oid=r.relnamespace
@@ -738,7 +730,7 @@ CREATE VIEW key_column_usage AS
738730
ANDr.relowner=u.usesysid
739731
ANDu.usename=current_user)AS ss
740732
WHEREss.oid=a.attrelid
741-
ANDa.attnum= (ss.x).i
733+
ANDa.attnum= (ss.x).x
742734
AND NOTa.attisdropped;
743735

744736
GRANTSELECTON key_column_usage TO PUBLIC;
@@ -754,7 +746,12 @@ CREATE VIEW parameters AS
754746
CAST(n_nspnameAS sql_identifier)AS specific_schema,
755747
CAST(proname||'_'|| CAST(p_oidAStext)AS sql_identifier)AS specific_name,
756748
CAST((ss.x).nAS cardinal_number)AS ordinal_position,
757-
CAST('IN'AS character_data)AS parameter_mode,
749+
CAST(
750+
CASE WHEN proargmodes ISNULL THEN'IN'
751+
WHEN proargmodes[(ss.x).n]='i' THEN'IN'
752+
WHEN proargmodes[(ss.x).n]='o' THEN'OUT'
753+
WHEN proargmodes[(ss.x).n]='b' THEN'INOUT'
754+
ENDAS character_data)AS parameter_mode,
758755
CAST('NO'AS character_data)AS is_result,
759756
CAST('NO'AS character_data)AS as_locator,
760757
CAST(NULLIF(proargnames[(ss.x).n],'')AS sql_identifier)AS parameter_name,
@@ -788,13 +785,14 @@ CREATE VIEW parameters AS
788785

789786
FROM pg_type t, pg_namespace nt,
790787
(SELECTn.nspnameAS n_nspname,p.proname,p.oidAS p_oid,
791-
p.proargnames, _pg_expandoidvector(p.proargtypes)AS x
788+
p.proargnames,p.proargmodes,
789+
_pg_expandarray(coalesce(p.proallargtypes,p.proargtypes::oid[]))AS x
792790
FROM pg_namespace n, pg_proc p, pg_user u
793791
WHEREn.oid=p.pronamespace
794792
ANDp.proowner=u.usesysid
795793
AND (u.usename=current_userOR
796794
has_function_privilege(p.oid,'EXECUTE')))AS ss
797-
WHEREt.oid= (ss.x).oANDt.typnamespace=nt.oid;
795+
WHEREt.oid= (ss.x).xANDt.typnamespace=nt.oid;
798796

799797
GRANTSELECTON parameters TO PUBLIC;
800798

@@ -1718,9 +1716,9 @@ CREATE VIEW element_types AS
17181716

17191717
/* parameters*/
17201718
SELECT pronamespace, CAST(proname||'_'|| CAST(oidAStext)AS sql_identifier),
1721-
'ROUTINE'::text, (ss.x).n, (ss.x).o
1719+
'ROUTINE'::text, (ss.x).n, (ss.x).x
17221720
FROM (SELECTp.pronamespace,p.proname,p.oid,
1723-
_pg_expandoidvector(p.proargtypes)AS x
1721+
_pg_expandarray(coalesce(p.proallargtypes,p.proargtypes::oid[]))AS x
17241722
FROM pg_proc p)AS ss
17251723

17261724
UNION ALL

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp