Skip to content

Commit

Permalink
Fixed updateReferredByForAllT1Referrals sql timeouts: using orderby r…
Browse files Browse the repository at this point in the history
…andom() only 1 time for all users instead of for each record.
  • Loading branch information
ice-myles committed Feb 12, 2024
1 parent fb9ee0e commit 58a1d0c
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 31 deletions.
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ require (
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/distribution/reference v0.5.0 // indirect
github.com/docker/distribution v2.8.3+incompatible // indirect
github.com/docker/docker v25.0.2+incompatible // indirect
github.com/docker/docker v25.0.3+incompatible // indirect
github.com/docker/go-connections v0.5.0 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
Expand All @@ -66,7 +66,7 @@ require (
github.com/go-openapi/swag v0.22.9 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.17.0 // indirect
github.com/go-playground/validator/v10 v10.18.0 // indirect
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
github.com/goccy/go-reflect v1.2.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,8 @@ github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/o
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
github.com/go-playground/validator/v10 v10.17.0 h1:SmVVlfAOtlZncTxRuinDPomC2DkXJ4E5T9gDA0AIH74=
github.com/go-playground/validator/v10 v10.17.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
github.com/go-playground/validator/v10 v10.18.0 h1:BvolUXjp4zuvkZ5YN5t7ebzbhlUtPsPm2S9NAZ5nl9U=
github.com/go-playground/validator/v10 v10.18.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
Expand Down
58 changes: 31 additions & 27 deletions users/users_delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,34 +93,38 @@ func (r *repository) updateReferredByForAllT1Referrals(ctx context.Context, user
if ctx.Err() != nil {
return errors.Wrap(ctx.Err(), "context failed")
}
sql := `SELECT ( SELECT X.ID
sql := `
WITH randomized AS (
SELECT id, referred_by, created_at FROM users
WHERE id != 'bogus'
AND id != 'icenetwork'
AND username != id
AND referred_by != id
AND id != $1
AND referred_by != $1
ORDER BY random()
)
SELECT ( SELECT X.ID
FROM ( SELECT X.ID
FROM ( SELECT r.id
FROM users r
WHERE 1=1
AND r.id != 'bogus'
AND r.id != 'icenetwork'
AND r.id != $1
AND r.id != u.id
AND r.referred_by != u.id
AND r.referred_by != r.id
AND r.username != r.id
AND r.referred_by != $1
AND r.created_at < u.created_at
ORDER BY RANDOM()
LIMIT 1
) X
UNION ALL
SELECT u.id AS ID
) X
LIMIT 1
) new_referred_by,
u.ID as id
FROM users u
WHERE u.referred_by = $1
AND u.id != $1`
FROM (
SELECT r.id
FROM randomized r
WHERE r.id != u.id
AND r.referred_by != u.id
AND r.created_at < u.created_at
LIMIT 1
) X
UNION ALL
SELECT u.id AS ID
) X
LIMIT 1
) new_referred_by,
u.ID as id
FROM users u
WHERE u.referred_by = $1
AND u.id != $1`
type resp struct {
NewReferredBy UserID
ID UserID `db:"id"`
Expand Down

0 comments on commit 58a1d0c

Please sign in to comment.