From 4709c2c24f935db2f73c522454749e2305b9b153 Mon Sep 17 00:00:00 2001 From: cdujeu Date: Sat, 20 Sep 2014 17:07:29 +0200 Subject: [PATCH] Manual SQL scripts for linux package updates --- dist/scripts/misc/5.2.3-5.3.3.mysql | 56 +++++++++++++++++++ dist/scripts/misc/5.2.3-5.3.3.pgsql | 81 ++++++++++++++++++++++++++++ dist/scripts/misc/5.2.3-5.3.3.sqlite | 40 ++++++++++++++ 3 files changed, 177 insertions(+) create mode 100644 dist/scripts/misc/5.2.3-5.3.3.mysql create mode 100644 dist/scripts/misc/5.2.3-5.3.3.pgsql create mode 100644 dist/scripts/misc/5.2.3-5.3.3.sqlite diff --git a/dist/scripts/misc/5.2.3-5.3.3.mysql b/dist/scripts/misc/5.2.3-5.3.3.mysql new file mode 100644 index 0000000000..dd90769c8f --- /dev/null +++ b/dist/scripts/misc/5.2.3-5.3.3.mysql @@ -0,0 +1,56 @@ +ALTER TABLE ajxp_user_rights ADD INDEX (login), ADD INDEX (repo_uuid); +/* SEPARATOR */ +CREATE TABLE IF NOT EXISTS `ajxp_changes` ( + `seq` int(20) NOT NULL AUTO_INCREMENT, + `repository_identifier` TEXT NOT NULL, + `node_id` bigint(20) NOT NULL, + `type` enum('create','delete','path','content') NOT NULL, + `source` text NOT NULL, + `target` text NOT NULL, + PRIMARY KEY (`seq`), + KEY `node_id` (`node_id`,`type`) +); +/* SEPARATOR */ +CREATE TABLE IF NOT EXISTS `ajxp_index` ( + `node_id` int(20) NOT NULL AUTO_INCREMENT, + `node_path` text NOT NULL, + `bytesize` bigint(20) NOT NULL, + `md5` varchar(32) NOT NULL, + `mtime` int(11) NOT NULL, + `repository_identifier` text NOT NULL, + PRIMARY KEY (`node_id`) +); +/* SEPARATOR */ +DROP TRIGGER IF EXISTS `LOG_DELETE`; +/* SEPARATOR */ +CREATE TRIGGER `LOG_DELETE` AFTER DELETE ON `ajxp_index` +FOR EACH ROW INSERT INTO ajxp_changes (repository_identifier, node_id,source,target,type) + VALUES (old.repository_identifier, old.node_id, old.node_path, 'NULL', 'delete'); +/* SEPARATOR */ +DROP TRIGGER IF EXISTS `LOG_INSERT`; +/* SEPARATOR */ +CREATE TRIGGER `LOG_INSERT` AFTER INSERT ON `ajxp_index` +FOR EACH ROW INSERT INTO ajxp_changes (repository_identifier, node_id,source,target,type) + VALUES (new.repository_identifier, new.node_id, 'NULL', new.node_path, 'create'); +/* SEPARATOR */ +DROP TRIGGER IF EXISTS `LOG_UPDATE`; +/* SEPARATOR */ +CREATE TRIGGER `LOG_UPDATE` AFTER UPDATE ON `ajxp_index` +FOR EACH ROW INSERT INTO ajxp_changes (repository_identifier, node_id,source,target,type) + VALUES (new.repository_identifier, new.node_id, old.node_path, new.node_path, CASE old.node_path = new.node_path WHEN true THEN 'content' ELSE 'path' END); +/* SEPARATOR */ +CREATE TABLE `ajxp_log.bak` LIKE `ajxp_log`; +/* SEPARATOR */ +INSERT `ajxp_log.bak` SELECT * FROM `ajxp_log`; +/* SEPARATOR */ +CREATE TABLE `ajxp_log2` LIKE `ajxp_log`; +/* SEPARATOR */ +INSERT `ajxp_log2` SELECT * FROM `ajxp_log`; +/* SEPARATOR */ +ALTER TABLE `ajxp_log2` ADD `source` VARCHAR( 255 ) NOT NULL AFTER `user` , ADD INDEX ( `source` ) ; +/* SEPARATOR */ +UPDATE `ajxp_log2` INNER JOIN ajxp_log ON ajxp_log2.id=ajxp_log.id SET ajxp_log2.source = ajxp_log.message, ajxp_log2.message = SUBSTRING_INDEX(SUBSTRING_INDEX(ajxp_log.params, '\t', 1), '\t', -1),ajxp_log2.params = SUBSTRING_INDEX(SUBSTRING_INDEX(ajxp_log.params, '\t', 2), '\t', -1); +/* SEPARATOR */ +DROP TABLE `ajxp_log`; +/* SEPARATOR */ +RENAME TABLE `ajxp_log2` TO `ajxp_log`; diff --git a/dist/scripts/misc/5.2.3-5.3.3.pgsql b/dist/scripts/misc/5.2.3-5.3.3.pgsql new file mode 100644 index 0000000000..41883d7404 --- /dev/null +++ b/dist/scripts/misc/5.2.3-5.3.3.pgsql @@ -0,0 +1,81 @@ +CREATE INDEX ajxp_user_rights_i ON ajxp_user_rights(repo_uuid); +/* SEPARATOR */ +CREATE INDEX ajxp_user_rights_k ON ajxp_user_rights(login); + +/* SEPARATOR */ +CREATE TYPE ajxp_change_type AS ENUM ('create','delete','path','content'); +/* SEPARATOR */ +CREATE TABLE ajxp_changes ( + seq BIGSERIAL, + repository_identifier TEXT NOT NULL, + node_id INTEGER NOT NULL, + type ajxp_change_type NOT NULL, + source text NOT NULL, + target text NOT NULL, + constraint pk primary key(seq) +); +/* SEPARATOR */ +CREATE INDEX ajxp_changes_node_id ON ajxp_changes (node_id); +/* SEPARATOR */ +CREATE INDEX ajxp_changes_repo_id ON ajxp_changes (repository_identifier); +/* SEPARATOR */ +CREATE INDEX ajxp_changes_type ON ajxp_changes (type); +/* SEPARATOR */ +CREATE TABLE ajxp_index ( + node_id BIGSERIAL , + node_path text NOT NULL, + bytesize INTEGER NOT NULL, + md5 varchar(32) NOT NULL, + mtime INTEGER NOT NULL, + repository_identifier text NOT NULL, + PRIMARY KEY (node_id) +); +/* SEPARATOR */ +CREATE INDEX ajxp_index_repo_id ON ajxp_index (repository_identifier); +/* SEPARATOR */ +CREATE INDEX ajxp_index_md5 ON ajxp_index (md5); + +/* SEPARATOR */ +CREATE TABLE ajxp_log2 AS TABLE ajxp_log; +/* SEPARATOR */ +ALTER TABLE ajxp_log2 ADD source VARCHAR( 255 ); +/* SEPARATOR */ +ALTER TABLE ajxp_log2 ADD PRIMARY KEY (id); +/* SEPARATOR */ +UPDATE ajxp_log2 SET source = ajxp_log.message, message = split_part(ajxp_log.params,'\t', 1), params = split_part(ajxp_log.params,'\t', 2) FROM ajxp_log WHERE ajxp_log2.id = ajxp_log.id; +/* SEPARATOR */ +DROP TABLE ajxp_log; +/* SEPARATOR */ +ALTER TABLE ajxp_log2 RENAME TO ajxp_log; + +CREATE FUNCTION ajxp_index_delete() RETURNS trigger AS $ajxp_index_delete$ +BEGIN + INSERT INTO ajxp_changes (repository_identifier, node_id,source,target,type) + VALUES (OLD.repository_identifier, OLD.node_id, OLD.node_path, 'NULL', 'delete'); + RETURN NULL; +END; +$ajxp_index_delete$ LANGUAGE plpgsql; + +CREATE FUNCTION ajxp_index_insert() RETURNS trigger AS $ajxp_index_insert$ +BEGIN + INSERT INTO ajxp_changes (repository_identifier, node_id,source,target,type) + VALUES (NEW.repository_identifier, NEW.node_id, 'NULL', NEW.node_path, 'create'); + RETURN NEW; +END; +$ajxp_index_insert$ LANGUAGE plpgsql; + +CREATE FUNCTION ajxp_index_update() RETURNS trigger AS $ajxp_index_update$ +BEGIN + IF OLD.node_path = NEW.node_path THEN + INSERT INTO ajxp_changes (repository_identifier, node_id,source,target,type) + VALUES (NEW.repository_identifier, NEW.node_id, OLD.node_path, NEW.node_path, 'content'); + ELSE + INSERT INTO ajxp_changes (repository_identifier, node_id,source,target,type) + VALUES (NEW.repository_identifier, NEW.node_id, OLD.node_path, NEW.node_path, 'path'); + END IF; + RETURN NEW; +END; +$ajxp_index_update$ LANGUAGE plpgsql; +CREATE TRIGGER LOG_DELETE AFTER DELETE ON ajxp_index FOR EACH ROW EXECUTE PROCEDURE ajxp_index_delete(); +CREATE TRIGGER LOG_INSERT AFTER INSERT ON ajxp_index FOR EACH ROW EXECUTE PROCEDURE ajxp_index_insert(); +CREATE TRIGGER LOG_UPDATE AFTER UPDATE ON ajxp_index FOR EACH ROW EXECUTE PROCEDURE ajxp_index_update(); \ No newline at end of file diff --git a/dist/scripts/misc/5.2.3-5.3.3.sqlite b/dist/scripts/misc/5.2.3-5.3.3.sqlite new file mode 100644 index 0000000000..0b730e12b6 --- /dev/null +++ b/dist/scripts/misc/5.2.3-5.3.3.sqlite @@ -0,0 +1,40 @@ +CREATE TABLE ajxp_changes ( + seq INTEGER PRIMARY KEY AUTOINCREMENT, + repository_identifier TEXT, + node_id NUMERIC, + type TEXT, + source TEXT, + target TEXT +); +/* SEPARATOR */ +CREATE TABLE ajxp_index ( + node_id INTEGER PRIMARY KEY AUTOINCREMENT, + repository_identifier TEXT, + node_path TEXT, + bytesize NUMERIC, + md5 TEXT, + mtime NUMERIC +); +/* SEPARATOR */ +CREATE TRIGGER LOG_DELETE AFTER DELETE ON ajxp_index +BEGIN + INSERT INTO ajxp_changes (repository_identifer, node_id,source,target,type) VALUES (old.repository_identifer, old.node_id, old.node_path, "NULL", "delete"); +END; +/* SEPARATOR */ +CREATE TRIGGER LOG_INSERT AFTER INSERT ON ajxp_index +BEGIN + INSERT INTO ajxp_changes (repository_identifer, node_id,source,target,type) VALUES (new.repository_identifer, new.node_id, "NULL", new.node_path, "create"); +END; +/* SEPARATOR */ +CREATE TRIGGER "LOG_UPDATE_CONTENT" AFTER UPDATE ON "ajxp_index" FOR EACH ROW WHEN old.node_path=new.node_path +BEGIN + INSERT INTO ajxp_changes (repository_identifer, node_id,source,target,type) VALUES (new.repository_identifer, new.node_id, old.node_path, new.node_path, "content"); +END; +/* SEPARATOR */ +CREATE TRIGGER "LOG_UPDATE_PATH" AFTER UPDATE ON "ajxp_index" FOR EACH ROW WHEN old.node_path!=new.node_path +BEGIN + INSERT INTO ajxp_changes (repository_identifer, node_id,source,target,type) VALUES (new.repository_identifer, new.node_id, old.node_path, new.node_path, "path"); +END; + +/* SEPARATOR */ +ALTER TABLE "ajxp_log" ADD COLUMN "source" text; \ No newline at end of file