|  | 
|  | 1 | +GRANT USAGE ON SCHEMA sys TO PUBLIC; | 
|  | 2 | +SET search_path TO sys; | 
|  | 3 | + | 
|  | 4 | +CREATE table dual (DUMMY pg_catalog.bpchar(1)); | 
|  | 5 | +insert into dual values('X'); | 
|  | 6 | +GRANT SELECT ON dual TO PUBLIC; | 
|  | 7 | + | 
| 1 | 8 | /*  | 
| 2 | 9 |  * function which converts all-uppercase text to all-lowercase text | 
| 3 | 10 |  * and vice versa.  | 
| @@ -960,3 +967,49 @@ ORDER BY | 
| 960 | 967 | 
 | 
| 961 | 968 | /* GRANT SELECT PRIVILEGE TO PUBLIC */ | 
| 962 | 969 | GRANT SELECT ON SYS.USER_ARGUMENTS TO PUBLIC; | 
|  | 970 | + | 
|  | 971 | +/* For sequence VIEWS */ | 
|  | 972 | +CREATE OR REPLACE VIEW SYS.DBA_SEQUENCES AS | 
|  | 973 | +SELECT | 
|  | 974 | +	c.relowner::regrole AS sequence_owner,c.relname AS sequence_name,s.seqmin AS min_value,s.seqmax AS max_value, | 
|  | 975 | +	s.seqincrement AS increment_by,s.seqcycle AS cycle_flag,null AS order_flag,s.seqcache AS cache_size, | 
|  | 976 | +	CASE | 
|  | 977 | +		WHEN has_sequence_privilege(c.oid, 'SELECT,USAGE'::text) | 
|  | 978 | +			THEN pg_sequence_last_value(c.oid::regclass) | 
|  | 979 | +		ELSE NULL::bigint | 
|  | 980 | +	END AS last_number, | 
|  | 981 | +	decode(bitand(s.flags, 16), 16, 'Y', 'N') AS scale_flag, | 
|  | 982 | +	decode(bitand(s.flags, 2048), 2048, 'Y', 'N') AS extend_flag,null AS shared_flag, | 
|  | 983 | +	decode(bitand(s.flags, 64), 64, 'Y', 'N') AS session_flag,null AS keep_value | 
|  | 984 | +	FROM PG_SEQUENCE s,pg_class c where s.seqrelid = c.oid; | 
|  | 985 | + | 
|  | 986 | + | 
|  | 987 | +CREATE OR REPLACE VIEW SYS.ALL_SEQUENCES AS | 
|  | 988 | +SELECT | 
|  | 989 | +	c.relowner::regrole AS sequence_owner,c.relname AS sequence_name,s.seqmin AS min_value,s.seqmax AS max_value, | 
|  | 990 | +	s.seqincrement AS increment_by,s.seqcycle AS cycle_flag,null AS order_flag,s.seqcache AS cache_size, | 
|  | 991 | +	CASE | 
|  | 992 | +		WHEN has_sequence_privilege(c.oid, 'SELECT,USAGE'::text) | 
|  | 993 | +			THEN pg_sequence_last_value(c.oid::regclass) | 
|  | 994 | +		ELSE NULL::bigint | 
|  | 995 | +	END AS last_number, | 
|  | 996 | +	decode(bitand(s.flags, 16), 16, 'Y', 'N') AS scale_flag, | 
|  | 997 | +	decode(bitand(s.flags, 2048), 2048, 'Y', 'N') AS extend_flag,null AS shared_flag, | 
|  | 998 | +	decode(bitand(s.flags, 64), 64, 'Y', 'N') AS session_flag,null AS keep_value | 
|  | 999 | +	FROM PG_SEQUENCE s,pg_class c where s.seqrelid = c.oid; | 
|  | 1000 | + | 
|  | 1001 | + | 
|  | 1002 | +CREATE OR REPLACE VIEW SYS.USER_SEQUENCES AS | 
|  | 1003 | +SELECT | 
|  | 1004 | +	c.relname AS sequence_name,s.seqmin AS min_value,s.seqmax AS max_value, | 
|  | 1005 | +	s.seqincrement AS increment_by,s.seqcycle AS cycle_flag,null AS order_flag,s.seqcache AS cache_size, | 
|  | 1006 | +	CASE | 
|  | 1007 | +		WHEN has_sequence_privilege(c.oid, 'SELECT,USAGE'::text) | 
|  | 1008 | +			THEN pg_sequence_last_value(c.oid::regclass) | 
|  | 1009 | +		ELSE NULL::bigint | 
|  | 1010 | +	END AS last_number, | 
|  | 1011 | +	decode(bitand(s.flags, 16), 16, 'Y', 'N') AS scale_flag, | 
|  | 1012 | +	decode(bitand(s.flags, 2048), 2048, 'Y', 'N') AS extend_flag,null AS shared_flag, | 
|  | 1013 | +	decode(bitand(s.flags, 64), 64, 'Y', 'N') AS session_flag,null AS keep_value | 
|  | 1014 | +	FROM PG_SEQUENCE s,pg_class c where s.seqrelid = c.oid and c.relowner::regrole = current_user::regrole; | 
|  | 1015 | + | 
0 commit comments