diff --git a/backend/pkg/db/postgres/session.go b/backend/pkg/db/postgres/session.go index c402ed703..39a5d2738 100644 --- a/backend/pkg/db/postgres/session.go +++ b/backend/pkg/db/postgres/session.go @@ -8,13 +8,13 @@ import ( func (conn *Conn) GetSession(sessionID uint64) (*Session, error) { s := &Session{SessionID: sessionID} - var revID, userOSVersion, userBrowserVersion *string + var revID, userOSVersion, userBrowserVersion, userState, userCity *string var issueTypes pgtype.EnumArray if err := conn.c.QueryRow(` SELECT platform, duration, project_id, start_ts, user_uuid, user_os, user_os_version, - user_device, user_device_type, user_country, + user_device, user_device_type, user_country, user_state, user_city, rev_id, tracker_version, user_id, user_anonymous_id, referrer, pages_count, events_count, errors_count, issue_types, @@ -28,7 +28,7 @@ func (conn *Conn) GetSession(sessionID uint64) (*Session, error) { ).Scan(&s.Platform, &s.Duration, &s.ProjectID, &s.Timestamp, &s.UserUUID, &s.UserOS, &userOSVersion, - &s.UserDevice, &s.UserDeviceType, &s.UserCountry, + &s.UserDevice, &s.UserDeviceType, &s.UserCountry, &userState, &userCity, &revID, &s.TrackerVersion, &s.UserID, &s.UserAnonymousID, &s.Referrer, &s.PagesCount, &s.EventsCount, &s.ErrorsCount, &issueTypes, @@ -49,5 +49,11 @@ func (conn *Conn) GetSession(sessionID uint64) (*Session, error) { if err := issueTypes.AssignTo(&s.IssueTypes); err != nil { log.Printf("can't scan IssueTypes, err: %s", err) } + if userState != nil { + s.UserState = *userState + } + if userCity != nil { + s.UserCity = *userCity + } return s, nil } diff --git a/ee/backend/pkg/db/clickhouse/connector.go b/ee/backend/pkg/db/clickhouse/connector.go index 12ed1fb3f..61e7b5e7f 100644 --- a/ee/backend/pkg/db/clickhouse/connector.go +++ b/ee/backend/pkg/db/clickhouse/connector.go @@ -105,7 +105,7 @@ func (c *connectorImpl) newBatch(name, query string) error { } var batches = map[string]string{ - "sessions": "INSERT INTO experimental.sessions (session_id, project_id, user_id, user_uuid, user_os, user_os_version, user_device, user_device_type, user_country, datetime, duration, pages_count, events_count, errors_count, issue_score, referrer, issue_types, tracker_version, user_browser, user_browser_version, metadata_1, metadata_2, metadata_3, metadata_4, metadata_5, metadata_6, metadata_7, metadata_8, metadata_9, metadata_10) VALUES (?, ?, SUBSTR(?, 1, 8000), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, SUBSTR(?, 1, 8000), ?, ?, ?, ?, SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000))", + "sessions": "INSERT INTO experimental.sessions (session_id, project_id, user_id, user_uuid, user_os, user_os_version, user_device, user_device_type, user_country, user_state, user_city, datetime, duration, pages_count, events_count, errors_count, issue_score, referrer, issue_types, tracker_version, user_browser, user_browser_version, metadata_1, metadata_2, metadata_3, metadata_4, metadata_5, metadata_6, metadata_7, metadata_8, metadata_9, metadata_10) VALUES (?, ?, SUBSTR(?, 1, 8000), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, SUBSTR(?, 1, 8000), ?, ?, ?, ?, SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000), SUBSTR(?, 1, 8000))", "resources": "INSERT INTO experimental.resources (session_id, project_id, message_id, datetime, url, type, duration, ttfb, header_size, encoded_body_size, decoded_body_size, success) VALUES (?, ?, ?, ?, SUBSTR(?, 1, 8000), ?, ?, ?, ?, ?, ?, ?)", "autocompletes": "INSERT INTO experimental.autocomplete (project_id, type, value) VALUES (?, ?, ?)", "pages": "INSERT INTO experimental.events (session_id, project_id, message_id, datetime, url, request_start, response_start, response_end, dom_content_loaded_event_start, dom_content_loaded_event_end, load_event_start, load_event_end, first_paint, first_contentful_paint_time, speed_index, visually_complete, time_to_interactive, event_type) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", @@ -273,6 +273,8 @@ func (c *connectorImpl) InsertWebSession(session *types.Session) error { nullableString(session.UserDevice), session.UserDeviceType, session.UserCountry, + session.UserState, + session.UserCity, datetime(session.Timestamp), uint32(*session.Duration), uint16(session.PagesCount),