Skip to content

Commit ac98e24

Browse files
committed
Add SYS.USER_CONS_COLUMNS view and test case
1 parent 276bd7b commit ac98e24

3 files changed

Lines changed: 47 additions & 0 deletions

File tree

contrib/ivorysql_ora/expected/ora_sysview.out

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,3 +181,13 @@ ORDER BY NAME;
181181
listen_addresses | 2 | | localhost | FALSE | FALSE | FALSE | Sets the host name or IP address(es) to listen to.
182182
(5 rows)
183183

184+
-- USER_CONS_COLUMNS
185+
CREATE TABLE
186+
OWNER | TABLE_NAME | CONSTRAINT_NAME | COLUMN_NAME
187+
----------+---------------------+-------------------+-------------
188+
WZL | TEST_USER_CONS_COLUMNS | TEST_USER_CONS_COLUMNS_PKEY | ID
189+
WZL | TEST_USER_CONS_COLUMNS | TEST_USER_CONS_COLUMNS_NOT_NULL | NAME
190+
WZL | TEST_USER_CONS_COLUMNS | TEST_USER_CONS_COLUMNS_NOT_NULL | ID
191+
(3 rows)
192+
193+
DROP TABLE

contrib/ivorysql_ora/sql/ora_sysview.sql

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,17 @@ SELECT *
9090
FROM SYS.V$PARAMETER
9191
WHERE NAME IN ('listen_addresses','application_name','archive_command','archive_mode','block_size')
9292
ORDER BY NAME;
93+
94+
-- USER_CONS_COLUMNS
95+
CREATE TABLE TEST_USER_CONS_COLUMNS (
96+
ID INT PRIMARY KEY,
97+
NAME VARCHAR2(30) NOT NULL
98+
);
99+
100+
SELECT OWNER, TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME
101+
FROM SYS.USER_CONS_COLUMNS
102+
WHERE TABLE_NAME = 'TEST_USER_CONS_COLUMNS'
103+
ORDER BY CONSTRAINT_NAME, COLUMN_NAME;
104+
105+
-- Clean
106+
DROP TABLE IF EXISTS TEST_USER_CONS_COLUMNS;

contrib/ivorysql_ora/src/sysview/sysview--1.0.sql

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1273,3 +1273,26 @@ SELECT
12731273
SHORT_DESC::VARCHAR2(255) AS DESCRIPTION
12741274
FROM PG_SETTINGS;
12751275

1276+
/* USER_CONS_COLUMNS */
1277+
CREATE OR REPLACE VIEW SYS.USER_CONS_COLUMNS AS
1278+
SELECT
1279+
SYS.ORA_CASE_TRANS(PG_GET_USERBYID(C.RELOWNER)::VARCHAR2)::VARCHAR2(128) AS OWNER,
1280+
SYS.ORA_CASE_TRANS(C.RELNAME::VARCHAR2)::VARCHAR2(128) AS TABLE_NAME,
1281+
SYS.ORA_CASE_TRANS(CON.CONNAME::VARCHAR2)::VARCHAR2(128) AS CONSTRAINT_NAME,
1282+
SYS.ORA_CASE_TRANS(ATT.ATTNAME::VARCHAR2)::VARCHAR2(128) AS COLUMN_NAME
1283+
FROM
1284+
PG_CONSTRAINT AS CON
1285+
JOIN PG_CLASS AS C
1286+
ON CON.CONRELID = C.OID
1287+
JOIN PG_ATTRIBUTE AS ATT
1288+
ON ATT.ATTRELID = C.OID
1289+
AND ATT.ATTNUM = ANY(CON.CONKEY)
1290+
WHERE
1291+
C.RELOWNER::REGROLE = CURRENT_USER::REGROLE
1292+
AND C.RELNAMESPACE != 'PG_CATALOG'::REGNAMESPACE::OID
1293+
AND C.RELNAMESPACE != 'PG_TOAST'::REGNAMESPACE::OID
1294+
AND C.RELNAMESPACE != 'INFORMATION_SCHEMA'::REGNAMESPACE::OID
1295+
ORDER BY
1296+
TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME
1297+
;
1298+

0 commit comments

Comments
 (0)