diff --git a/src/main/java/org/olat/repository/RepositoryManager.java b/src/main/java/org/olat/repository/RepositoryManager.java index c88f61598274be4fb8d4f57560591dacac57401a..e3f796c206a9c142307129544899826df5debb98 100644 --- a/src/main/java/org/olat/repository/RepositoryManager.java +++ b/src/main/java/org/olat/repository/RepositoryManager.java @@ -2244,9 +2244,13 @@ public class RepositoryManager extends BasicManager { public List<RepositoryEntryLight> getParticipantRepositoryEntry(Identity identity, int maxResults, RepositoryEntryOrder... orderby) { StringBuilder sb = new StringBuilder(200); sb.append("select v from repoentrylight as v ") - .append(" inner join fetch v.olatResource as res ") - .append(" where v.key in (select vm.key from participantrepoentry as vm where vm.memberId=:identityKey)") - .append(" and (v.access>=3 or (v.access=").append(RepositoryEntry.ACC_OWNERS).append(" and v.membersOnly=true))"); + .append(" inner join fetch v.olatResource as res "); + if("mysql".equals(dbInstance.getDbVendor())) { + sb.append(" where exists (select vm.key from participantrepoentry as vm where v.key=vm.key and vm.memberId=:identityKey)"); + } else { + sb.append(" where v.key in (select vm.key from participantrepoentry as vm where vm.memberId=:identityKey)"); + } + sb.append(" and (v.access>=3 or (v.access=").append(RepositoryEntry.ACC_OWNERS).append(" and v.membersOnly=true))"); appendOrderBy(sb, "v", orderby); TypedQuery<RepositoryEntryLight> query = dbInstance.getCurrentEntityManager() @@ -2263,9 +2267,13 @@ public class RepositoryManager extends BasicManager { public List<RepositoryEntryLight> getTutorRepositoryEntry(Identity identity, int maxResults, RepositoryEntryOrder... orderby) { StringBuilder sb = new StringBuilder(200); sb.append("select v from repoentrylight as v ") - .append(" inner join fetch v.olatResource as res ") - .append(" where v.key in (select vm.key from tutorrepoentry as vm where vm.memberId=:identityKey)") - .append(" and (v.access>=3 or (v.access=").append(RepositoryEntry.ACC_OWNERS).append(" and v.membersOnly=true))"); + .append(" inner join fetch v.olatResource as res "); + if("mysql".equals(dbInstance.getDbVendor())) { + sb.append(" where exists (select vm.key from tutorrepoentry as vm where v.key=vm.key and vm.memberId=:identityKey)"); + } else { + sb.append(" where v.key in (select vm.key from tutorrepoentry as vm where vm.memberId=:identityKey)"); + } + sb.append(" and (v.access>=3 or (v.access=").append(RepositoryEntry.ACC_OWNERS).append(" and v.membersOnly=true))"); appendOrderBy(sb, "v", orderby); TypedQuery<RepositoryEntryLight> query = dbInstance.getCurrentEntityManager() diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql index 5c6caf39f72a1436ac7830ebcb5197285490c8cb..f230f86d841ad990d16452f6e91b3194f315c1a6 100644 --- a/src/main/resources/database/mysql/setupDatabase.sql +++ b/src/main/resources/database/mysql/setupDatabase.sql @@ -2209,7 +2209,7 @@ alter table o_qp_item add constraint idx_qp_item_type_id foreign key (fk_type) r alter table o_qp_item add constraint idx_qp_item_license_id foreign key (fk_license) references o_qp_license(id); alter table o_qp_taxonomy_level add constraint idx_qp_field_2_parent_id foreign key (fk_parent_field) references o_qp_taxonomy_level(id); -create index idx_taxon_mat_pathon on o_qp_taxonomy_level (q_mat_path_ids); +create index idx_taxon_mat_pathon on o_qp_taxonomy_level (q_mat_path_ids(255)); alter table o_qp_item_type add unique (q_type(200));