From be668722495630c89a3eb9472c45eddb5b216d5a Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Sun, 25 Aug 2019 11:32:08 +1200 Subject: [PATCH] #1800 Adjust to allow for null schema and table names --- .../server/rawsql/DRawSqlService.java | 17 ++++++++++++++++- .../server/rawsql/DRawSqlServiceTest.java | 19 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/test/java/io/ebeaninternal/server/rawsql/DRawSqlServiceTest.java diff --git a/src/main/java/io/ebeaninternal/server/rawsql/DRawSqlService.java b/src/main/java/io/ebeaninternal/server/rawsql/DRawSqlService.java index 139c7c4fe..0b5eb4ad6 100644 --- a/src/main/java/io/ebeaninternal/server/rawsql/DRawSqlService.java +++ b/src/main/java/io/ebeaninternal/server/rawsql/DRawSqlService.java @@ -46,10 +46,25 @@ public class DRawSqlService implements SpiRawSqlService { name = meta.getColumnName(i); } if (ret.containsKey(name)) { - name = meta.getSchemaName(i) + "." + meta.getTableName(i) + "." + name; + name = combine(meta.getSchemaName(i), meta.getTableName(i), name); } ret.put(name, resultSet.getObject(i)); } return ret; } + + /** + * Combine schema table and column names allowing for null schema and table. + */ + String combine(String schemaName, String tableName, String name) { + + StringBuilder sb = new StringBuilder(); + if (schemaName != null) { + sb.append(schemaName).append("."); + } + if (tableName != null) { + sb.append(tableName).append("."); + } + return sb.append(name).toString(); + } } diff --git a/src/test/java/io/ebeaninternal/server/rawsql/DRawSqlServiceTest.java b/src/test/java/io/ebeaninternal/server/rawsql/DRawSqlServiceTest.java new file mode 100644 index 000000000..58391ece3 --- /dev/null +++ b/src/test/java/io/ebeaninternal/server/rawsql/DRawSqlServiceTest.java @@ -0,0 +1,19 @@ +package io.ebeaninternal.server.rawsql; + +import org.junit.Test; + +import static org.junit.Assert.*; + +public class DRawSqlServiceTest { + + private final DRawSqlService dRawSqlService = new DRawSqlService(); + + @Test + public void combine() { + + assertEquals("mycol", dRawSqlService.combine(null, null, "mycol")); + assertEquals("mytable.mycol", dRawSqlService.combine(null, "mytable", "mycol")); + assertEquals("myschema.mytable.mycol", dRawSqlService.combine("myschema", "mytable", "mycol")); + assertEquals("myschema.mycol", dRawSqlService.combine("myschema", null, "mycol")); + } +}