diff --git a/netquery/query_handler.go b/netquery/query_handler.go index e03f6a83..141f7dd5 100644 --- a/netquery/query_handler.go +++ b/netquery/query_handler.go @@ -190,11 +190,18 @@ func (req *QueryRequestPayload) generateSQL(ctx context.Context, schema *orm.Tab } selectClause := req.generateSelectClause() - query := `SELECT ` + selectClause + ` FROM ( SELECT *, 'memory' as _source FROM main.connections UNION SELECT *, 'history' as _source FROM history.connections) ` + inMem := `SELECT *, 'live' as _source FROM main.connections ` + inHistory := `SELECT *, 'history' as _source FROM history.connections ` + if whereClause != "" { - query += " WHERE " + whereClause + inMem += " WHERE " + whereClause + inHistory += " WHERE " + whereClause } + source := inMem + " UNION " + inHistory + + query := `SELECT ` + selectClause + ` FROM ( ` + source + ` ) ` + query += " " + groupByClause + " " + orderByClause + " " + req.Pagination.toSQLLimitOffsetClause() return strings.TrimSpace(query), req.paramMap, nil @@ -298,8 +305,7 @@ func (req *QueryRequestPayload) generateGroupByClause(schema *orm.TableSchema) ( func (req *QueryRequestPayload) generateSelectClause() string { selectClause := "*" if len(req.selectedFields) > 0 { - selectedFields := append(req.selectedFields, "_source") - selectClause = strings.Join(selectedFields, ", ") + selectClause = strings.Join(req.selectedFields, ", ") } return selectClause