Skip to content
Snippets Groups Projects
Select Git revision
  • 942f476f4439ecc3e0c7380c5632f74004ee5861
  • main default protected
  • dev protected
  • f-linkahead-rename
  • f-real-id
  • f-filesystem-import
  • f-filesystem-link
  • f-filesystem-directory
  • f-filesystem-core
  • f-filesystem-cleanup
  • f-filesystem-main
  • f-name
  • keep_changes
  • f-permission-checks-2
  • f-mysql8-tests
  • f-retrieve-history
  • t-distinct-parents
  • v8.1.0
  • v8.0.0
  • v7.0.2
  • v7.0.1
  • v7.0.0
  • v6.0.1
  • v6.0.0
  • v5.0.0
  • v4.1.0
  • v4.0.0
  • v3.0
  • v2.0.30
29 results

patch.sql

Blame
  • 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();