From ad8ad61190dd0efcd3a4dd9581e04294c917a5bb Mon Sep 17 00:00:00 2001 From: Morris Swertz Date: Fri, 14 Feb 2025 17:58:43 +0100 Subject: [PATCH] fix: querying refback with files. closes #4703 (#4713) --- .../java/org/molgenis/emx2/sql/SqlQuery.java | 12 +++++----- .../org/molgenis/emx2/sql/TestRefBack.java | 22 +++++++++++++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/backend/molgenis-emx2-sql/src/main/java/org/molgenis/emx2/sql/SqlQuery.java b/backend/molgenis-emx2-sql/src/main/java/org/molgenis/emx2/sql/SqlQuery.java index 4cf27d52d4..56974e54b4 100644 --- a/backend/molgenis-emx2-sql/src/main/java/org/molgenis/emx2/sql/SqlQuery.java +++ b/backend/molgenis-emx2-sql/src/main/java/org/molgenis/emx2/sql/SqlQuery.java @@ -158,22 +158,22 @@ private List> rowSelectFields( if (column.isFile()) { // check what they want to get, contents, mimetype, size, filename and/or extension if (select.getSubselect().isEmpty() || select.has("id")) { - fields.add(field(name(column.getName()))); + fields.add(field(name(alias(tableAlias), column.getName()))); } if (select.has("contents")) { - fields.add(field(name(column.getName() + "_contents"))); + fields.add(field(name(alias(tableAlias), column.getName() + "_contents"))); } if (select.has("size")) { - fields.add(field(name(column.getName() + "_size"))); + fields.add(field(name(alias(tableAlias), column.getName() + "_size"))); } if (select.has("mimetype")) { - fields.add(field(name(column.getName() + "_mimetype"))); + fields.add(field(name(alias(tableAlias), column.getName() + "_mimetype"))); } if (select.has("filename")) { - fields.add(field(name(column.getName() + "_filename"))); + fields.add(field(name(alias(tableAlias), column.getName() + "_filename"))); } if (select.has("extension")) { - fields.add(field(name(column.getName() + "_extension"))); + fields.add(field(name(alias(tableAlias), column.getName() + "_extension"))); } } else if (column.isReference() // if subselection, then we will add it as subselect diff --git a/backend/molgenis-emx2-sql/src/test/java/org/molgenis/emx2/sql/TestRefBack.java b/backend/molgenis-emx2-sql/src/test/java/org/molgenis/emx2/sql/TestRefBack.java index 4ec428196d..f3bf564442 100644 --- a/backend/molgenis-emx2-sql/src/test/java/org/molgenis/emx2/sql/TestRefBack.java +++ b/backend/molgenis-emx2-sql/src/test/java/org/molgenis/emx2/sql/TestRefBack.java @@ -239,4 +239,26 @@ public void testRefBackUsingSubclasses() { schema.getTable("subject").insert(row("id", "s1")); schema.getTable("treatmentxyz").insert(row("id", "t1")); } + + @Test + void testRefBackAndFile_fix4703() { + Table test = + schema.create( + table( + "test4703", + column("id").setPkey(), + column("ref").setType(REF).setRefTable("test4703"), + column("refback").setType(REFBACK).setRefTable("test4703").setRefBack("ref"), + column("file").setType(FILE))); + + assertDoesNotThrow( + () -> + test.query() + .select( + s("id"), + s("ref"), + s("refback", s("ref")), + s("file", s("id"), s("filename"), s("mimetype"))) + .retrieveRows()); + } }