Skip to content
This repository has been archived by the owner on Nov 25, 2020. It is now read-only.

Commit

Permalink
Create a 5.3.4 version for updating from stable to dev branch
Browse files Browse the repository at this point in the history
  • Loading branch information
cdujeu committed Sep 16, 2014
1 parent c5bf493 commit d673d58
Show file tree
Hide file tree
Showing 4 changed files with 240 additions and 0 deletions.
57 changes: 57 additions & 0 deletions dist/php/5.3.4.mysql
@@ -0,0 +1,57 @@
/* SEPARATOR */
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`;
50 changes: 50 additions & 0 deletions dist/php/5.3.4.pgsql
@@ -0,0 +1,50 @@
/* SEPARATOR */
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;
92 changes: 92 additions & 0 deletions dist/php/5.3.4.php
@@ -0,0 +1,92 @@
<?php
// FORCE bootstrap_context copy, otherwise it won't reboot
if (is_file(AJXP_INSTALL_PATH."/conf/bootstrap_context.php".".new-".date("Ymd"))) {
rename(AJXP_INSTALL_PATH."/conf/bootstrap_context.php", AJXP_INSTALL_PATH."/conf/bootstrap_context.php.pre-update");
rename(AJXP_INSTALL_PATH."/conf/bootstrap_context.php".".new-".date("Ymd"), AJXP_INSTALL_PATH."/conf/bootstrap_context.php");
}

// FORCE bootstrap_context copy, otherwise it won't reboot
if (is_file(AJXP_INSTALL_PATH."/conf/bootstrap_repositories.php".".new-".date("Ymd"))) {
rename(AJXP_INSTALL_PATH."/conf/bootstrap_repositories.php", AJXP_INSTALL_PATH."/conf/bootstrap_repositories.php.pre-update");
rename(AJXP_INSTALL_PATH."/conf/bootstrap_repositories.php".".new-".date("Ymd"), AJXP_INSTALL_PATH."/conf/bootstrap_repositories.php");
}

echo "The bootstrap_context and bootstrap_repositories files were replaced by the new version, the .pre-update version is kept.";

$pgDbInsts = array(
"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();"
);


$confDriver = ConfService::getConfStorageImpl();
$authDriver = ConfService::getAuthDriverImpl();
$logger = AJXP_Logger::getInstance();
if (is_a($confDriver, "sqlConfDriver")) {
$test = $confDriver->getOption("SQL_DRIVER");
if (!isSet($test["driver"])) {
$test = AJXP_Utils::cleanDibiDriverParameters($confDriver->getOption("SQL_DRIVER"));
}
if (is_array($test) && isSet($test["driver"]) && $test["driver"] == "postgre") {

echo "Upgrading PostgreSQL database ...";

$results = array();
$errors = array();

require_once(AJXP_BIN_FOLDER."/dibi.compact.php");
dibi::connect($test);
dibi::begin();
foreach ($pgDbInsts as $sqlPart) {
if(empty($sqlPart)) continue;
try {
dibi::nativeQuery($sqlPart);
echo "<div class='upgrade_result success'>$sqlPart ... OK</div>";
} catch (DibiException $e) {
$errors[] = $e->getMessage();
echo "<div class='upgrade_result success'>$sqlPart ... FAILED (".$e->getMessage().")</div>";
}
}
dibi::commit();
dibi::disconnect();

} else {

echo "DB Already upgraded via the script";

}

} else {

echo "Nothing to do for the DB";

}
41 changes: 41 additions & 0 deletions dist/php/5.3.4.sqlite
@@ -0,0 +1,41 @@
/* SEPARATOR */
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

0 comments on commit d673d58

Please sign in to comment.