diff --git a/libs/mytap-1.0.zip b/libs/mytap-1.0.zip
index 9e04965cd40320bde2e598c585119ffa7f6b1eab..4243087c1e50de041a3eb1f1f069c3003edae34a 100644
Binary files a/libs/mytap-1.0.zip and b/libs/mytap-1.0.zip differ
diff --git a/patches/applyPatches.sh b/patches/applyPatches.sh
index f4295ef5a29d19b5f10e8c2d628a9148385cf97e..735dd3ea48a43d033b46dad1c7eb1700bda5c9b1 100755
--- a/patches/applyPatches.sh
+++ b/patches/applyPatches.sh
@@ -39,8 +39,6 @@ fi
 source $UTILSPATH/load_settings.sh
 source $UTILSPATH/helpers.sh
 
-mysql_execute "DELETE FROM rules"
-
 PATCHES="./patch*/patch.sh"
 
 for p in $PATCHES
diff --git a/patches/patch20210219-5.0.0-rc1/patch.sh b/patches/patch20220110-6.0-SNAPSHOT/patch.sh
similarity index 96%
rename from patches/patch20210219-5.0.0-rc1/patch.sh
rename to patches/patch20220110-6.0-SNAPSHOT/patch.sh
index b3c8447b449f60ed9a5ebe311cb534eb407178b2..8c73b314582c189e8562bd4cd5899deb01278f56 100755
--- a/patches/patch20210219-5.0.0-rc1/patch.sh
+++ b/patches/patch20220110-6.0-SNAPSHOT/patch.sh
@@ -25,8 +25,8 @@
 # Refactors the files and archive_files tables and all affected procedures for
 # the new file back-end
 # Update mysql schema to version v5.0.0-rc1
-NEW_VERSION="v5.0.0-rc1"
-OLD_VERSION="v4.0.0"
+NEW_VERSION="v6.0-SNAPSHOT"
+OLD_VERSION="v5.0.0"
 
 if [ -z "$UTILSPATH" ]; then
  UTILSPATH="../utils"
diff --git a/patches/patch20210219-5.0.0-rc1/patch.sql b/patches/patch20220110-6.0-SNAPSHOT/patch.sql
similarity index 93%
rename from patches/patch20210219-5.0.0-rc1/patch.sql
rename to patches/patch20220110-6.0-SNAPSHOT/patch.sql
index c7426fe9cfb466fb9a43643fa62115e2829a619e..2a6c7744f93fa7c08747c7b7a8e2e62a25abacc7 100644
--- a/patches/patch20210219-5.0.0-rc1/patch.sql
+++ b/patches/patch20220110-6.0-SNAPSHOT/patch.sql
@@ -43,7 +43,7 @@ ALTER TABLE files ADD COLUMN IF NOT EXISTS (
     parent_directory INT UNSIGNED DEFAULT NULL,
     mimetype VARBINARY(255) DEFAULT NULL,
     file_storage_id VARBINARY(255) NOT NULL DEFAULT "DEFAULT",
-    file_key VARBINARY(255) DEFAULT NULL
+    file_key VARBINARY(16175) DEFAULT NULL
 );
 
 -- ... and to the corresponding archive_files table.
@@ -51,7 +51,7 @@ ALTER TABLE archive_files ADD COLUMN IF NOT EXISTS (
     parent_directory INT UNSIGNED DEFAULT NULL,
     mimetype VARBINARY(255) DEFAULT NULL,
     file_storage_id VARBINARY(255) NOT NULL DEFAULT "DEFAULT",
-    file_key VARBINARY(40000) DEFAULT NULL,
+    file_key VARBINARY(16175) DEFAULT NULL,
     checked_timestamp BIGINT NOT NULL DEFAULT 0
 );
 
@@ -80,16 +80,16 @@ INSERT IGNORE INTO files
 UPDATE files SET file_key=path;
 UPDATE archive_files SET file_key=path;
 -- and now, set NOT NULL for the file_key column
-ALTER TABLE files MODIFY COLUMN file_key VARBINARY(40000) NOT NULL;
-ALTER TABLE archive_files MODIFY COLUMN file_key VARBINARY(40000) NOT NULL;
+ALTER TABLE files MODIFY COLUMN file_key VARBINARY(16175) NOT NULL;
+ALTER TABLE archive_files MODIFY COLUMN file_key VARBINARY(16175) NOT NULL;
 
 -- Size may be NULL for directories
-ALTER TABLE files MODIFY COLUMN size BIGINT NULL DEFAULT NULL;
-ALTER TABLE archive_files MODIFY COLUMN size BIGINT NULL DEFAULT NULL;
+ALTER TABLE files MODIFY COLUMN size BIGINT UNSIGNED NULL DEFAULT NULL;
+ALTER TABLE archive_files MODIFY COLUMN size BIGINT UNSIGNED NULL DEFAULT NULL;
 
 -- More characters for long names
-ALTER TABLE files MODIFY COLUMN path VARCHAR(5000) NOT NULL;
-ALTER TABLE archive_files MODIFY COLUMN path VARCHAR(5000) NOT NULL;
+ALTER TABLE files MODIFY COLUMN path VARCHAR(16175) NOT NULL;
+ALTER TABLE archive_files MODIFY COLUMN path VARCHAR(16175) NOT NULL;
 
 -- Test data for the _create_dirs procedure...
 -- INSERT INTO entities (id, role, acl) VALUES
@@ -136,11 +136,11 @@ BEGIN
     DECLARE dir_path_no_trailing_slash VARCHAR(255) DEFAULT "";
     DECLARE dir_exists BOOLEAN DEFAULT FALSE;
     DECLARE parent_dir_id INT UNSIGNED DEFAULT 51;
-    DECLARE cur CURSOR FOR SELECT file_id, path FROM files WHERE mimetype != "inode/directory";
+    DECLARE cur CURSOR FOR SELECT file_id, path FROM files WHERE mimetype != "inode/directory" OR mimetype IS NULL;
     DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
     OPEN cur;
 
-    UPDATE files SET parent_directory = 51 WHERE mimetype != "inode/directory";
+    UPDATE files SET parent_directory = 51 WHERE mimetype != "inode/directory" OR mimetype IS NULL;
     -- loop over all FILE entities in the table (not DIRECTORY)
     loop1: LOOP
         FETCH cur INTO _file_id, _path;
@@ -212,4 +212,4 @@ DELIMITER ;
 CALL _create_dirs();
 
 -- not to be uses after this patch has been applied.
-DROP PROCEDURE _create_dirs;
+-- DROP PROCEDURE _create_dirs;
diff --git a/procedures/insertFSODescriptor.sql b/procedures/insertFSODescriptor.sql
index d0e432cab333c47b0aaa15ad92a3f5f6fda46ae0..ac693d8fe8f88c02ae7a7992efa7f9146e59228b 100644
--- a/procedures/insertFSODescriptor.sql
+++ b/procedures/insertFSODescriptor.sql
@@ -19,7 +19,7 @@
  */
 
 
-DROP PROCEDURE IF EXISTS db_2_0.insertFSODescriptor;
+DROP PROCEDURE IF EXISTS db_5_0.insertFSODescriptor;
 delimiter //
 /**
  * Insert a FSODescriptor
@@ -45,7 +45,7 @@ delimiter //
  * FileParentID
  *   The entity id of the parent directory (or NULL).
  */
-CREATE PROCEDURE db_2_0.insertFSODescriptor(
+CREATE PROCEDURE db_5_0.insertFSODescriptor(
     in FileID INT UNSIGNED,
     in FileHash VARCHAR(255),
     in FileCheckedTimestamp BIGINT,
diff --git a/tests/test_autotap.sql b/tests/test_autotap.sql
index ebec7304fd753261775a40a8ccfd8e765136ec0e..22cc4e47b9625f71b746c7a876689a196f2c5eca 100644
--- a/tests/test_autotap.sql
+++ b/tests/test_autotap.sql
@@ -724,7 +724,7 @@ SELECT tap.col_collation_is('_caosdb_schema_unit_tests','entities','description'
 -- COLUMN entities.role
 
 SELECT tap.has_column('_caosdb_schema_unit_tests','entities','role','');
-SELECT tap.col_column_type_is('_caosdb_schema_unit_tests','entities','role','enum(\'RECORDTYPE\',\'RECORD\',\'FILE\',\'DOMAIN\',\'PROPERTY\',\'DATATYPE\',\'ROLE\',\'QUERYTEMPLATE\')','');
+SELECT tap.col_column_type_is('_caosdb_schema_unit_tests','entities','role','enum(\'RECORDTYPE\',\'RECORD\',\'FILE\',\'DOMAIN\',\'PROPERTY\',\'DATATYPE\',\'ROLE\',\'QUERYTEMPLATE\',\'DIRECTORY\')','');
 SELECT tap.col_extra_is('_caosdb_schema_unit_tests','entities','role','','');
 SELECT tap.col_default_is('_caosdb_schema_unit_tests','entities','role',NULL,'');
 SELECT tap.col_charset_is('_caosdb_schema_unit_tests','entities','role','utf8','');
@@ -909,7 +909,39 @@ SELECT tap.table_collation_is('_caosdb_schema_unit_tests','files','utf8_unicode_
 SELECT tap.table_engine_is('_caosdb_schema_unit_tests','files','InnoDB','');
 
 -- COLUMNS
-SELECT tap.columns_are('_caosdb_schema_unit_tests','files','`file_id`,`path`,`size`,`hash`,`checked_timestamp`','');
+SELECT tap.columns_are('_caosdb_schema_unit_tests','files','`file_id`,`path`,`size`,`hash`,`checked_timestamp`,`parent_directory`,`mimetype`,`file_storage_id`,`file_key`','');
+
+-- TODO COLUMN files.parent_directory
+SELECT tap.has_column('_caosdb_schema_unit_tests','files','parent_directory','');
+SELECT tap.col_column_type_is('_caosdb_schema_unit_tests','files','parent_directory','int(10) unsigned','');
+SELECT tap.col_extra_is('_caosdb_schema_unit_tests','files','parent_directory','','');
+SELECT tap.col_default_is('_caosdb_schema_unit_tests','files','parent_directory','NULL','');
+SELECT tap.col_charset_is('_caosdb_schema_unit_tests','files','parent_directory',NULL,'');
+SELECT tap.col_collation_is('_caosdb_schema_unit_tests','files','parent_directory',NULL,'');
+
+-- TODO COLUMN files.mimetype
+SELECT tap.has_column('_caosdb_schema_unit_tests','files','mimetype','');
+SELECT tap.col_column_type_is('_caosdb_schema_unit_tests','files','mimetype','varbinary(255)','');
+SELECT tap.col_extra_is('_caosdb_schema_unit_tests','files','mimetype','','');
+SELECT tap.col_default_is('_caosdb_schema_unit_tests','files','mimetype','NULL','');
+SELECT tap.col_charset_is('_caosdb_schema_unit_tests','files','mimetype',NULL,'');
+SELECT tap.col_collation_is('_caosdb_schema_unit_tests','files','mimetype',NULL,'');
+
+-- TODO COLUMN files.file_storage_id
+SELECT tap.has_column('_caosdb_schema_unit_tests','files','file_storage_id','');
+SELECT tap.col_column_type_is('_caosdb_schema_unit_tests','files','file_storage_id','varbinary(255)','');
+SELECT tap.col_extra_is('_caosdb_schema_unit_tests','files','file_storage_id','','');
+SELECT tap.col_default_is('_caosdb_schema_unit_tests','files','file_storage_id','\'DEFAULT\'','');
+SELECT tap.col_charset_is('_caosdb_schema_unit_tests','files','file_storage_id',NULL,'');
+SELECT tap.col_collation_is('_caosdb_schema_unit_tests','files','file_storage_id',NULL,'');
+
+-- TODO COLUMN files.file_key
+SELECT tap.has_column('_caosdb_schema_unit_tests','files','file_key','');
+SELECT tap.col_column_type_is('_caosdb_schema_unit_tests','files','file_key','varbinary(16175)','');
+SELECT tap.col_extra_is('_caosdb_schema_unit_tests','files','file_key','','');
+SELECT tap.col_default_is('_caosdb_schema_unit_tests','files','file_key',NULL,'');
+SELECT tap.col_charset_is('_caosdb_schema_unit_tests','files','file_key',NULL,'');
+SELECT tap.col_collation_is('_caosdb_schema_unit_tests','files','file_key',NULL,'');
 
 -- COLUMN files.file_id
 
@@ -923,7 +955,7 @@ SELECT tap.col_collation_is('_caosdb_schema_unit_tests','files','file_id',NULL,'
 -- COLUMN files.path
 
 SELECT tap.has_column('_caosdb_schema_unit_tests','files','path','');
-SELECT tap.col_column_type_is('_caosdb_schema_unit_tests','files','path','varchar(255)','');
+SELECT tap.col_column_type_is('_caosdb_schema_unit_tests','files','path','varchar(16175)','');
 SELECT tap.col_extra_is('_caosdb_schema_unit_tests','files','path','','');
 SELECT tap.col_default_is('_caosdb_schema_unit_tests','files','path',NULL,'');
 SELECT tap.col_charset_is('_caosdb_schema_unit_tests','files','path','utf8','');
@@ -934,7 +966,7 @@ SELECT tap.col_collation_is('_caosdb_schema_unit_tests','files','path','utf8_uni
 SELECT tap.has_column('_caosdb_schema_unit_tests','files','size','');
 SELECT tap.col_column_type_is('_caosdb_schema_unit_tests','files','size','bigint(20) unsigned','');
 SELECT tap.col_extra_is('_caosdb_schema_unit_tests','files','size','','');
-SELECT tap.col_default_is('_caosdb_schema_unit_tests','files','size',NULL,'');
+SELECT tap.col_default_is('_caosdb_schema_unit_tests','files','size','NULL','');
 SELECT tap.col_charset_is('_caosdb_schema_unit_tests','files','size',NULL,'');
 SELECT tap.col_collation_is('_caosdb_schema_unit_tests','files','size',NULL,'');
 
@@ -957,7 +989,7 @@ SELECT tap.col_charset_is('_caosdb_schema_unit_tests','files','checked_timestamp
 SELECT tap.col_collation_is('_caosdb_schema_unit_tests','files','checked_timestamp',NULL,'');
 
 -- CONSTRAINTS
-SELECT tap.constraints_are('_caosdb_schema_unit_tests','files','`PRIMARY`,`fil_file_id_entity`','');
+SELECT tap.constraints_are('_caosdb_schema_unit_tests','files','`PRIMARY`,`fil_file_id_entity`,`path`,`files_ibfk_1`','');
 
 -- CONSTRAINT files.fil_file_id_entity
 
@@ -972,6 +1004,19 @@ SELECT tap.has_constraint('_caosdb_schema_unit_tests','files','PRIMARY','');
 SELECT tap.constraint_type_is('_caosdb_schema_unit_tests','files','PRIMARY','PRIMARY KEY','');
 SELECT tap.col_is_pk('_caosdb_schema_unit_tests','files','`file_id`','');
 
+-- CONSTRAINT files.path
+
+SELECT tap.has_constraint('_caosdb_schema_unit_tests','files','path','');
+SELECT tap.constraint_type_is('_caosdb_schema_unit_tests','files','path','UNIQUE','');
+
+-- CONSTRAINT files.files_ibfk_1
+
+SELECT tap.has_constraint('_caosdb_schema_unit_tests','files','files_ibfk_1','');
+SELECT tap.constraint_type_is('_caosdb_schema_unit_tests','files','files_ibfk_1','FOREIGN KEY','');
+SELECT tap.fk_on_delete('_caosdb_schema_unit_tests','files','files_ibfk_1','RESTRICT','');
+SELECT tap.fk_on_update('_caosdb_schema_unit_tests','files','files_ibfk_1','RESTRICT','');
+
+
 -- ***************************************************************
 -- TABLE _caosdb_schema_unit_tests.integer_data
 -- ***************************************************************
diff --git a/tests/test_directory_patch.sql b/tests/test_directory_patch.sql
index a77470485f967381920eccf01cbefb963c0c261d..24da84e58cc6c4a596d56a1a26461ca8b2b24bf2 100644
--- a/tests/test_directory_patch.sql
+++ b/tests/test_directory_patch.sql
@@ -6,30 +6,30 @@ CALL tap.no_plan();
 
 -- SETUP
 INSERT INTO entities (id, role, acl) VALUES
-(51, "FILE", 0),
 (52, "FILE", 0),
 (53, "FILE", 0),
 (54, "FILE", 0),
 (55, "FILE", 0),
-(56, "FILE", 0);
+(56, "FILE", 0),
+(57, "FILE", 0);
 
 
-INSERT INTO files (file_id, path, size, storageId) VALUES
-(51, "file_at_root_a", 256, "file_at_root_a"),
-(52, "file_at_root_b", 256, "file_at_root_b"),
-(53, "level1/file_at_level1_a", 256, "level1/file_at_level1_a"),
-(54, "level1/file_at_level1_b", 256, "level1/file_at_level1_b"),
-(55, "level1/level2/file_at_level2_a", 256, "level1/level2/file_at_level2_a"),
-(56, "level1/level2/file_at_level2_b", 256, "level1/level2/file_at_level2_b");
+INSERT INTO files (file_id, path, size, file_key) VALUES
+(52, "file_at_root_a", 256, "file_at_root_a"),
+(53, "file_at_root_b", 256, "file_at_root_b"),
+(54, "level1/file_at_level1_a", 256, "level1/file_at_level1_a"),
+(55, "level1/file_at_level1_b", 256, "level1/file_at_level1_b"),
+(56, "level1/level2/file_at_level2_a", 256, "level1/level2/file_at_level2_a"),
+(57, "level1/level2/file_at_level2_b", 256, "level1/level2/file_at_level2_b");
 
-SELECT tap.eq(COUNT(*), 6, "six rows in test_files") FROM files;
+
+SELECT tap.eq(COUNT(*), 7, "7 rows in test_files") FROM files;
 
 -- TEST _create_dirs
 
 CALL _create_dirs();
 
-SELECT * FROM files;
-SELECT tap.eq(COUNT(*), 8, "8 rows in test_files") FROM files;
+SELECT tap.eq(COUNT(*), 9, "9 rows in test_files") FROM files;
 SELECT tap.eq(COUNT(*), 1, "one dir level1") FROM files WHERE path="level1";
 SELECT tap.eq(COUNT(*), 1, "one dir level1/level2") FROM files WHERE path="level1/level2";