From 3d11a93b527088e2e44b07cf4d57a2ac226bdc3e Mon Sep 17 00:00:00 2001 From: pieterlukasse Date: Tue, 21 Jan 2025 20:12:28 +0100 Subject: [PATCH] fix: fix temp table alias --- models/helper.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/models/helper.go b/models/helper.go index 03d191e..cee242d 100644 --- a/models/helper.go +++ b/models/helper.go @@ -69,12 +69,12 @@ func QueryFilterByConceptDefHelper(query *gorm.DB, sourceId int, filterConceptDe // simple filterConceptDef with just the concept id simpleFilterConceptDef := utils.CustomConceptVariableDef{ConceptId: filterConceptDef.ConceptId} resultingQuery := QueryFilterByConceptDefHelper2(query, sourceId, simpleFilterConceptDef, - omopDataSource, "", personIdFieldForObservationJoin, "observation_continuous", observationTableAlias) + omopDataSource, "", personIdFieldForObservationJoin, "observation_continuous", observationTableAlias+"_a") tmpTransformedTable, err := TransformDataIntoTempTable(omopDataSource, resultingQuery, filterConceptDef) // TODO - the resulting query should actually be Select * from temptable.... as this collapses all underlying queries. TODO2 - ensure the transform method also filters.... resultingQuery = QueryFilterByConceptDefHelper2(query, sourceId, filterConceptDef, //TODO - turn around - omopDataSource, "", personIdFieldForObservationJoin, tmpTransformedTable, observationTableAlias) - return resultingQuery, tmpTransformedTable, err + omopDataSource, "", personIdFieldForObservationJoin, tmpTransformedTable, observationTableAlias+"_b") + return resultingQuery, observationTableAlias + "_b", err } else { // simple filterConceptDef with no transformation @@ -88,9 +88,9 @@ func QueryFilterByConceptDefHelper2(query *gorm.DB, sourceId int, filterConceptD omopDataSource *utils.DbAndSchema, resultSchemaName string, personIdFieldForObservationJoin string, observationDataSource string, observationTableAlias string) *gorm.DB { log.Printf("Adding extra INNER JOIN with alias %s", observationTableAlias) aliasedObservationDataSource := omopDataSource.Schema + "." + observationDataSource + " as " + observationTableAlias + omopDataSource.GetViewDirective() - if strings.HasPrefix(observationDataSource, "tmp_") { - aliasedObservationDataSource = observationDataSource - observationTableAlias = aliasedObservationDataSource + // for temp table, the alias is slightly different: + if strings.HasPrefix(observationDataSource, "tmp_") || strings.HasPrefix(observationDataSource, "#tmp_") { + aliasedObservationDataSource = observationDataSource + " as " + observationTableAlias } query = query.Joins("INNER JOIN "+aliasedObservationDataSource+" ON "+observationTableAlias+".person_id = "+personIdFieldForObservationJoin). Where(observationTableAlias+".observation_concept_id = ?", filterConceptDef.ConceptId)