diff --git a/backend/pkg/db/postgres/messages-common.go b/backend/pkg/db/postgres/messages-common.go index aab74dc6b..1ffdb8ddf 100644 --- a/backend/pkg/db/postgres/messages-common.go +++ b/backend/pkg/db/postgres/messages-common.go @@ -3,6 +3,7 @@ package postgres import ( "fmt" "log" + "openreplay/backend/pkg/url" "strings" "openreplay/backend/pkg/db/types" @@ -167,3 +168,15 @@ func (conn *Conn) InsertIssueEvent(sessionID uint64, projectID uint32, e *messag } return nil } + +func (conn *Conn) InsertReferrer(sessionID uint64, referrer string) error { + baseReferrer := url.DiscardURLQuery(referrer) + sqlRequest := ` + UPDATE sessions SET referrer = LEFT($1, 8000), base_referrer = LEFT($2, 8000) + WHERE session_id = $3` + conn.batchQueue(sessionID, sqlRequest, referrer, baseReferrer, sessionID) + + // Record approximate message size + conn.updateBatchSize(sessionID, len(sqlRequest)+len(referrer)+len(baseReferrer)+8) + return nil +} diff --git a/backend/pkg/db/postgres/messages-web.go b/backend/pkg/db/postgres/messages-web.go index 5b176144a..3f93ae35d 100644 --- a/backend/pkg/db/postgres/messages-web.go +++ b/backend/pkg/db/postgres/messages-web.go @@ -49,6 +49,9 @@ func (conn *Conn) InsertWebPageEvent(sessionID uint64, projectID uint32, e *Page e.SpeedIndex, e.VisuallyComplete, e.TimeToInteractive, calcResponseTime(e), calcDomBuildingTime(e)); err != nil { log.Printf("insert web page event in bulk err: %s", err) } + if err = conn.InsertReferrer(sessionID, e.Referrer); err != nil { + log.Printf("insert session referrer err: %s", err) + } // Accumulate session updates and exec inside batch with another sql commands conn.updateSessionEvents(sessionID, 1, 1) // Add new value set to autocomplete bulk