Database edit tables updates and fixes, remove all zero size index files

This commit is contained in:
Clemens Schwaighofer
2020-01-29 13:50:25 +09:00
parent 719d82d4ee
commit d445bc3526
32 changed files with 55 additions and 30 deletions

View File

@@ -4,7 +4,7 @@ function/set_generic.sql
function/random_string.sql function/random_string.sql
function/set_edit_generic.sql function/set_edit_generic.sql
function/edit_set_access_uid.sql function/edit_set_access_uid.sql
function/edit_log_insert_trigger.sql function/edit_log_partition_trigger.sql
# generic tables # generic tables
table/edit_temp_files.sql table/edit_temp_files.sql
table/edit_generic.sql table/edit_generic.sql

View File

@@ -39,7 +39,7 @@ do
done; done;
# copy the trigger template to the target # copy the trigger template to the target
for path in $schema; for path in $schemas;
do do
if [ $sqltype ]; if [ $sqltype ];
then then

View File

@@ -1,3 +1,10 @@
-- AUTHOR: Clemens Schwaighofer
-- DATE: 2018-07-17
-- DESCRIPTION:
-- partition the edit_log table by year
-- auto creates table if missing, if failure writes to overflow table
-- HISTORY:
CREATE OR REPLACE FUNCTION edit_log_insert_trigger () CREATE OR REPLACE FUNCTION edit_log_insert_trigger ()
RETURNS TRIGGER AS RETURNS TRIGGER AS
$$ $$
@@ -6,20 +13,38 @@ DECLARE
end_date DATE; end_date DATE;
timeformat TEXT := 'YYYY'; timeformat TEXT := 'YYYY';
selector TEXT := 'year'; selector TEXT := 'year';
base_table TEXT := 'edit_log_';
_interval INTERVAL; _interval INTERVAL;
_interval_next INTERVAL;
table_name TEXT; table_name TEXT;
BEGIN BEGIN
-- get year and month from edit_log date so we can build the target edit_log table
-- move interval
_interval := '1 ' || selector;
-- current table name
table_name := 'edit_log_' || to_char(NEW.event_date, timeformat);
-- we are in valid start time area -- we are in valid start time area
IF (NEW.event_date >= start_date) THEN IF (NEW.event_date >= start_date) THEN
-- move interval
_interval := '1 ' || selector;
-- current table name
table_name := base_table || to_char(NEW.event_date, timeformat);
BEGIN BEGIN
EXECUTE 'INSERT INTO ' || quote_ident(table_name) || ' SELECT ($1).*' USING NEW; EXECUTE 'INSERT INTO ' || quote_ident(table_name) || ' SELECT ($1).*' USING NEW;
-- check if next month table exists
table_name := base_table || to_char((SELECT NEW.event_date + _interval)::DATE, timeformat);
-- RAISE NOTICE 'SEARCH NEXT: %', table_name;
IF (SELECT to_regclass(table_name)) IS NULL THEN
-- move outer interval
_interval_next := '2 ' || selector;
-- move inner interval same
start_date := date_trunc(selector, NEW.event_date + _interval);
end_date := date_trunc(selector, NEW.event_date + _interval_next);
-- RAISE NOTICE 'CREATE NEXT: %', table_name;
-- create table
EXECUTE 'CREATE TABLE IF NOT EXISTS ' || quote_ident(table_name) || ' ( CHECK ( event_date >= ' || quote_literal(start_date) || ' AND event_date < ' || quote_literal(end_date) || ' ) ) INHERITS (edit_log)';
-- create all indexes and triggers
EXECUTE 'ALTER TABLE ' || quote_ident(table_name) || ' ADD PRIMARY KEY (edit_log_id)';
-- FK constraints
EXECUTE 'ALTER TABLE ' || quote_ident(table_name) || ' ADD CONSTRAINT fk_' || quote_ident(table_name) || '_euid_fkey FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE CASCADE';
-- generic trigger
EXECUTE 'CREATE TRIGGER trg_' || quote_ident(table_name) || ' BEFORE INSERT OR UPDATE ON ' || quote_ident(table_name) || ' FOR EACH ROW EXECUTE PROCEDURE set_edit_generic()';
END IF;
-- if insert failed because of missing table, create new below -- if insert failed because of missing table, create new below
EXCEPTION EXCEPTION
WHEN undefined_table THEN WHEN undefined_table THEN

View File

@@ -12,7 +12,7 @@ CREATE TABLE edit_group (
edit_access_right_id INT NOT NULL, edit_access_right_id INT NOT NULL,
enabled SMALLINT NOT NULL DEFAULT 0, enabled SMALLINT NOT NULL DEFAULT 0,
deleted SMALLINT DEFAULT 0, deleted SMALLINT DEFAULT 0,
uid VARCHAR uid VARCHAR,
name VARCHAR, name VARCHAR,
additional_acl JSONB, additional_acl JSONB,
FOREIGN KEY (edit_scheme_id) REFERENCES edit_scheme (edit_scheme_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (edit_scheme_id) REFERENCES edit_scheme (edit_scheme_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,

View File

@@ -10,9 +10,9 @@
CREATE TABLE edit_language ( CREATE TABLE edit_language (
edit_language_id SERIAL PRIMARY KEY, edit_language_id SERIAL PRIMARY KEY,
enabled SMALLINT NOT NULL DEFAULT 0, enabled SMALLINT NOT NULL DEFAULT 0,
lang_default SMALLINT NOT NULL DEFAULT 0 lang_default SMALLINT NOT NULL DEFAULT 0,
long_name VARCHAR, long_name VARCHAR,
short_name VARCHAR, short_name VARCHAR,
iso_name VARCHAR, iso_name VARCHAR,
order_number INT, order_number INT
) INHERITS (edit_generic) WITHOUT OIDS; ) INHERITS (edit_generic) WITHOUT OIDS;

View File

@@ -18,5 +18,5 @@ CREATE TABLE edit_page (
popup_x SMALLINT, popup_x SMALLINT,
popup_y SMALLINT, popup_y SMALLINT,
hostname VARCHAR, hostname VARCHAR,
FOREIGN KEY (content_alias_edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY (content_alias_edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE
) INHERITS (edit_generic) WITHOUT OIDS; ) INHERITS (edit_generic) WITHOUT OIDS;

View File

@@ -1,9 +1,9 @@
DROP TRIGGER trg_edit_access ON edit_access; DROP TRIGGER IF EXISTS trg_edit_access ON edit_access;
CREATE TRIGGER trg_edit_access CREATE TRIGGER trg_edit_access
BEFORE INSERT OR UPDATE ON edit_access BEFORE INSERT OR UPDATE ON edit_access
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic(); FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
DROP TRIGGER trg_set_edit_access_uid ON edit_access; DROP TRIGGER IF EXISTS trg_set_edit_access_uid ON edit_access;
CREATE TRIGGER trg_set_edit_access_uid CREATE TRIGGER trg_set_edit_access_uid
BEFORE INSERT OR UPDATE ON edit_access BEFORE INSERT OR UPDATE ON edit_access
FOR EACH ROW EXECUTE PROCEDURE set_edit_access_uid(); FOR EACH ROW EXECUTE PROCEDURE set_edit_access_uid();

View File

@@ -1,4 +1,4 @@
DROP TRIGGER trg_edit_access_data ON edit_access_data; DROP TRIGGER IF EXISTS trg_edit_access_data ON edit_access_data;
CREATE TRIGGER trg_edit_access_data CREATE TRIGGER trg_edit_access_data
BEFORE INSERT OR UPDATE ON edit_access_data BEFORE INSERT OR UPDATE ON edit_access_data
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic(); FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();

View File

@@ -1,4 +1,4 @@
DROP TRIGGER trg_edit_access_right ON edit_access_right; DROP TRIGGER IF EXISTS trg_edit_access_right ON edit_access_right;
CREATE TRIGGER trg_edit_access_right CREATE TRIGGER trg_edit_access_right
BEFORE INSERT OR UPDATE ON edit_access_right BEFORE INSERT OR UPDATE ON edit_access_right
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic(); FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();

View File

@@ -1,4 +1,4 @@
DROP TRIGGER trg_edit_access_user ON edit_access_user; DROP TRIGGER IF EXISTS trg_edit_access_user ON edit_access_user;
CREATE TRIGGER trg_edit_access_user CREATE TRIGGER trg_edit_access_user
BEFORE INSERT OR UPDATE ON edit_access_user BEFORE INSERT OR UPDATE ON edit_access_user
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic(); FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();

View File

@@ -1,4 +1,4 @@
DROP TRIGGER trg_edit_group ON edit_group; DROP TRIGGER IF EXISTS trg_edit_group ON edit_group;
CREATE TRIGGER trg_edit_group CREATE TRIGGER trg_edit_group
BEFORE INSERT OR UPDATE ON edit_group BEFORE INSERT OR UPDATE ON edit_group
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic(); FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();

View File

@@ -1,4 +1,4 @@
DROP TRIGGER trg_edit_language ON edit_language; DROP TRIGGER IF EXISTS trg_edit_language ON edit_language;
CREATE TRIGGER trg_edit_language CREATE TRIGGER trg_edit_language
BEFORE INSERT OR UPDATE ON edit_language BEFORE INSERT OR UPDATE ON edit_language
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic(); FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();

View File

@@ -1,9 +1,9 @@
DROP TRIGGER trg_edit_log ON edit_log; DROP TRIGGER IF EXISTS trg_edit_log ON edit_log;
CREATE TRIGGER trg_edit_log CREATE TRIGGER trg_edit_log
BEFORE INSERT OR UPDATE ON edit_log BEFORE INSERT OR UPDATE ON edit_log
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic(); FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
DROP TRIGGER trg_edit_log_insert_partition ON edit_log; DROP TRIGGER IF EXISTS trg_edit_log_insert_partition ON edit_log;
CREATE TRIGGER trg_edit_log_insert_partition CREATE TRIGGER trg_edit_log_insert_partition
BEFORE INSERT OR UPDATE ON edit_log BEFORE INSERT OR UPDATE ON edit_log
FOR EACH ROW EXECUTE PROCEDURE edit_log_insert_trigger(); FOR EACH ROW EXECUTE PROCEDURE edit_log_insert_trigger();

View File

@@ -1,4 +1,4 @@
DROP TRIGGER trg_edit_menu_group ON edit_menu_group; DROP TRIGGER IF EXISTS trg_edit_menu_group ON edit_menu_group;
CREATE TRIGGER trg_edit_menu_group CREATE TRIGGER trg_edit_menu_group
BEFORE INSERT OR UPDATE ON edit_menu_group BEFORE INSERT OR UPDATE ON edit_menu_group
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic(); FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();

View File

@@ -1,4 +1,4 @@
DROP TRIGGER trg_edit_page ON edit_page; DROP TRIGGER IF EXISTS trg_edit_page ON edit_page;
CREATE TRIGGER trg_edit_page CREATE TRIGGER trg_edit_page
BEFORE INSERT OR UPDATE ON edit_page BEFORE INSERT OR UPDATE ON edit_page
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic(); FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();

View File

@@ -1,4 +1,4 @@
DROP TRIGGER trg_edit_page_access ON edit_page_access; DROP TRIGGER IF EXISTS trg_edit_page_access ON edit_page_access;
CREATE TRIGGER trg_edit_page_access CREATE TRIGGER trg_edit_page_access
BEFORE INSERT OR UPDATE ON edit_page_access BEFORE INSERT OR UPDATE ON edit_page_access
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic(); FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();

View File

@@ -1,4 +1,4 @@
DROP TRIGGER trg_edit_page_content ON edit_page_content; DROP TRIGGER IF EXISTS trg_edit_page_content ON edit_page_content;
CREATE TRIGGER trg_edit_page_content CREATE TRIGGER trg_edit_page_content
BEFORE INSERT OR UPDATE ON edit_page_content BEFORE INSERT OR UPDATE ON edit_page_content
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic(); FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();

View File

@@ -1,4 +1,4 @@
DROP TRIGGER trg_edit_query_string ON edit_query_string; DROP TRIGGER IF EXISTS trg_edit_query_string ON edit_query_string;
CREATE TRIGGER trg_edit_query_string CREATE TRIGGER trg_edit_query_string
BEFORE INSERT OR UPDATE ON edit_query_string BEFORE INSERT OR UPDATE ON edit_query_string
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic(); FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();

View File

@@ -1,4 +1,4 @@
DROP TRIGGER trg_edit_scheme ON edit_scheme; DROP TRIGGER IF EXISTS trg_edit_scheme ON edit_scheme;
CREATE TRIGGER trg_edit_scheme CREATE TRIGGER trg_edit_scheme
BEFORE INSERT OR UPDATE ON edit_scheme BEFORE INSERT OR UPDATE ON edit_scheme
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic(); FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();

View File

@@ -1,4 +1,4 @@
DROP TRIGGER trg_edit_user ON edit_user; DROP TRIGGER IF EXISTS trg_edit_user ON edit_user;
CREATE TRIGGER trg_edit_user CREATE TRIGGER trg_edit_user
BEFORE INSERT OR UPDATE ON edit_user BEFORE INSERT OR UPDATE ON edit_user
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic(); FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();

View File

@@ -1,4 +1,4 @@
DROP TRIGGER trg_edit_visible_group ON edit_visible_group; DROP TRIGGER IF EXISTS trg_edit_visible_group ON edit_visible_group;
CREATE TRIGGER trg_edit_visible_group CREATE TRIGGER trg_edit_visible_group
BEFORE INSERT OR UPDATE ON edit_visible_group BEFORE INSERT OR UPDATE ON edit_visible_group
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic(); FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();

View File

View File

View File