Skip to content
Snippets Groups Projects
Commit 06f6db9a authored by anttil's avatar anttil
Browse files

BIS-298 / SP-447: Improve experiment deletion performance

SVN: 28011
parent 7d1d2ca7
No related branches found
No related tags found
No related merge requests found
Showing
with 3541 additions and 10 deletions
......@@ -47,6 +47,7 @@ public class ImportMenu extends TopMenuItem
ComponentProvider componentProvider)
{
super(viewContext.getMessage(Dict.MENU_IMPORT));
setId("import_menu");
IMessageProvider messageProvider = viewContext;
ApplicationInfo applicationInfo = viewContext.getModel().getApplicationInfo();
......
......@@ -103,6 +103,7 @@ public abstract class FileFieldManager<T extends FileUploadField>
final int number = counter + 1;
file.setFieldLabel(fieldLabel);
file.setName(Format.substitute(FIELD_NAME_TEMPLATE, sessionKey, number));
file.setId(Format.substitute(FIELD_NAME_TEMPLATE, sessionKey, number));
return file;
}
......
......@@ -109,6 +109,8 @@ public class SampleBrowserGrid extends AbstractEntityGrid<Sample>
public static final String EDIT_BUTTON_ID_SUFFIX = "_edit-button";
public static final String DELETE_BUTTON_ID_SUFFIX = "_delete-button";
public static final String SHOW_DETAILS_BUTTON_ID_SUFFIX = "_show-details-button";
public static final String METAPROJECT_TYPE = "metaproject";
......@@ -577,6 +579,7 @@ public class SampleBrowserGrid extends AbstractEntityGrid<Sample>
viewContext, samples, callback, s);
}
});
deleteButton.setId(createChildComponentId(DELETE_BUTTON_ID_SUFFIX));
changeButtonTitleOnSelectedItems(deleteButton, deleteAllTitle, deleteTitle);
addButton(deleteButton);
allowMultipleSelection(); // we allow deletion of multiple samples
......
......@@ -51,6 +51,7 @@ public final class SampleListDeletionConfirmationDialog<T extends IIdHolder> ext
this.withRadio();
this.singleDataOrNull = null;
this.selectedAndDisplayedItemsOrNull = selectedAndDisplayedItems;
this.setId("deletion-confirmation-dialog");
}
public SampleListDeletionConfirmationDialog(
......@@ -60,6 +61,7 @@ public final class SampleListDeletionConfirmationDialog<T extends IIdHolder> ext
super(viewContext, data, deletionCallback);
this.singleDataOrNull = sample;
this.selectedAndDisplayedItemsOrNull = null;
this.setId("deletion-confirmation-dialog");
}
@Override
......
......@@ -128,6 +128,7 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.IExternalDataManagemen
import ch.systemsx.cisd.openbis.generic.server.dataaccess.IFileFormatTypeDAO;
import ch.systemsx.cisd.openbis.generic.server.dataaccess.IMetaprojectDAO;
import ch.systemsx.cisd.openbis.generic.server.dataaccess.IRoleAssignmentDAO;
import ch.systemsx.cisd.openbis.generic.server.dataaccess.ISampleDAO;
import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.HibernateSearchDataProvider;
import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.SampleDataAccessExceptionTranslator;
import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.DynamicPropertyEvaluator;
......@@ -3666,9 +3667,11 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt
private void deletePermanentlyCommon(String sessionToken, List<TechId> deletionIds,
boolean forceDisallowedTypes)
{
checkSession(sessionToken);
Session session = getSession(sessionToken);
PersonPE registrator = session.tryGetPerson();
IDeletionDAO deletionDAO = getDAOFactory().getDeletionDAO();
ISampleDAO sampleDAO = getDAOFactory().getSampleDAO();
// NOTE: we can't do bulk deletions to preserve original reasons
for (TechId deletionId : deletionIds)
{
......@@ -3681,13 +3684,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt
deleteDataSetsCommon(sessionToken, trashedDataSets, deletionReason, deletionType,
forceDisallowedTypes, true);
// we need to first delete components and then containers not to break constraints
List<TechId> trashedComponentSamples =
deletionDAO.findTrashedComponentSampleIds(singletonList);
deleteSamples(sessionToken, trashedComponentSamples, deletionReason, deletionType);
List<TechId> trashedNonComponentSamples =
deletionDAO.findTrashedNonComponentSampleIds(singletonList);
deleteSamples(sessionToken, trashedNonComponentSamples, deletionReason, deletionType);
sampleDAO.deletePermanently(deletion, registrator);
List<TechId> trashedExperiments = deletionDAO.findTrashedExperimentIds(singletonList);
deleteExperiments(sessionToken, trashedExperiments, deletionReason, deletionType);
......
......@@ -24,6 +24,7 @@ import org.springframework.dao.DataAccessException;
import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE;
import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE;
import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE;
import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE;
......@@ -136,6 +137,11 @@ public interface ISampleDAO extends IGenericDAO<SamplePE>
void delete(List<TechId> sampleIds, PersonPE registrator, String reason)
throws DataAccessException;
/**
* Delete trashed samples.
*/
public void deletePermanently(final DeletionPE deletion, final PersonPE registrator);
/**
* lists all children ids for a set of trashed samples.
*/
......
......@@ -24,7 +24,7 @@ package ch.systemsx.cisd.openbis.generic.server.dataaccess.db;
public final class DatabaseVersionHolder
{
/** Current version of the database. */
private static final String DATABASE_VERSION = "128"; // S147
private static final String DATABASE_VERSION = "129"; // S148
private DatabaseVersionHolder()
{
......
......@@ -16,6 +16,7 @@
package ch.systemsx.cisd.openbis.generic.server.dataaccess.db;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
......@@ -26,6 +27,8 @@ import java.util.Set;
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.FetchMode;
import org.hibernate.HibernateException;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.DetachedCriteria;
......@@ -45,6 +48,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
import ch.systemsx.cisd.openbis.generic.shared.dto.ColumnNames;
import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE;
import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE;
import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE;
import ch.systemsx.cisd.openbis.generic.shared.dto.EventPE.EntityType;
import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE;
......@@ -340,7 +344,8 @@ public class SampleDAO extends AbstractGenericEntityWithPropertiesDAO<SamplePE>
if (containerCodeOrNull != null)
{
criteria.createAlias("container", "c");
criteria.add(Restrictions.eq("c.code", CodeConverter.tryToDatabase(containerCodeOrNull)));
criteria.add(Restrictions
.eq("c.code", CodeConverter.tryToDatabase(containerCodeOrNull)));
} else
{
criteria.add(Restrictions.isNull("container"));
......@@ -455,6 +460,66 @@ public class SampleDAO extends AbstractGenericEntityWithPropertiesDAO<SamplePE>
sqlDeleteAttachmentContents, sqlDeleteAttachments, sqlDeleteSamples, sqlInsertEvent);
}
@Override
public void deletePermanently(final DeletionPE deletion, final PersonPE registrator)
{
getHibernateTemplate().execute(new HibernateCallback()
{
@SuppressWarnings("unchecked")
@Override
public Object doInHibernate(Session session) throws HibernateException,
SQLException
{
String permIdQuery = "SELECT perm_id FROM samples_all WHERE del_id = :id";
String properties =
"DELETE FROM sample_properties WHERE samp_id IN ("
+ "SELECT id FROM samples_all WHERE del_id = :id)";
String samples =
"DELETE FROM samples_all WHERE del_id = :id";
String event =
"INSERT INTO events (id, event_type, description, reason, pers_id_registerer, entity_type, identifiers) "
+ "VALUES (nextval('EVENT_ID_SEQ'), 'DELETION', :description, :reason, :registerer, 'SAMPLE', :identifiers)";
SQLQuery getPermIds = session.createSQLQuery(permIdQuery);
getPermIds.setParameter("id", deletion.getId());
StringBuffer permIdList = new StringBuffer();
for (String id : (List<String>) getPermIds.list())
{
permIdList.append(", ");
permIdList.append(id);
}
if (permIdList.length() == 0)
{
return null;
}
String permIds = permIdList.substring(2);
SQLQuery deleteProperties = session.createSQLQuery(properties);
deleteProperties.setParameter("id", deletion.getId());
deleteProperties.executeUpdate();
SQLQuery deleteSamples = session.createSQLQuery(samples);
deleteSamples.setParameter("id", deletion.getId());
deleteSamples.executeUpdate();
SQLQuery insertEvent = session.createSQLQuery(event);
insertEvent.setParameter("description", permIds);
insertEvent.setParameter("reason", deletion.getReason());
insertEvent.setParameter("registerer", registrator.getId());
insertEvent.setParameter("identifiers", permIds);
insertEvent.executeUpdate();
return null;
}
});
}
@Override
public Set<TechId> listSampleIdsByChildrenIds(final Collection<TechId> children,
final TechId relationship)
......
----------------------------------------------------------------------------
-- Purpose: Insert an initial data set into the table DATABASE_INSTANCES
----------------------------------------------------------------------------
INSERT INTO database_instances(
id
, code
, uuid
, is_original_source)
VALUES ( nextval('DATABASE_INSTANCE_ID_SEQ')
, 'SYSTEM_DEFAULT'
, 'SYSTEM_DEFAULT'
, 'T');
----------------------------------------------------------------------
-- Purpose: Insert an initial data set into the table PERSONS
-----------------------------------------------------------------------
insert into persons
(id
,first_name
,last_name
,user_id
,email
,dbin_id)
values
(nextval('PERSON_ID_SEQ')
,''
,'System User'
,'system'
,''
,(select id from database_instances where code = 'SYSTEM_DEFAULT') );
-----------------------------------------------------------------------------------
-- Purpose: Create Controlled Vocabulary STORAGE_FORMAT
-----------------------------------------------------------------------------------
insert into controlled_vocabularies
( id
, code
, is_internal_namespace
, description
, pers_id_registerer
, is_managed_internally
, dbin_id)
values (nextval('CONTROLLED_VOCABULARY_ID_SEQ')
, 'STORAGE_FORMAT'
, true
, 'The on-disk storage format of a data set'
, (select id from persons where user_id ='system')
, true
, (select id from database_instances where code = 'SYSTEM_DEFAULT'));
-----------------------------------------------------------------------------------
-- Purpose: Create Controlled Vocabulary Terms for STORAGE_FORMAT
-----------------------------------------------------------------------------------
insert into controlled_vocabulary_terms
( id
, code
, covo_id
, pers_id_registerer
, ordinal )
values (nextval('CVTE_ID_SEQ')
, 'PROPRIETARY'
, (select id from controlled_vocabularies where code = 'STORAGE_FORMAT' and is_internal_namespace = true)
, (select id from persons where user_id ='system')
, 1);
insert into controlled_vocabulary_terms
( id
, code
, covo_id
, pers_id_registerer
, ordinal)
values (nextval('CVTE_ID_SEQ')
, 'BDS_DIRECTORY'
, (select id from controlled_vocabularies where code = 'STORAGE_FORMAT' and is_internal_namespace = true)
, (select id from persons where user_id ='system')
, 2);
------------------------------------------------------------------
-- Purpose: Insert an initial data set into the table DATA_TYPES
------------------------------------------------------------------
insert into data_types
(id
,code
,description)
values
(nextval('DATA_TYPE_ID_SEQ')
,'VARCHAR'
,'Short text'
);
insert into data_types
(id
,code
,description)
values
(nextval('DATA_TYPE_ID_SEQ')
,'MULTILINE_VARCHAR'
,'Long text'
);
insert into data_types
(id
,code
,description)
values
(nextval('DATA_TYPE_ID_SEQ')
,'INTEGER'
,'Integer number'
);
insert into data_types
(id
,code
,description)
values
(nextval('DATA_TYPE_ID_SEQ')
,'REAL'
,'Real number, i.e. an inexact, variable-precision numeric type'
);
insert into data_types
(id
,code
,description)
values
(nextval('DATA_TYPE_ID_SEQ')
,'BOOLEAN'
,'True or False'
);
insert into data_types
(id
,code
,description)
values
(nextval('DATA_TYPE_ID_SEQ')
,'TIMESTAMP'
,'Both date and time. Format: yyyy-mm-dd hh:mm:ss'
);
insert into data_types
(id
,code
,description)
values
(nextval('DATA_TYPE_ID_SEQ')
,'CONTROLLEDVOCABULARY'
,'Controlled Vocabulary'
);
insert into data_types
(id
,code
,description)
values
(nextval('DATA_TYPE_ID_SEQ')
,'MATERIAL'
,'Reference to a material'
);
insert into data_types
(id
,code
,description)
values
(nextval('DATA_TYPE_ID_SEQ')
,'HYPERLINK'
,'Address of a web page'
);
insert into data_types
(id
,code
,description)
values
(nextval('DATA_TYPE_ID_SEQ')
,'XML'
,'XML document'
);
----------------------------------------------------------------------
-- Purpose: Insert an initial data set into the table PROPERTY_TYPES
-----------------------------------------------------------------------
insert into property_types
(id
,code
,description
,label
,daty_id
,pers_id_registerer
,dbin_id)
values
(nextval('PROPERTY_TYPE_ID_SEQ')
,'DESCRIPTION'
,'A Description'
,'Description'
,(select id from data_types where code ='VARCHAR')
,(select id from persons where user_id ='system')
,(select id from database_instances where code = 'SYSTEM_DEFAULT')
);
--------------------------------------------------------------------------
-- Purpose: Insert an initial data set into the table DATA_SET_TYPES
--------------------------------------------------------------------------
insert into data_set_types
(id
,code
,description
,dbin_id)
values
(nextval('DATA_SET_TYPE_ID_SEQ')
,'UNKNOWN'
,'Unknown'
,(select id from database_instances where code = 'SYSTEM_DEFAULT')
);
-------------------------------------------------------------------------
-- Purpose: Insert an initial data set into the table FILE_FORMAT_TYPES
-------------------------------------------------------------------------
insert into file_format_types
(id
,code
,description
,dbin_id)
values
(nextval('FILE_FORMAT_TYPE_ID_SEQ')
,'HDF5'
,'Hierarchical Data Format File, version 5'
,(select id from database_instances where code = 'SYSTEM_DEFAULT')
);
insert into file_format_types
(id
,code
,description
,dbin_id)
values
(nextval('FILE_FORMAT_TYPE_ID_SEQ')
,'PROPRIETARY'
,'Proprietary Format File'
,(select id from database_instances where code = 'SYSTEM_DEFAULT')
);
insert into file_format_types
(id
,code
,description
,dbin_id)
values
(nextval('FILE_FORMAT_TYPE_ID_SEQ')
,'SRF'
,'Sequence Read Format File'
,(select id from database_instances where code = 'SYSTEM_DEFAULT')
);
insert into file_format_types
(id
,code
,description
,dbin_id)
values
(nextval('FILE_FORMAT_TYPE_ID_SEQ')
,'TIFF'
,'TIFF File'
,(select id from database_instances where code = 'SYSTEM_DEFAULT')
);
insert into file_format_types
(id
,code
,description
,dbin_id)
values
(nextval('FILE_FORMAT_TYPE_ID_SEQ')
,'TSV'
,'Tab Separated Values File'
,(select id from database_instances where code = 'SYSTEM_DEFAULT')
);
insert into file_format_types
(id
,code
,description
,dbin_id)
values
(nextval('FILE_FORMAT_TYPE_ID_SEQ')
,'XML'
,'XML File'
,(select id from database_instances where code = 'SYSTEM_DEFAULT')
);
---------------------------------------------------------------------
-- Purpose: Insert an initial data set into the table LOCATOR_TYPES
---------------------------------------------------------------------
insert into locator_types
(id
,code
,description)
values
(nextval('LOCATOR_TYPE_ID_SEQ')
,'RELATIVE_LOCATION'
,'Relative Location'
);
---------------------------------------------------------------------
-- Purpose: Insert an initial data into table RELATIONSHIP_TYPES
---------------------------------------------------------------------
insert into relationship_types
(id,
code,
label,
parent_label,
child_label,
description,
pers_id_registerer,
is_managed_internally,
is_internal_namespace,
dbin_id)
values
(
nextval('RELATIONSHIP_TYPE_ID_SEQ'),
'PARENT_CHILD',
'Parent - Child',
'Parent',
'Child',
'Parent - Child relationship',
(select id from persons where user_id ='system'),
'T',
'T',
(select id from database_instances where code = 'SYSTEM_DEFAULT')
);
insert into relationship_types
(id,
code,
label,
parent_label,
child_label,
description,
pers_id_registerer,
is_managed_internally,
is_internal_namespace,
dbin_id)
values
(
nextval('RELATIONSHIP_TYPE_ID_SEQ'),
'PLATE_CONTROL_LAYOUT',
'Plate - Control Layout',
'Plate',
'Control Layout',
'Plate - Control Layout relationship',
(select id from persons where user_id ='system'),
'T',
'T',
(select id from database_instances where code = 'SYSTEM_DEFAULT')
);
This diff is collapsed.
-- Creating domains
CREATE DOMAIN AUTHORIZATION_ROLE AS VARCHAR(40) CHECK (VALUE IN ('ADMIN', 'POWER_USER', 'USER', 'OBSERVER', 'ETL_SERVER'));
CREATE DOMAIN BOOLEAN_CHAR AS BOOLEAN DEFAULT FALSE;
CREATE DOMAIN BOOLEAN_CHAR_OR_UNKNOWN AS CHAR(1) DEFAULT 'U' CHECK (VALUE IN ('F', 'T', 'U'));
CREATE DOMAIN CODE AS VARCHAR(60);
CREATE DOMAIN COLUMN_LABEL AS VARCHAR(128);
CREATE DOMAIN DATA_STORE_SERVICE_KIND AS VARCHAR(40) CHECK (VALUE IN ('PROCESSING', 'QUERIES'));
CREATE DOMAIN DATA_STORE_SERVICE_REPORTING_PLUGIN_TYPE AS VARCHAR(40) CHECK (VALUE IN ('TABLE_MODEL', 'DSS_LINK', 'AGGREGATION_TABLE_MODEL'));
CREATE DOMAIN EVENT_TYPE AS VARCHAR(40) CHECK (VALUE IN ('DELETION', 'MOVEMENT'));
CREATE DOMAIN FILE AS BYTEA;
CREATE DOMAIN FILE_NAME AS VARCHAR(100);
CREATE DOMAIN TEXT_VALUE AS TEXT;
CREATE DOMAIN OBJECT_NAME AS VARCHAR(50);
CREATE DOMAIN REAL_VALUE AS REAL;
CREATE DOMAIN TECH_ID AS BIGINT;
CREATE DOMAIN TIME_STAMP AS TIMESTAMP WITH TIME ZONE;
CREATE DOMAIN TIME_STAMP_DFL AS TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP;
CREATE DOMAIN USER_ID AS VARCHAR(50);
CREATE DOMAIN TITLE_100 AS VARCHAR(100);
CREATE DOMAIN GRID_EXPRESSION AS VARCHAR(2000);
CREATE DOMAIN GRID_ID AS VARCHAR(200);
CREATE DOMAIN ORDINAL_INT AS BIGINT CHECK (VALUE > 0);
CREATE DOMAIN DESCRIPTION_2000 AS VARCHAR(2000);
CREATE DOMAIN ARCHIVING_STATUS AS VARCHAR(100) CHECK (VALUE IN ('LOCKED', 'AVAILABLE', 'ARCHIVED', 'ARCHIVE_PENDING', 'UNARCHIVE_PENDING', 'BACKUP_PENDING'));
CREATE DOMAIN QUERY_TYPE AS VARCHAR(40) CHECK (VALUE IN ('GENERIC', 'EXPERIMENT', 'SAMPLE', 'DATA_SET', 'MATERIAL'));
CREATE DOMAIN ENTITY_KIND AS VARCHAR(40) CHECK (VALUE IN ('SAMPLE', 'EXPERIMENT', 'DATA_SET', 'MATERIAL'));
CREATE DOMAIN SCRIPT_TYPE AS VARCHAR(40) CHECK (VALUE IN ('DYNAMIC_PROPERTY', 'MANAGED_PROPERTY', 'ENTITY_VALIDATION'));
CREATE DOMAIN IDENTIFIER AS VARCHAR(200);
CREATE DOMAIN DATA_SET_KIND AS VARCHAR(40) CHECK (VALUE IN ('PHYSICAL', 'LINK', 'CONTAINER'));
This diff is collapsed.
-- Granting SELECT privilege to group OPENBIS_READONLY
GRANT SELECT ON SEQUENCE attachment_content_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE attachment_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE code_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE experiment_code_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE sample_code_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE controlled_vocabulary_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE core_plugin_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE cvte_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE data_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE data_set_property_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE data_set_relationship_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE data_set_type_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE data_store_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE DATA_STORE_SERVICES_ID_SEQ TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE data_type_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE database_instance_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE dstpt_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE etpt_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE event_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE experiment_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE experiment_property_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE experiment_type_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE file_format_type_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE space_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE deletion_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE locator_type_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE material_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE material_property_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE material_type_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE mtpt_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE perm_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE person_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE project_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE property_type_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE role_assignment_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE sample_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE sample_property_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE sample_type_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE stpt_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE authorization_group_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE filter_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE query_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE POST_REGISTRATION_DATASET_QUEUE_ID_SEQ TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE ENTITY_OPERATIONS_LOG_ID_SEQ TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE EXPERIMENT_RELATIONSHIPS_HISTORY_ID_SEQ TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE SAMPLE_RELATIONSHIPS_HISTORY_ID_SEQ TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE DATA_SET_RELATIONSHIPS_HISTORY_ID_SEQ TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE PROJECT_RELATIONSHIPS_HISTORY_ID_SEQ TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE EXTERNAL_DATA_MANAGEMENT_SYSTEM_ID_SEQ TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE METAPROJECT_ID_SEQ TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE METAPROJECT_ASSIGNMENT_ID_SEQ TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE grid_custom_columns_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE sample_relationship_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE script_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON SEQUENCE relationship_type_id_seq TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE attachment_contents TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE attachments TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE controlled_vocabularies TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE controlled_vocabulary_terms TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE core_plugins TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE data_all TO GROUP OPENBIS_READONLY;
GRANT SELECT ON data TO GROUP OPENBIS_READONLY;
GRANT SELECT ON data_deleted TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE data_set_properties TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE data_set_properties_history TO GROUP OPENBIS_READONLY;
GRANT SELECT ON data_set_relationships TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE data_set_relationships_all TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE data_set_type_property_types TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE data_set_types TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE data_stores TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE data_types TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE DATA_STORE_SERVICES TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE DATA_STORE_SERVICE_DATA_SET_TYPES TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE database_instances TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE database_version_logs TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE events TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE experiment_properties TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE experiment_properties_history TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE experiment_type_property_types TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE experiment_types TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE experiments_all TO GROUP OPENBIS_READONLY;
GRANT SELECT ON experiments TO GROUP OPENBIS_READONLY;
GRANT SELECT ON experiments_deleted TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE external_data TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE file_format_types TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE spaces TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE deletions TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE locator_types TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE material_properties TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE material_properties_history TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE material_type_property_types TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE material_types TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE materials TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE persons TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE projects TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE property_types TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE role_assignments TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE sample_properties TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE sample_properties_history TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE sample_type_property_types TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE sample_types TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE samples_all TO GROUP OPENBIS_READONLY;
GRANT SELECT ON samples TO GROUP OPENBIS_READONLY;
GRANT SELECT ON samples_deleted TO GROUP OPENBIS_READONLY;
GRANT SELECT ON sample_relationships TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE sample_relationships_all TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE authorization_groups TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE authorization_group_persons TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE filters TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE queries TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE scripts TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE POST_REGISTRATION_DATASET_QUEUE TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE ENTITY_OPERATIONS_LOG TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE EXPERIMENT_RELATIONSHIPS_HISTORY TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE SAMPLE_RELATIONSHIPS_HISTORY TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE DATA_SET_RELATIONSHIPS_HISTORY TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE PROJECT_RELATIONSHIPS_HISTORY TO GROUP OPENBIS_READONLY;
GRANT SELECT ON sample_history_view TO GROUP OPENBIS_READONLY;
GRANT SELECT ON data_set_history_view TO GROUP OPENBIS_READONLY;
GRANT SELECT ON experiment_history_view TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE EXTERNAL_DATA_MANAGEMENT_SYSTEMS TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE LINK_DATA TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE grid_custom_columns TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE relationship_types TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE METAPROJECTS TO GROUP OPENBIS_READONLY;
GRANT SELECT ON TABLE METAPROJECT_ASSIGNMENTS_ALL TO GROUP OPENBIS_READONLY;
GRANT SELECT ON METAPROJECT_ASSIGNMENTS TO GROUP OPENBIS_READONLY;
-- Migration from 128 to 129
CREATE INDEX EXRELH_SAMP_ID_FK_I ON EXPERIMENT_RELATIONSHIPS_HISTORY (SAMP_ID);
CREATE INDEX EXRELH_DATA_ID_FK_I ON EXPERIMENT_RELATIONSHIPS_HISTORY (DATA_ID);
CREATE INDEX SAMPRELH_SAMP_ID_FK_I ON SAMPLE_RELATIONSHIPS_HISTORY (SAMP_ID);
CREATE INDEX SAMPRELH_DATA_ID_FK_I ON SAMPLE_RELATIONSHIPS_HISTORY (DATA_ID);
CREATE INDEX DATARELH_DATA_FK_I ON DATA_SET_RELATIONSHIPS_HISTORY (DATA_ID);
CREATE OR REPLACE RULE sample_properties_delete AS
ON DELETE TO sample_properties
WHERE ((OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd')
OR OLD.CVTE_ID IS NOT NULL
OR OLD.MATE_PROP_ID IS NOT NULL)
AND (SELECT DEL_ID FROM SAMPLES_ALL WHERE ID = OLD.SAMP_ID) IS NULL
DO ALSO
INSERT INTO sample_properties_history (
ID,
SAMP_ID,
STPT_ID,
VALUE,
VOCABULARY_TERM,
MATERIAL,
PERS_ID_AUTHOR,
VALID_FROM_TIMESTAMP,
VALID_UNTIL_TIMESTAMP
) VALUES (
nextval('SAMPLE_PROPERTY_ID_SEQ'),
OLD.SAMP_ID,
OLD.STPT_ID,
OLD.VALUE,
(select (t.code || ' [' || v.code || ']') from controlled_vocabulary_terms as t join controlled_vocabularies as v on t.covo_id = v.id where t.id = OLD.CVTE_ID),
(select (m.code || ' [' || mt.code || ']') from materials as m join material_types as mt on m.maty_id = mt.id where m.id = OLD.MATE_PROP_ID),
OLD.PERS_ID_AUTHOR,
OLD.MODIFICATION_TIMESTAMP,
current_timestamp
);
CREATE OR REPLACE RULE data_set_properties_delete AS
ON DELETE TO data_set_properties
WHERE ((OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd')
OR OLD.CVTE_ID IS NOT NULL
OR OLD.MATE_PROP_ID IS NOT NULL)
AND (SELECT DEL_ID FROM DATA_ALL WHERE ID = OLD.DS_ID) IS NULL
DO ALSO
INSERT INTO data_set_properties_history (
ID,
DS_ID,
DSTPT_ID,
VALUE,
VOCABULARY_TERM,
MATERIAL,
PERS_ID_AUTHOR,
VALID_FROM_TIMESTAMP,
VALID_UNTIL_TIMESTAMP
) VALUES (
nextval('DATA_SET_PROPERTY_ID_SEQ'),
OLD.DS_ID,
OLD.DSTPT_ID,
OLD.VALUE,
(select (t.code || ' [' || v.code || ']') from controlled_vocabulary_terms as t join controlled_vocabularies as v on t.covo_id = v.id where t.id = OLD.CVTE_ID),
(select (m.code || ' [' || mt.code || ']') from materials as m join material_types as mt on m.maty_id = mt.id where m.id = OLD.MATE_PROP_ID),
OLD.PERS_ID_AUTHOR,
OLD.MODIFICATION_TIMESTAMP,
current_timestamp
);
1 \\x636f646509555345522e6465736372697074696f6e0973747564795f4f626a6563740973747564795f6f626a6563745f547970650970726f6a6563740970726f63657373696e675f696e737472756374696f6e730963656c6c5f706c617465730a4558503509412073696d706c65206578706572696d656e7409564952555331095649525553095959093e2070726f63657373696e672d696e737472756374696f6e732e747874093e2063656c6c506c617465732e7478740a4558503609616e6f74686572206578706572696d656e7409564952555331095649525553096b6f6b6f09090a
2 \\x636f646509555345522e6465736372697074696f6e0973747564795f4f626a6563740973747564795f6f626a6563745f547970650970726f6a6563740970726f63657373696e675f696e737472756374696f6e730963656c6c5f706c617465730a4558503509412073696d706c65206578706572696d656e7409564952555331095649525553095959093e2070726f63657373696e672d696e737472756374696f6e732e747874093e2063656c6c506c617465732e7478740a4558503609616e6f74686572206578706572696d656e7409564952555331095649525553096b6f6b6f09090a
3 \\x636f646509555345522e6465736372697074696f6e0973747564795f4f626a6563740973747564795f6f626a6563745f547970650970726f6a6563740970726f63657373696e675f696e737472756374696f6e730963656c6c5f706c617465730a4558503509412073696d706c65206578706572696d656e7409564952555331095649525553095959093e2070726f63657373696e672d696e737472756374696f6e732e747874093e2063656c6c506c617465732e7478740a4558503609616e6f74686572206578706572696d656e7409564952555331095649525553096b6f6b6f09090a
4 \\x636f646509555345522e6465736372697074696f6e0973747564795f4f626a6563740973747564795f6f626a6563745f547970650970726f6a6563740970726f63657373696e675f696e737472756374696f6e730963656c6c5f706c617465730a4558503509412073696d706c65206578706572696d656e7409564952555331095649525553095959093e2070726f63657373696e672d696e737472756374696f6e732e747874093e2063656c6c506c617465732e7478740a4558503609616e6f74686572206578706572696d656e7409564952555331095649525553096b6f6b6f09090a
5 \\x636f646509555345522e6465736372697074696f6e0973747564795f4f626a6563740973747564795f6f626a6563745f547970650970726f6a6563740970726f63657373696e675f696e737472756374696f6e730963656c6c5f706c617465730a4558503509412073696d706c65206578706572696d656e7409564952555331095649525553095959093e2070726f63657373696e672d696e737472756374696f6e732e747874093e2063656c6c506c617465732e7478740a4558503609616e6f74686572206578706572696d656e7409564952555331095649525553096b6f6b6f09090a
6 \\x33564350310a33564350320a3356435033
7 \\x616c610a6d610a6b6f74610a610a6b6f740a6a6573740a6964696f7461
8 \\x33564350310a33564350320a3356435033
1 2 exampleExperiments.txt 2008-12-10 13:48:17.996703+01 1 2 1 \N \N \N \N
2 2 exampleExperiments.txt 2008-12-10 13:49:14.564025+01 2 2 2 \N \N \N \N
3 2 exampleExperiments.txt 2008-12-10 13:49:20.23603+01 3 2 3 \N \N \N \N
4 2 exampleExperiments.txt 2008-12-10 13:49:27.90141+01 4 2 4 \N \N \N \N
5 8 exampleExperiments.txt 2008-12-10 13:49:48.879301+01 1 2 5 \N \N \N \N
6 8 cellPlates.txt 2008-12-10 13:51:10.050748+01 1 2 6 \N \N \N \N
7 \N sampleHistory.txt 2009-06-09 17:00:00+02 1 2 7 987 \N \N \N
8 22 cellPlates.txt 2008-12-10 13:51:10.050748+01 1 2 8 \N \N \N \N
1 PLATE_GEOMETRY The geometry or dimensions of a plate 2008-11-05 09:18:00.622+01 1 t t 1 2009-03-23 15:34:44.462776+01 t \N
2 STORAGE_FORMAT The on-disk storage format of a data set 2008-11-05 09:18:00.622+01 1 t t 1 2009-03-23 15:34:44.462776+01 t \N
3 ORGANISM available-organism 2008-11-05 09:18:30.327+01 2 f f 1 2009-03-23 15:34:44.462776+01 t \N
4 GENDER \N 2008-11-05 09:18:30.421+01 2 f f 1 2009-03-23 15:34:44.462776+01 t \N
5 HUMAN Humans 2008-11-05 09:18:30.983+01 2 f f 1 2009-03-23 15:34:44.462776+01 t \N
6 TEST_VOCABULARY Test vocabulary 2008-11-05 09:18:30.983+01 2 f f 1 2009-03-23 15:34:44.462776+01 t \N
1 96_WELLS_8X12 2008-11-05 09:18:00.622+01 1 1 \N \N 1 t
2 384_WELLS_16X24 2008-11-05 09:18:00.622+01 1 1 \N \N 2 t
3 1536_WELLS_32X48 2008-11-05 09:18:00.622+01 1 1 \N \N 3 t
4 PROPRIETARY 2008-11-05 09:18:00.622+01 2 1 \N \N 1 t
5 BDS_DIRECTORY 2008-11-05 09:18:00.622+01 2 1 \N \N 2 t
6 RAT 2008-11-05 09:18:30.327+01 3 2 \N the rat 1 t
7 DOG 2008-11-05 09:18:30.327+01 3 2 \N doggy 2 t
8 HUMAN 2008-11-05 09:18:30.327+01 3 2 \N a human 3 t
9 GORILLA 2008-11-05 09:18:30.327+01 3 2 \N a gorilla is a gorilla 4 t
10 FLY 2008-11-05 09:18:30.327+01 3 2 \N a fly flies 5 t
11 MALE 2008-11-05 09:18:30.421+01 4 2 \N \N 1 t
12 FEMALE 2008-11-05 09:18:30.421+01 4 2 \N \N 2 t
13 MAN 2008-11-05 09:18:30.983+01 5 2 \N \N 1 t
14 WOMAN 2008-11-05 09:18:30.983+01 5 2 \N \N 2 t
15 CHILD 2008-11-05 09:18:31.061+01 5 2 \N \N 3 t
16 TEST_TERM_A 2008-11-05 09:18:31.061+01 6 2 \N \N 1 t
17 TEST_TERM_B 2008-11-05 09:18:31.061+01 6 2 \N \N 2 t
2 20081105092158673-1 2 \N 2008-11-05 09:21:58.688+01 2008-11-05 09:21:58.798+01 f t 2009-03-23 15:34:44.462776+01 2 1 f 982 \N \N \N 1 \N 0
4 20081105092159188-3 2 \N 2008-11-05 09:21:59.203+01 2008-11-05 09:21:59.313+01 f t 2009-03-23 15:34:44.462776+01 2 1 t \N \N \N \N \N \N 0
5 20081105092159111-1 2 \N 2008-11-05 09:21:59.203+01 2009-02-09 12:20:21.646654+01 f t 2009-03-23 15:34:44.462776+01 18 1 f 1042 \N \N \N \N \N 0
6 20081105092159222-2 2 \N 2008-11-05 09:21:59.203+01 2009-02-09 12:21:11.479816+01 f t 2009-03-23 15:34:44.462776+01 19 1 f 1043 \N \N \N \N \N 0
7 20081105092159333-3 2 \N 2008-11-05 09:21:59.203+01 2009-02-09 12:21:47.815468+01 f t 2009-03-23 15:34:44.462776+01 20 1 f 1044 \N \N \N \N \N 0
8 20081105092259000-8 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N \N \N \N \N \N 0
9 20081105092259000-9 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N \N \N \N \N \N 0
10 20081105092259900-0 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N \N \N \N \N \N 0
11 20081105092259900-1 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N \N \N \N \N \N 0
12 20081105092359990-2 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N \N \N \N \N \N 0
13 20110509092359990-10 4 \N 2011-05-09 10:22:59.203+02 2011-05-09 10:22:59.313+02 f t 2011-05-09 16:34:44.462776+02 8 1 t \N \N \N \N \N \N 0
14 20110509092359990-11 2 \N 2011-05-09 10:22:59.203+02 2011-05-09 10:22:59.313+02 f t 2011-05-09 16:34:44.462776+02 8 1 t \N \N 1 13 \N \N 0
15 20110509092359990-12 2 \N 2011-05-09 10:22:59.203+02 2011-05-09 10:22:59.313+02 f t 2011-05-09 16:34:44.462776+02 8 1 t \N \N 2 13 \N \N 0
17 20110805092359990-17 2 \N 2008-11-05 09:21:59.203+01 2009-02-09 12:21:47.815468+01 f t 2009-03-23 15:34:44.462776+01 20 1 f 1044 \N \N \N \N \N 0
18 20081105092259000-18 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N \N \N \N \N \N 0
19 20081105092259000-19 4 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N 2 \N \N \N \N 0
20 20081105092259000-20 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N 2 \N \N \N \N 0
21 20081105092259000-21 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N 2 \N \N \N \N 0
22 20120619092259000-22 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 23 1 t \N 2 \N \N \N \N 0
23 20120628092259000-23 5 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 23 1 t \N 2 \N \N \N \N 0
24 20120628092259000-24 5 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 23 1 t \N 2 \N \N \N \N 0
25 20120628092259000-25 5 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 23 1 t \N 2 \N \N \N \N 0
26 VALIDATIONS_CNTNR-26 6 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 23 1 t \N 2 \N \N \N \N 0
27 VALIDATIONS_IMPOS-27 7 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 23 1 t \N 2 1 26 \N \N 0
28 VALIDATIONS_PARENT-28 8 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 23 1 t \N 2 \N \N \N \N 0
29 ROOT_CONTAINER 4 \N 2011-05-09 10:22:59.203+02 2011-05-09 10:22:59.313+02 f t 2011-05-09 16:34:44.462776+02 8 1 t \N \N \N \N \N \N 0
30 CONTAINER_1 4 \N 2011-05-09 10:22:59.203+02 2011-05-09 10:22:59.313+02 f t 2011-05-09 16:34:44.462776+02 8 1 t \N \N \N 29 \N \N 0
31 CONTAINER_2 4 \N 2011-05-09 10:22:59.203+02 2011-05-09 10:22:59.313+02 f t 2011-05-09 16:34:44.462776+02 8 1 t \N \N \N 29 \N \N 0
32 COMPONENT_1A 2 \N 2011-05-09 10:22:59.203+02 2011-05-09 10:22:59.313+02 f t 2011-05-09 16:34:44.462776+02 8 1 t \N \N 1 30 \N \N 0
33 COMPONENT_2A 2 \N 2011-05-09 10:22:59.203+02 2011-05-09 10:22:59.313+02 f t 2011-05-09 16:34:44.462776+02 8 1 t \N \N 1 31 \N \N 0
34 COMPONENT_1B 2 \N 2011-05-09 10:22:59.203+02 2011-05-09 10:22:59.313+02 f t 2011-05-09 16:34:44.462776+02 8 1 t \N \N 1 30 \N \N 0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment