Select Git revision
-
Timm Fitschen authoredTimm Fitschen authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
patch.sql 2.74 KiB
-- USE _caosdb_schema_unit_tests;
-- REMOVE SQLITE datatype
DELETE FROM name_data WHERE entity_id = 50;
DELETE FROM entities WHERE id = 50;
ALTER TABLE files ADD UNIQUE (`path`);
ALTER TABLE files ADD COLUMN IF NOT EXISTS (
mimetype VARBINARY(255) DEFAULT NULL,
fileStorage VARBINARY(255) NOT NULL DEFAULT "DEFAULT",
storageId VARBINARY(255) DEFAULT NULL
);
ALTER TABLE archive_files ADD COLUMN IF NOT EXISTS (
mimetype VARBINARY(255) DEFAULT NULL,
fileStorage VARBINARY(255) NOT NULL DEFAULT "DEFAULT",
storageId VARBINARY(255) DEFAULT NULL,
checked_timestamp BIGINT DEFAULT NULL
);
ALTER TABLE entities MODIFY COLUMN `role` enum('RECORDTYPE','RECORD','FILE','DOMAIN','PROPERTY','DATATYPE','ROLE','QUERYTEMPLATE', 'DIRECTORY') COLLATE utf8_unicode_ci NOT NULL;
INSERT INTO entities (id, description, role, acl) VALUES (9, "The directory role.", "ROLE", 0);
INSERT INTO name_data (domain_id, entity_id, property_id, value, status, pidx) VALUES (0, 9, 20, "DIRECTORY", "FIX", 0);
UPDATE files SET storageId=path;
ALTER TABLE files MODIFY COLUMN storageId VARBINARY(255) NOT NULL;
DROP PROCEDURE IF EXISTS _create_dirs;
DELIMITER //
CREATE PROCEDURE _create_dirs()
BEGIN
DECLARE done BOOLEAN DEFAULT FALSE;
DECLARE _file_id INT UNSIGNED DEFAULT NULL;
DECLARE _path VARCHAR(255) DEFAULT NULL;
DECLARE dir_id INT UNSIGNED DEFAULT NULL;
DECLARE dir_path VARCHAR(255) DEFAULT "";
DECLARE dir_exists BOOLEAN DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT file_id, path FROM files;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
loop1: LOOP
FETCH cur INTO _file_id, _path;
IF done THEN
LEAVE loop1;
END IF;
-- TODO
loop2: LOOP
SELECT REGEXP_SUBSTR(_path, CONCAT("(?U)^", dir_path, ".*/" )) INTO dir_path;
IF dir_path = "" THEN
SET dir_exists = FALSE;
SET done = FALSE;
LEAVE loop2;
END IF;
SELECT TRUE INTO dir_exists FROM files WHERE path = LEFT(dir_path, CHAR_LENGTH(dir_path)-1);
IF dir_exists IS TRUE THEN
SET dir_exists = FALSE;
ITERATE loop2;
END IF;
INSERT INTO entities (description, role, acl) VALUES (NULL, "DIRECTORY", 0);
SET dir_id = LAST_INSERT_ID();
INSERT INTO files (file_id, path, size, hash, checked_timestamp,
mimetype, fileStorage, storageId)
VALUES (dir_id, LEFT(dir_path, CHAR_LENGTH(dir_path)-1), 0,
NULL, 0, "inode/directory", "DEFAULT", LEFT(dir_path,
CHAR_LENGTH(dir_path)-1));
END LOOP;
END LOOP;
CLOSE cur;
END //
DELIMITER ;
CALL _create_dirs();