From b5f172499dc0dee4161577450077c8a31060529b Mon Sep 17 00:00:00 2001 From: apriestman <apriestman@basistech.com> Date: Thu, 27 Feb 2020 11:09:05 -0500 Subject: [PATCH] Added on delete cascade. Added unique(obj_id) --- .../org/sleuthkit/datamodel/CaseDatabaseFactory.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java b/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java index 3b689922b..6f45d318a 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java +++ b/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java @@ -140,8 +140,9 @@ private void addDbInfo(Connection conn) throws TskCoreException { */ private void addTables(Connection conn) throws TskCoreException { try (Statement stmt = conn.createStatement()) { + // The UNIQUE here on the object ID is to create an index stmt.execute("CREATE TABLE tsk_objects (obj_id " + dbQueryHelper.getPrimaryKey() + " PRIMARY KEY, par_obj_id " + dbQueryHelper.getBigIntType() - + ", type INTEGER NOT NULL, FOREIGN KEY (par_obj_id) REFERENCES tsk_objects (obj_id) ON DELETE CASCADE)"); + + ", type INTEGER NOT NULL, UNIQUE (obj_id), FOREIGN KEY (par_obj_id) REFERENCES tsk_objects (obj_id) ON DELETE CASCADE)"); stmt.execute("CREATE TABLE tsk_image_info (obj_id " + dbQueryHelper.getPrimaryKey() + " PRIMARY KEY, type INTEGER, ssize INTEGER, " + "tzone TEXT, size " + dbQueryHelper.getBigIntType() + ", md5 TEXT, sha1 TEXT, sha256 TEXT, display_name TEXT, " @@ -338,16 +339,16 @@ private void addTables(Connection conn) throws TskCoreException { + "comment TEXT NOT NULL, begin_byte_offset " + dbQueryHelper.getBigIntType() + " NOT NULL, " + "end_byte_offset " + dbQueryHelper.getBigIntType() + " NOT NULL, " + "examiner_id " + dbQueryHelper.getBigIntType() + ", " - + "FOREIGN KEY(examiner_id) REFERENCES tsk_examiners(examiner_id), " + + "FOREIGN KEY(examiner_id) REFERENCES tsk_examiners(examiner_id) ON DELETE CASCADE, " + "FOREIGN KEY(obj_id) REFERENCES tsk_objects(obj_id) ON DELETE CASCADE, " - + "FOREIGN KEY(tag_name_id) REFERENCES tag_names(tag_name_id))"); + + "FOREIGN KEY(tag_name_id) REFERENCES tag_names(tag_name_id) ON DELETE CASCADE)"); stmt.execute("CREATE TABLE blackboard_artifact_tags (tag_id " + dbQueryHelper.getPrimaryKey() + " PRIMARY KEY, " + "artifact_id " + dbQueryHelper.getBigIntType() + " NOT NULL, tag_name_id " + dbQueryHelper.getBigIntType() + " NOT NULL, " + "comment TEXT NOT NULL, examiner_id " + dbQueryHelper.getBigIntType() + ", " - + "FOREIGN KEY(examiner_id) REFERENCES tsk_examiners(examiner_id), " + + "FOREIGN KEY(examiner_id) REFERENCES tsk_examiners(examiner_id) ON DELETE CASCADE, " + "FOREIGN KEY(artifact_id) REFERENCES blackboard_artifacts(artifact_id) ON DELETE CASCADE, " - + "FOREIGN KEY(tag_name_id) REFERENCES tag_names(tag_name_id))"); + + "FOREIGN KEY(tag_name_id) REFERENCES tag_names(tag_name_id) ON DELETE CASCADE)"); stmt.execute("CREATE TABLE tsk_file_layout (obj_id " + dbQueryHelper.getBigIntType() + " NOT NULL, " + "byte_start " + dbQueryHelper.getBigIntType() + " NOT NULL, byte_len " + dbQueryHelper.getBigIntType() + " NOT NULL, " -- GitLab