Remove Users dependency + add MATERIALIZE hint

This commit is contained in:
Jan Kvetina 2022-01-25 17:19:39 +01:00
parent 9f0e6054a0
commit b0dff8a0f6
25 changed files with 70 additions and 89 deletions

View File

@ -1,9 +1,8 @@
CREATE OR REPLACE VIEW dashboard_overview AS CREATE OR REPLACE VIEW dashboard_overview AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_app_id() AS app_id app.get_app_id() AS app_id
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
s AS ( s AS (
SELECT SELECT

View File

@ -1,12 +1,11 @@
CREATE OR REPLACE VIEW events_chart AS CREATE OR REPLACE VIEW events_chart AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_app_id() AS app_id, app.get_app_id() AS app_id,
app.get_item('$EVENT_ID') AS event_id, app.get_number_item('$EVENT_ID') AS event_id,
app.get_item('$USER_ID') AS user_id, app.get_item('$USER_ID') AS user_id,
TRUNC(app.get_date_item('G_TODAY')) AS today TRUNC(app.get_date_item('G_TODAY')) AS today
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
z AS ( z AS (
SELECT SELECT

View File

@ -1,10 +1,9 @@
CREATE OR REPLACE VIEW nav_badges AS CREATE OR REPLACE VIEW nav_badges AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_app_id() AS app_id, app.get_app_id() AS app_id,
app.is_developer_y() AS is_developer app.is_developer_y() AS is_developer
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
) )
SELECT -- today errors on dashboard SELECT -- today errors on dashboard
900 AS page_id, 900 AS page_id,

View File

@ -1,11 +1,10 @@
CREATE OR REPLACE VIEW nav_overview AS CREATE OR REPLACE VIEW nav_overview AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_page_id() AS page_id, app.get_page_id() AS page_id,
app.get_app_id() AS app_id, app.get_app_id() AS app_id,
app.get_core_app_id() AS core_app_id app.get_core_app_id() AS core_app_id
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
t AS ( t AS (
SELECT SELECT

View File

@ -1,6 +1,6 @@
CREATE OR REPLACE FORCE VIEW nav_top AS CREATE OR REPLACE FORCE VIEW nav_top AS
WITH curr AS ( WITH curr AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_app_id() AS app_id, app.get_app_id() AS app_id,
app.get_page_id() AS page_id, app.get_page_id() AS page_id,
app.get_page_parent() AS parent_id, app.get_page_parent() AS parent_id,
@ -8,8 +8,7 @@ WITH curr AS (
app.get_page_group() AS page_group, app.get_page_group() AS page_group,
app.get_user_id() AS user_id, app.get_user_id() AS user_id,
app.get_user_name() AS user_name app.get_user_name() AS user_name
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
j AS ( j AS (
-- get javascript targets hidden in page item -- get javascript targets hidden in page item

View File

@ -1,9 +1,8 @@
CREATE OR REPLACE VIEW obj_columns AS CREATE OR REPLACE VIEW obj_columns AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_item('$TABLE_NAME') AS table_name app.get_item('$TABLE_NAME') AS table_name
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
c AS ( c AS (
SELECT SELECT

View File

@ -1,9 +1,8 @@
CREATE OR REPLACE VIEW obj_constraints AS CREATE OR REPLACE VIEW obj_constraints AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_item('$TABLE_NAME') AS table_name app.get_item('$TABLE_NAME') AS table_name
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
n AS ( n AS (
SELECT XMLTYPE(DBMS_XMLGEN.GETXML('SELECT c.constraint_name AS name, c.search_condition AS text SELECT XMLTYPE(DBMS_XMLGEN.GETXML('SELECT c.constraint_name AS name, c.search_condition AS text

View File

@ -1,9 +1,8 @@
CREATE OR REPLACE VIEW obj_constraints_fix_dt1 AS CREATE OR REPLACE VIEW obj_constraints_fix_dt1 AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_item('$TABLE_NAME') AS table_name app.get_item('$TABLE_NAME') AS table_name
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
s AS ( s AS (
SELECT SELECT

View File

@ -1,9 +1,8 @@
CREATE OR REPLACE VIEW obj_constraints_fix_dt2 AS CREATE OR REPLACE VIEW obj_constraints_fix_dt2 AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_item('$TABLE_NAME') AS table_name app.get_item('$TABLE_NAME') AS table_name
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
s AS ( s AS (
SELECT SELECT

View File

@ -1,9 +1,8 @@
CREATE OR REPLACE VIEW obj_indexes AS CREATE OR REPLACE VIEW obj_indexes AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_item('$TABLE_NAME') AS table_name app.get_item('$TABLE_NAME') AS table_name
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
) )
SELECT SELECT
i.table_name, i.table_name,

View File

@ -1,9 +1,8 @@
CREATE OR REPLACE VIEW obj_indexes_missing AS CREATE OR REPLACE VIEW obj_indexes_missing AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_item('$TABLE_NAME') AS table_name app.get_item('$TABLE_NAME') AS table_name
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
f AS ( f AS (
SELECT SELECT

View File

@ -1,10 +1,9 @@
CREATE OR REPLACE VIEW obj_modules AS CREATE OR REPLACE VIEW obj_modules AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_item('$PACKAGE_NAME') AS package_name, app.get_item('$PACKAGE_NAME') AS package_name,
app.get_item('$MODULE_TYPE') AS module_type app.get_item('$MODULE_TYPE') AS module_type
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
p AS ( p AS (
SELECT SELECT

View File

@ -1,9 +1,8 @@
CREATE OR REPLACE VIEW obj_packages AS CREATE OR REPLACE VIEW obj_packages AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_item('$PACKAGE_NAME') AS package_name app.get_item('$PACKAGE_NAME') AS package_name
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
s AS ( s AS (
SELECT SELECT

View File

@ -1,9 +1,8 @@
CREATE OR REPLACE VIEW obj_partitions AS CREATE OR REPLACE VIEW obj_partitions AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_item('$TABLE_NAME') AS table_name app.get_item('$TABLE_NAME') AS table_name
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
p AS ( p AS (
SELECT SELECT

View File

@ -1,13 +1,12 @@
CREATE OR REPLACE VIEW obj_tables AS CREATE OR REPLACE VIEW obj_tables AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_item('$TABLE_NAME') AS table_name app.get_item('$TABLE_NAME') AS table_name
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
s AS ( s AS (
-- columns count -- columns count
SELECT /* materialize */ SELECT /*+ MATERIALIZE */
c.table_name, c.table_name,
COUNT(*) AS count_cols COUNT(*) AS count_cols
FROM user_tab_cols c FROM user_tab_cols c
@ -17,7 +16,7 @@ s AS (
), ),
c AS ( c AS (
-- constraints overview -- constraints overview
SELECT /* materialize */ SELECT /*+ MATERIALIZE */
c.table_name, c.table_name,
NULLIF(SUM(CASE WHEN c.constraint_type = 'P' THEN 1 ELSE 0 END), 0) AS count_pk, NULLIF(SUM(CASE WHEN c.constraint_type = 'P' THEN 1 ELSE 0 END), 0) AS count_pk,
NULLIF(SUM(CASE WHEN c.constraint_type = 'U' THEN 1 ELSE 0 END), 0) AS count_uq, NULLIF(SUM(CASE WHEN c.constraint_type = 'U' THEN 1 ELSE 0 END), 0) AS count_uq,
@ -30,7 +29,7 @@ c AS (
), ),
i AS ( i AS (
-- indexes overview -- indexes overview
SELECT /* materialize */ SELECT /*+ MATERIALIZE */
i.table_name, i.table_name,
COUNT(i.table_name) AS count_ix COUNT(i.table_name) AS count_ix
FROM user_indexes i FROM user_indexes i
@ -44,7 +43,7 @@ i AS (
), ),
g AS ( g AS (
-- triggers overview -- triggers overview
SELECT /* materialize */ SELECT /*+ MATERIALIZE */
g.table_name, g.table_name,
COUNT(g.table_name) AS count_trg COUNT(g.table_name) AS count_trg
FROM user_triggers g FROM user_triggers g
@ -54,7 +53,7 @@ g AS (
), ),
p AS ( p AS (
-- partitions count -- partitions count
SELECT /* materialize */ SELECT /*+ MATERIALIZE */
p.table_name, p.table_name,
COUNT(*) AS partitions COUNT(*) AS partitions
FROM user_tab_partitions p FROM user_tab_partitions p

View File

@ -1,9 +1,8 @@
CREATE OR REPLACE VIEW obj_tables_ref_down AS CREATE OR REPLACE VIEW obj_tables_ref_down AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_item('$TABLE_NAME') AS table_name app.get_item('$TABLE_NAME') AS table_name
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
t AS ( t AS (
SELECT SELECT

View File

@ -1,10 +1,10 @@
CREATE OR REPLACE VIEW obj_tables_ref_objects AS CREATE OR REPLACE VIEW obj_tables_ref_objects AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_app_id() AS app_id, app.get_app_id() AS app_id,
app.get_owner() AS owner_,
app.get_item('$TABLE_NAME') AS table_name app.get_item('$TABLE_NAME') AS table_name
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
) )
SELECT SELECT
'<span style="margin-left: 2rem;">' || d.name || '</SPAN>' AS ref_name, '<span style="margin-left: 2rem;">' || d.name || '</SPAN>' AS ref_name,
@ -17,7 +17,8 @@ SELECT
ELSE NULL ELSE NULL
END AS ref_link END AS ref_link
FROM user_dependencies d FROM user_dependencies d
WHERE d.referenced_owner = app.get_owner() JOIN x
AND d.referenced_name = (SELECT x.table_name FROM x) ON x.owner_ = d.referenced_owner
AND x.table_name = d.referenced_name
GROUP BY d.name; GROUP BY d.name;

View File

@ -1,9 +1,8 @@
CREATE OR REPLACE VIEW obj_tables_ref_up AS CREATE OR REPLACE VIEW obj_tables_ref_up AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_item('$TABLE_NAME') AS table_name app.get_item('$TABLE_NAME') AS table_name
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
t AS ( t AS (
SELECT SELECT

View File

@ -1,12 +1,11 @@
CREATE OR REPLACE VIEW obj_triggers AS CREATE OR REPLACE VIEW obj_triggers AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_app_id() AS app_id, app.get_app_id() AS app_id,
app.get_item('$TABLE_NAME') AS table_name, app.get_item('$TABLE_NAME') AS table_name,
app.get_item('$TRIGGER_NAME') AS trigger_name, app.get_item('$TRIGGER_NAME') AS trigger_name,
app.get_date_item('G_TODAY') AS today app.get_date_item('G_TODAY') AS today
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
r AS ( r AS (
SELECT /* materialize */ SELECT /* materialize */

View File

@ -1,10 +1,9 @@
CREATE OR REPLACE VIEW obj_views AS CREATE OR REPLACE VIEW obj_views AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_app_id() AS app_id, app.get_app_id() AS app_id,
app.get_item('$VIEW_NAME') AS view_name app.get_item('$VIEW_NAME') AS view_name
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
r AS ( r AS (
SELECT SELECT

View File

@ -1,11 +1,10 @@
CREATE OR REPLACE VIEW roles_cards AS CREATE OR REPLACE VIEW roles_cards AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
u.user_id,
app.get_app_id() AS app_id, app.get_app_id() AS app_id,
app.get_user_id() AS user_id,
app.is_developer_y() AS is_developer app.is_developer_y() AS is_developer
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
) )
SELECT SELECT
r.role_id, r.role_id,

View File

@ -1,12 +1,11 @@
CREATE OR REPLACE VIEW scheduler_details AS CREATE OR REPLACE VIEW scheduler_details AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_app_id() AS app_id, app.get_app_id() AS app_id,
app.get_date_item('G_TODAY') AS today, app.get_date_item('G_TODAY') AS today,
app.get_item('$JOB_NAME') AS job_name, app.get_item('$JOB_NAME') AS job_name,
app.get_item('$JOB_STATUS') AS job_status app.get_item('$JOB_STATUS') AS job_status
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
) )
SELECT SELECT
REGEXP_SUBSTR(d.job_name, '^([^#]+)#(\d+)$', 1, 1, NULL, 2) AS log_id, REGEXP_SUBSTR(d.job_name, '^([^#]+)#(\d+)$', 1, 1, NULL, 2) AS log_id,

View File

@ -1,12 +1,11 @@
CREATE OR REPLACE VIEW sessions_chart AS CREATE OR REPLACE VIEW sessions_chart AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_app_id() AS app_id, app.get_app_id() AS app_id,
app.get_item('$USER_ID') AS user_id, app.get_item('$USER_ID') AS user_id,
app.get_date_item('G_TODAY') AS today, app.get_date_item('G_TODAY') AS today,
10 AS buckets 10 AS buckets
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
z AS ( z AS (
SELECT SELECT

View File

@ -1,12 +1,11 @@
CREATE OR REPLACE VIEW settings_overview AS CREATE OR REPLACE VIEW settings_overview AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
UPPER('SETT') AS package_name, -- app_actions spec UPPER('SETT') AS package_name, -- app_actions spec
UPPER('GET_') AS prefix, UPPER('GET_') AS prefix,
app.get_item('$SETTING_NAME') AS setting_name, app.get_item('$SETTING_NAME') AS setting_name,
app.get_app_id() AS app_id app.get_app_id() AS app_id
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
p AS ( p AS (
SELECT p.procedure_name, a.data_type SELECT p.procedure_name, a.data_type

View File

@ -1,13 +1,14 @@
CREATE OR REPLACE VIEW users_overview AS CREATE OR REPLACE VIEW users_overview AS
WITH x AS ( WITH x AS (
SELECT SELECT /*+ MATERIALIZE */
app.get_app_id() AS app_id, app.get_app_id() AS app_id,
app.get_user_id() AS user_id, app.get_user_id() AS user_id,
app.get_item('$USER_ID') AS filter_user_id,
app.get_item('$ROLE_ID') AS filter_role_id,
-- --
TRUNC(NVL(app.get_date_item('G_TODAY'), SYSDATE)) AS today, TRUNC(NVL(app.get_date_item('G_TODAY'), SYSDATE)) AS today,
CAST(TRUNC(NVL(app.get_date_item('G_TODAY'), SYSDATE)) AS TIMESTAMP) AS today_ts CAST(TRUNC(NVL(app.get_date_item('G_TODAY'), SYSDATE)) AS TIMESTAMP) AS today_ts
FROM users u FROM DUAL
WHERE u.user_id = app.get_user_id()
), ),
s AS ( s AS (
SELECT SELECT
@ -75,18 +76,20 @@ SELECT
u.updated_by, u.updated_by,
u.updated_at u.updated_at
FROM users u FROM users u
CROSS JOIN x
LEFT JOIN s ON s.user_id = u.user_id LEFT JOIN s ON s.user_id = u.user_id
LEFT JOIN l ON l.user_id = u.user_id LEFT JOIN l ON l.user_id = u.user_id
LEFT JOIN r ON r.user_id = u.user_id LEFT JOIN r ON r.user_id = u.user_id
LEFT JOIN b ON b.user_id = u.user_id LEFT JOIN b ON b.user_id = u.user_id
WHERE u.user_id = NVL(app.get_item('$USER_ID'), u.user_id) --
WHERE u.user_id = NVL(x.filter_user_id, u.user_id)
AND ( AND (
u.user_id IN ( u.user_id IN (
SELECT r.user_id SELECT r.user_id
FROM user_roles r FROM user_roles r
WHERE r.role_id = app.get_item('$ROLE_ID') WHERE r.role_id = x.filter_role_id
) )
OR app.get_item('$ROLE_ID') IS NULL OR x.filter_role_id IS NULL
); );
-- --
COMMENT ON TABLE users_overview IS '[CORE - DASHBOARD] Users'; COMMENT ON TABLE users_overview IS '[CORE - DASHBOARD] Users';