Skip to content

Commit 9db5f7e

Browse files
authored
Do not use GROUP_CONCAT when fetching entity variables (#1609)
1 parent a036487 commit 9db5f7e

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

internal/sqldb/query.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -376,10 +376,10 @@ func (sc *SQLClient) GetContainedInPlace(ctx context.Context, childPlaceType str
376376
func (sc *SQLClient) GetEntityVariables(ctx context.Context, entities []string) ([]*EntityVariables, error) {
377377
defer util.TimeTrack(time.Now(), "SQL: GetEntityVariables")
378378

379-
rows := []*EntityVariables{}
379+
results := []*EntityVariables{}
380380

381381
if len(entities) == 0 {
382-
return rows, nil
382+
return results, nil
383383
}
384384

385385
stmt := statement{
@@ -389,6 +389,7 @@ func (sc *SQLClient) GetEntityVariables(ctx context.Context, entities []string)
389389
},
390390
}
391391

392+
rows := []*EntityVariable{}
392393
err := sc.queryAndCollect(
393394
ctx,
394395
stmt,
@@ -397,7 +398,19 @@ func (sc *SQLClient) GetEntityVariables(ctx context.Context, entities []string)
397398
if err != nil {
398399
return nil, err
399400
}
400-
return rows, nil
401+
402+
// Convert []*EntityVariable to []*EntityVariables by grouping variables by entity.
403+
entityVarMap := map[string][]string{}
404+
for _, row := range rows {
405+
entityVarMap[row.Entity] = append(entityVarMap[row.Entity], row.Variable)
406+
}
407+
for entity, variables := range entityVarMap {
408+
results = append(results, &EntityVariables{
409+
Entity: entity,
410+
Variables: variables,
411+
})
412+
}
413+
return results, nil
401414
}
402415

403416
// GetAllEntitiesAndVariables returns all entities and variables in the DB.

internal/sqldb/statements.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -226,10 +226,9 @@ var statements = struct {
226226
AND t2.object_id IN (:parentPlaces);
227227
`,
228228
getEntityVariables: `
229-
SELECT entity, GROUP_CONCAT(DISTINCT variable) variables
229+
SELECT DISTINCT entity, variable
230230
FROM observations
231-
WHERE entity in (:entities)
232-
GROUP BY entity;
231+
WHERE entity in (:entities);
233232
`,
234233
getAllEntitiesAndVariables: `
235234
SELECT DISTINCT entity, variable

0 commit comments

Comments
 (0)