Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions contrib/ivorysql_ora/expected/ora_sysview.out
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,16 @@ END;
/
-- select ... from all_source
SELECT NAME, LINE, TEXT FROM ALL_SOURCE WHERE NAME = 'func_quotes_lower';
name | line | text
-------------------+------+-----------------------------------------------
func_quotes_lower | 1 | BEGIN
func_quotes_lower | 2 | RETURN 'func_quotes_lower'::VARCHAR2;
func_quotes_lower | 3 | END
(3 rows)
name | line | text
-------------------+------+---------------------------------------------------------
func_quotes_lower | 1 | FUNCTION public."FUNC_QUOTES_LOWER"(id pg_catalog.int4)
func_quotes_lower | 2 | RETURN varchar2
func_quotes_lower | 3 | AUTHID DEFINER
func_quotes_lower | | IS
func_quotes_lower | | BEGIN
func_quotes_lower | | RETURN 'func_quotes_lower'::VARCHAR2;
func_quotes_lower | | END;
(7 rows)

-- data_type and pls_type in all_arguments
CREATE OR REPLACE FUNCTION FUNC_22_ARG_TYPES
Expand Down
102 changes: 92 additions & 10 deletions contrib/ivorysql_ora/src/sysview/sysview--1.0.sql
Original file line number Diff line number Diff line change
Expand Up @@ -363,7 +363,7 @@ SELECT
ELSE 'PROCEDURE'
END::VARCHAR2(12) AS TYPE,
GENERATE_SERIES(1::INTEGER, SYS._ORA_SRC_COUNT(P.OID))::NUMBER AS LINE,
UNNEST(STRING_TO_ARRAY(P.PROSRC, CHR(10)))::VARCHAR2(4000) AS TEXT,
UNNEST(STRING_TO_ARRAY(substring(pg_get_functiondef(P.OID), length('CREATE OR REPLACE ') + 1), CHR(10)))::VARCHAR2(4000) AS TEXT,
0::VARCHAR2(256) AS ORIGIN_CON_ID
FROM
PG_PROC AS P
Expand Down Expand Up @@ -392,7 +392,7 @@ SELECT
ELSE 'PROCEDURE'
END::VARCHAR2(12) AS TYPE,
GENERATE_SERIES(1::INTEGER, SYS._ORA_SRC_COUNT(P.OID))::NUMBER AS LINE,
UNNEST(STRING_TO_ARRAY(P.PROSRC, CHR(10)))::VARCHAR2(4000) AS TEXT,
UNNEST(STRING_TO_ARRAY(substring(pg_get_functiondef(P.OID), length('CREATE OR REPLACE ') + 1), CHR(10)))::VARCHAR2(4000) AS TEXT,
0::VARCHAR2(256) AS ORIGIN_CON_ID
FROM
PG_PROC AS P
Expand Down Expand Up @@ -461,6 +461,9 @@ SELECT
END::NUMBER AS SEQUENCE,
0::NUMBER AS DATA_LEVEL,
CASE
WHEN ARG.TYPE_OBJECT_TYPE::VARCHAR2 = 'table' OR ARG.TYPE_OBJECT_TYPE::VARCHAR2 = 'TABLE'
OR ARG.TYPE_OBJECT_TYPE::VARCHAR2 = 'view' OR ARG.TYPE_OBJECT_TYPE::VARCHAR2 = 'VIEW'
THEN 'PL/SQL RECORD'
WHEN T.TYPNAME = ANY(ARRAY['int2', 'int4', 'int8',
'numeric', 'number'])
THEN 'NUMBER'
Expand All @@ -487,6 +490,8 @@ SELECT
ELSE NULL
END::VARCHAR2(9) AS IN_OUT,
CASE
WHEN ARG.DATA_LENGTH IS NOT NULL
THEN ARG.DATA_LENGTH
WHEN T.TYPNAME = ANY(ARRAY['int2', 'int4', 'int8',
'float4', 'float8',
'numeric', 'number'])
Expand All @@ -496,6 +501,8 @@ SELECT
ELSE NULL
END::NUMBER AS DATA_LENGTH,
CASE
WHEN ARG.DATA_PRECISION IS NOT NULL
THEN ARG.DATA_PRECISION
WHEN T.TYPNAME = ANY(ARRAY['int2', 'int4', 'int8'])
THEN 38
WHEN T.TYPNAME = 'float4'
Expand All @@ -509,6 +516,8 @@ SELECT
ELSE NULL
END::NUMBER AS DATA_PRECISION,
CASE
WHEN ARG.DATA_SCALE IS NOT NULL
THEN ARG.DATA_SCALE
WHEN T.TYPNAME = ANY(ARRAY['float4', 'float8'])
THEN -127
ELSE NULL
Expand All @@ -531,12 +540,29 @@ SELECT
THEN 'NCHAR_CS'
END::VARCHAR2(44) AS CHARACTER_SET_NAME,
NULL::VARCHAR2(128) AS TYPE_OWNER,
NULL::VARCHAR2(128) AS TYPE_NAME,
NULL::VARCHAR2(128) AS TYPE_SUBNAME,
CASE
WHEN ARG.TYPE_NAME != '_NULL_'
THEN SYS.ORA_CASE_TRANS(ARG.TYPE_NAME::VARCHAR2)::VARCHAR2(128)
ELSE
NULL
END::VARCHAR2(128) AS TYPE_NAME,
CASE
WHEN ARG.TYPE_SUBNAME != '_NULL_'
THEN SYS.ORA_CASE_TRANS(ARG.TYPE_SUBNAME::VARCHAR2)::VARCHAR2(128)
ELSE
NULL
END::VARCHAR2(128) AS TYPE_SUBNAME,
NULL::VARCHAR2(128) AS TYPE_LINK,
NULL::VARCHAR2(128) AS TYPE_OBJECT_TYPE,
CASE
WHEN T.TYPTYPE = 'b'
WHEN ARG.TYPE_OBJECT_TYPE != '_NULL_'
THEN SYS.ORA_CASE_TRANS(ARG.TYPE_OBJECT_TYPE::VARCHAR2)::VARCHAR2(128)
ELSE
NULL
END::VARCHAR2(128) AS TYPE_OBJECT_TYPE,
CASE
WHEN (T.TYPTYPE = 'b' OR T.TYPTYPE = 'c') AND ARG.PLS_TYPE IS NOT NULL
THEN SYS.ORA_CASE_TRANS(ARG.PLS_TYPE)
WHEN T.TYPTYPE = 'b' AND ARG.PLS_TYPE IS NULL
THEN SYS.ORA_CASE_TRANS(T.OID::REGTYPE::VARCHAR2)
WHEN T.TYPTYPE = 'd' AND T.TYPNAME = 'raw'
THEN 'RAW'
Expand Down Expand Up @@ -597,6 +623,21 @@ FROM
PG_PROC
) AS SQ
ON P.OID = SQ.OID
LEFT JOIN
(
SELECT
OID,
POSITION,
TYPE_NAME,
TYPE_SUBNAME,
TYPE_OBJECT_TYPE,
DATA_LENGTH,
DATA_PRECISION,
DATA_SCALE,
PLS_TYPE
FROM
pg_get_function_arg_reference_typerowtype()
) AS ARG ON ARG.OID = SQ.OID AND ARG.POSITION = SQ.POSITION
LEFT JOIN PG_TYPE AS T
ON SQ.DATA_TYPE = T.OID
LEFT JOIN PG_TRIGGER AS TR
Expand Down Expand Up @@ -635,6 +676,9 @@ SELECT
END::NUMBER AS SEQUENCE,
0::NUMBER AS DATA_LEVEL,
CASE
WHEN ARG.TYPE_OBJECT_TYPE::VARCHAR2 = 'table' OR ARG.TYPE_OBJECT_TYPE::VARCHAR2 = 'TABLE'
OR ARG.TYPE_OBJECT_TYPE::VARCHAR2 = 'view' OR ARG.TYPE_OBJECT_TYPE::VARCHAR2 = 'VIEW'
THEN 'PL/SQL RECORD'
WHEN T.TYPNAME = ANY(ARRAY['int2', 'int4', 'int8',
'numeric', 'number'])
THEN 'NUMBER'
Expand All @@ -661,6 +705,8 @@ SELECT
ELSE NULL
END::VARCHAR2(9) AS IN_OUT,
CASE
WHEN ARG.DATA_LENGTH IS NOT NULL
THEN ARG.DATA_LENGTH
WHEN T.TYPNAME = ANY(ARRAY['int2', 'int4', 'int8',
'float4', 'float8',
'numeric', 'number'])
Expand All @@ -670,6 +716,8 @@ SELECT
ELSE NULL
END::NUMBER AS DATA_LENGTH,
CASE
WHEN ARG.DATA_PRECISION IS NOT NULL
THEN ARG.DATA_PRECISION
WHEN T.TYPNAME = ANY(ARRAY['int2', 'int4', 'int8'])
THEN 38
WHEN T.TYPNAME = 'float4'
Expand All @@ -683,6 +731,8 @@ SELECT
ELSE NULL
END::NUMBER AS DATA_PRECISION,
CASE
WHEN ARG.DATA_SCALE IS NOT NULL
THEN ARG.DATA_SCALE
WHEN T.TYPNAME = ANY(ARRAY['float4', 'float8'])
THEN -127
ELSE NULL
Expand All @@ -705,12 +755,29 @@ SELECT
THEN 'NCHAR_CS'
END::VARCHAR2(44) AS CHARACTER_SET_NAME,
NULL::VARCHAR2(128) AS TYPE_OWNER,
NULL::VARCHAR2(128) AS TYPE_NAME,
NULL::VARCHAR2(128) AS TYPE_SUBNAME,
CASE
WHEN ARG.TYPE_NAME != '_NULL_'
THEN SYS.ORA_CASE_TRANS(ARG.TYPE_NAME::VARCHAR2)::VARCHAR2(128)
ELSE
NULL
END::VARCHAR2(128) AS TYPE_NAME,
CASE
WHEN ARG.TYPE_SUBNAME != '_NULL_'
THEN SYS.ORA_CASE_TRANS(ARG.TYPE_SUBNAME::VARCHAR2)::VARCHAR2(128)
ELSE
NULL
END::VARCHAR2(128) AS TYPE_SUBNAME,
NULL::VARCHAR2(128) AS TYPE_LINK,
NULL::VARCHAR2(128) AS TYPE_OBJECT_TYPE,
CASE
WHEN T.TYPTYPE = 'b'
WHEN ARG.TYPE_OBJECT_TYPE != '_NULL_'
THEN SYS.ORA_CASE_TRANS(ARG.TYPE_OBJECT_TYPE::VARCHAR2)::VARCHAR2(128)
ELSE
NULL
END::VARCHAR2(128) AS TYPE_OBJECT_TYPE,
CASE
WHEN (T.TYPTYPE = 'b' OR T.TYPTYPE = 'c') AND ARG.PLS_TYPE IS NOT NULL
THEN SYS.ORA_CASE_TRANS(ARG.PLS_TYPE)
WHEN T.TYPTYPE = 'b' AND ARG.PLS_TYPE IS NULL
THEN SYS.ORA_CASE_TRANS(T.OID::REGTYPE::VARCHAR2)
WHEN T.TYPTYPE = 'd' AND T.TYPNAME = 'raw'
THEN 'RAW'
Expand Down Expand Up @@ -771,6 +838,21 @@ FROM
PG_PROC
) AS SQ
ON P.OID = SQ.OID
LEFT JOIN
(
SELECT
OID,
POSITION,
TYPE_NAME,
TYPE_SUBNAME,
TYPE_OBJECT_TYPE,
DATA_LENGTH,
DATA_PRECISION,
DATA_SCALE,
PLS_TYPE
FROM
pg_get_function_arg_reference_typerowtype()
) AS ARG ON ARG.OID = SQ.OID AND ARG.POSITION = SQ.POSITION
LEFT JOIN PG_TYPE AS T
ON SQ.DATA_TYPE = T.OID
LEFT JOIN PG_TRIGGER AS TR
Expand Down
Loading