Skip to content

Commit b5b85d7

Browse files
committed
Replace direct user of char() as string with SqlFragment in GroupConcats
1 parent 9b8e23c commit b5b85d7

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

GenotypeAssays/src/org/labkey/genotypeassays/GeneticsTableCustomizer.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,7 @@ private void customizeSummaryByLineage(AbstractTableInfo ti)
143143
newCol.setURL(DetailsURL.fromString("/query/executeQuery.view?schemaName=assay." + ap.getName().replaceAll(" ", "") + "." + protocols.get(0).getName() + "&query.queryName=data&query.analysisId~eq=${analysis_id}", (ti.getUserSchema().getContainer().isWorkbook() ? ti.getUserSchema().getContainer().getParent() : ti.getUserSchema().getContainer())));
144144
ti.addColumn(newCol);
145145

146-
String chr = ti.getSqlDialect().isPostgreSQL() ? "chr" : "char";
147-
SQLFragment sql3 = new SQLFragment("(select ").append(ti.getSqlDialect().getGroupConcat(new SQLFragment("hs.haplotype"), true, true, chr + "(10)")).append(" as expr FROM assayresult.").append(d.getStorageTableName()).append(" a JOIN sequenceanalysis.haplotype_sequences hs ON (a.marker = hs.haplotype AND hs.type = 'Lineage' AND hs.present = ").append(ti.getSqlDialect().getBooleanTRUE()).append(") WHERE a.analysisId = ").append(ExprColumn.STR_TABLE_ALIAS).append(".analysis_id AND a.result IS NULL AND hs.name = ").append(ExprColumn.STR_TABLE_ALIAS).append(".lineages)");
146+
SQLFragment sql3 = new SQLFragment("(select ").append(ti.getSqlDialect().getGroupConcat(new SQLFragment("hs.haplotype"), true, true, getNewlineSql(ti))).append(" as expr FROM assayresult.").append(d.getStorageTableName()).append(" a JOIN sequenceanalysis.haplotype_sequences hs ON (a.marker = hs.haplotype AND hs.type = 'Lineage' AND hs.present = ").append(ti.getSqlDialect().getBooleanTRUE()).append(") WHERE a.analysisId = ").append(ExprColumn.STR_TABLE_ALIAS).append(".analysis_id AND a.result IS NULL AND hs.name = ").append(ExprColumn.STR_TABLE_ALIAS).append(".lineages)");
148147
ExprColumn newCol3 = new ExprColumn(ti, "cachedHaplotypes", sql3, JdbcType.VARCHAR, ti.getColumn("analysis_id"), ti.getColumn("lineages"));
149148
newCol3.setLabel("Matching Cached Haplotypes");
150149
ti.addColumn(newCol3);
@@ -169,7 +168,7 @@ private void customizeSummaryGrouped(AbstractTableInfo ti)
169168

170169
Domain d = ap.getResultsDomain(protocols.get(0));
171170
String chr = ti.getSqlDialect().isPostgreSQL() ? "chr" : "char";
172-
SQLFragment sql3 = new SQLFragment("(select ").append(ti.getSqlDialect().getGroupConcat(new SQLFragment("hs.haplotype"), true, true, chr + "(10)")).append(" as expr FROM assayresult." + d.getStorageTableName() + " a JOIN sequenceanalysis.haplotype_sequences hs ON (a.marker = hs.haplotype AND hs.type = 'Lineage' AND hs.present = " + ti.getSqlDialect().getBooleanTRUE() + ") WHERE a.analysisId = " + ExprColumn.STR_TABLE_ALIAS + ".analysis_id AND a.result IS NULL AND hs.name = " + ExprColumn.STR_TABLE_ALIAS + ".lineages)");
171+
SQLFragment sql3 = new SQLFragment("(select ").append(ti.getSqlDialect().getGroupConcat(new SQLFragment("hs.haplotype"), true, true, getNewlineSql(ti))).append(" as expr FROM assayresult." + d.getStorageTableName() + " a JOIN sequenceanalysis.haplotype_sequences hs ON (a.marker = hs.haplotype AND hs.type = 'Lineage' AND hs.present = " + ti.getSqlDialect().getBooleanTRUE() + ") WHERE a.analysisId = " + ExprColumn.STR_TABLE_ALIAS + ".analysis_id AND a.result IS NULL AND hs.name = " + ExprColumn.STR_TABLE_ALIAS + ".lineages)");
173172
ExprColumn newCol3 = new ExprColumn(ti, "cachedHaplotypes", sql3, JdbcType.VARCHAR, ti.getColumn("analysis_id"), ti.getColumn("lineages"));
174173
newCol3.setLabel("Matching Cached Haplotypes");
175174
ti.addColumn(newCol3);

tcrdb/src/org/labkey/tcrdb/TCRdbTableCustomizer.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ private void addAssayFieldsToTable(AbstractTableInfo ti, String urlField, String
136136
newCol3.setURL(details);
137137
ti.addColumn(newCol3);
138138

139-
SQLFragment sql4 = new SQLFragment("(select ").append(ti.getSqlDialect().getGroupConcat(new SQLFragment("CDR3"), true, true, getChr(ti) + "(10)")).append(" FROM (").append(selectSql).append(") a ").append(whereClause).append(" )");
139+
SQLFragment sql4 = new SQLFragment("(select ").append(ti.getSqlDialect().getGroupConcat(new SQLFragment("CDR3"), true, true, getNewlineSql(ti))).append(" FROM (").append(selectSql).append(") a ").append(whereClause).append(" )");
140140
ExprColumn newCol4 = new ExprColumn(ti, "distinctCDR3s" + colNameSuffix, sql4, JdbcType.VARCHAR, ti.getColumn("rowid"));
141141
newCol4.setLabel("Distinct CDR3s" + colLabelSuffix);
142142
newCol4.setURL(details);
@@ -199,7 +199,7 @@ private void addAssayClonotypeColumn(AbstractTableInfo ti)
199199
SQLFragment selectSql = QueryService.get().getSelectSQL(ti, Arrays.asList(ti.getColumn("analysisId"), ti.getColumn("cloneId"), ti.getColumn("Run"), ti.getColumn("cDNA"), ti.getColumn("cdr3"), ti.getColumn("locus")), filter, null, Table.ALL_ROWS, Table.NO_OFFSET, false);
200200

201201
String whereClause = " WHERE (a.cloneId = " + ExprColumn.STR_TABLE_ALIAS + ".cloneId AND a.analysisId = " + ExprColumn.STR_TABLE_ALIAS + ".analysisId AND a.Run = " + ExprColumn.STR_TABLE_ALIAS + ".Run AND a.cDNA = " + ExprColumn.STR_TABLE_ALIAS + ".cDNA) ";
202-
SQLFragment sql = new SQLFragment("(select ").append(ti.getSqlDialect().getGroupConcat(new SQLFragment(ti.getSqlDialect().concatenate("a.locus", "':'", "a.CDR3")), true, true, getChr(ti) + "(10)")).append(" FROM (").append(selectSql).append(") a ").append(whereClause).append(" )");
202+
SQLFragment sql = new SQLFragment("(select ").append(ti.getSqlDialect().getGroupConcat(new SQLFragment(ti.getSqlDialect().concatenate("a.locus", "':'", "a.CDR3")), true, true, getNewlineSql(ti))).append(" FROM (").append(selectSql).append(") a ").append(whereClause).append(" )");
203203
ExprColumn newCol = new ExprColumn(ti, "clonotypes", sql, JdbcType.VARCHAR, ti.getColumn("analysisId"), ti.getColumn("cloneId"));
204204
newCol.setLabel("Clonotype for Clone");
205205
newCol.setDescription("CDR3 clonotypes for this cloneId");
@@ -215,7 +215,7 @@ private void addClonotypeForLocusCol(AbstractTableInfo ti, SQLFragment selectSql
215215
DetailsURL detailsURL = details.clone();
216216
detailsURL.addParameter("data.locus~eq", locus);
217217

218-
SQLFragment sql = new SQLFragment("(select ").append(ti.getSqlDialect().getGroupConcat(new SQLFragment("CDR3"), true, true, getChr(ti) + "(10)")).append(" FROM (").append(selectSql).append(") a ").append(whereClause).append(" )");
218+
SQLFragment sql = new SQLFragment("(select ").append(ti.getSqlDialect().getGroupConcat(new SQLFragment("CDR3"), true, true, getNewlineSql(ti))).append(" FROM (").append(selectSql).append(") a ").append(whereClause).append(" )");
219219
ExprColumn newCol = new ExprColumn(ti, "clonotype" + locus + colNameSuffix, sql, JdbcType.VARCHAR, ti.getColumn("rowid"));
220220
newCol.setLabel("Clonotype: " + locus + colLabelSuffix);
221221
newCol.setDescription("Showing CDR3 clonotypes for " + locus + " with fraction >=0.05");
@@ -250,7 +250,7 @@ private void customizeClones(AbstractTableInfo ti)
250250
TableInfo data = schema.createDataTable(null,false);
251251
SQLFragment dataSelectSql = QueryService.get().getSelectSQL(data, Arrays.asList(data.getColumn("subjectId"), data.getColumn("cdr3"), data.getColumn("fraction")), null, null, Table.ALL_ROWS, Table.NO_OFFSET, false);
252252

253-
SQLFragment sql = new SQLFragment("(select ").append(ti.getSqlDialect().getGroupConcat(new SQLFragment("a.subjectId"), true, true, getChr(ti) + "(10)")).append(" as expr FROM (").append(dataSelectSql).append(") a WHERE a.cdr3 = " + ExprColumn.STR_TABLE_ALIAS + ".cdr3 AND a.fraction >= 0.005)");
253+
SQLFragment sql = new SQLFragment("(select ").append(ti.getSqlDialect().getGroupConcat(new SQLFragment("a.subjectId"), true, true, getNewlineSql(ti))).append(" as expr FROM (").append(dataSelectSql).append(") a WHERE a.cdr3 = " + ExprColumn.STR_TABLE_ALIAS + ".cdr3 AND a.fraction >= 0.005)");
254254
ExprColumn col = new ExprColumn(ti, colName, sql, JdbcType.VARCHAR, ti.getColumn("cdr3"));
255255
col.setLabel("Animals with CDR3");
256256
col.setURL(details);
@@ -265,7 +265,7 @@ private void customizeAssayData(AbstractTableInfo ti)
265265
String colName = "cloneNames";
266266
if (ti.getColumn(colName) == null)
267267
{
268-
SQLFragment sql = new SQLFragment("(select ").append(ti.getSqlDialect().getGroupConcat(new SQLFragment("c.cloneName"), true, true, getChr(ti) + "(10)")).append(" as expr FROM " + TCRdbSchema.NAME + "." + TCRdbSchema.TABLE_CLONES + " c WHERE c.cdr3 = " + ExprColumn.STR_TABLE_ALIAS + ".cdr3)");
268+
SQLFragment sql = new SQLFragment("(select ").append(ti.getSqlDialect().getGroupConcat(new SQLFragment("c.cloneName"), true, true, getNewlineSql(ti))).append(" as expr FROM " + TCRdbSchema.NAME + "." + TCRdbSchema.TABLE_CLONES + " c WHERE c.cdr3 = " + ExprColumn.STR_TABLE_ALIAS + ".cdr3)");
269269
ExprColumn col = new ExprColumn(ti, colName, sql, JdbcType.VARCHAR, ti.getColumn("cdr3"));
270270
col.setLabel("Clone Name(s)");
271271
ti.addColumn(col);

0 commit comments

Comments
 (0)