diff --git a/internal/database/offline/postgres/join.go b/internal/database/offline/postgres/join.go index c9dcfcd7b..7d02f214c 100644 --- a/internal/database/offline/postgres/join.go +++ b/internal/database/offline/postgres/join.go @@ -134,10 +134,15 @@ func (db *DB) readJoinedTable(ctx context.Context, entityRowsTableName string, t } data := make(chan []interface{}) - var scanErr error + var scanErr, dropErr error go func() { - defer rows.Close() - defer close(data) + defer func() { + if err := db.dropTemporaryTables(ctx, tableNames); err != nil { + dropErr = err + } + defer rows.Close() + defer close(data) + }() for rows.Next() { record, err := rows.SliceScan() if err != nil { @@ -146,10 +151,15 @@ func (db *DB) readJoinedTable(ctx context.Context, entityRowsTableName string, t data <- record } }() + + // TODO: return errors through channel + if scanErr != nil { + return nil, scanErr + } return &types.JoinResult{ Header: header, Data: data, - }, scanErr + }, dropErr } func (db *DB) dropTemporaryTables(ctx context.Context, tableNames []string) error {