VRFS-1664 replace tmp tbl with subquery
This commit is contained in:
parent
9c0afd6ccd
commit
e35e318884
|
|
@ -9,7 +9,6 @@ module JamRuby
|
|||
VAR_MUSICIAN_TABLE = "@MUSICIAN_TABLE"
|
||||
|
||||
TMP_NEW = 'tmp_new_musicians'
|
||||
TMP_CAND = 'tmp_receiver_candidates'
|
||||
TMP_PAIRS = 'tmp_receivers_new_musicians'
|
||||
|
||||
def self.subject
|
||||
|
|
@ -32,37 +31,31 @@ SQL
|
|||
ActiveRecord::Base.connection.execute(sql)
|
||||
end
|
||||
|
||||
def _fetch_receiver_candidates
|
||||
ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS #{TMP_CAND}")
|
||||
sql =<<SQL
|
||||
SELECT
|
||||
users.id AS receiver_candidate_id, users.last_jam_locidispid AS last_jam_locidispid
|
||||
INTO TEMP TABLE #{TMP_CAND}
|
||||
FROM users
|
||||
FULL OUTER JOIN #{TMP_NEW} ON users.id = #{TMP_NEW}.new_user_id
|
||||
WHERE
|
||||
users.musician = 't' AND
|
||||
users.subscribe_email = 't' AND
|
||||
users.last_jam_locidispid IS NOT NULL AND
|
||||
(#{TMP_NEW}.new_user_id IS NULL OR users.id IS NULL)
|
||||
SQL
|
||||
ActiveRecord::Base.connection.execute(sql)
|
||||
end
|
||||
|
||||
def _fetch_eligible_receivers
|
||||
ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS #{TMP_PAIRS}")
|
||||
# load eligible recipients into tmp table
|
||||
sql =<<SQL
|
||||
SELECT
|
||||
#{TMP_NEW}.new_user_id,
|
||||
#{TMP_CAND}.receiver_candidate_id AS receiver_id,
|
||||
receivers.id AS receiver_id,
|
||||
scores.score AS latency
|
||||
INTO TEMP TABLE #{TMP_PAIRS}
|
||||
FROM scores
|
||||
INNER JOIN #{TMP_CAND} ON #{TMP_CAND}.last_jam_locidispid = scores.alocidispid
|
||||
INNER JOIN users AS receivers ON receivers.last_jam_locidispid = scores.alocidispid
|
||||
INNER JOIN #{TMP_NEW} ON #{TMP_NEW}.last_jam_locidispid = scores.blocidispid
|
||||
WHERE
|
||||
scores.score < #{Score::MAX_YELLOW_LATENCY}
|
||||
scores.score < #{Score::MAX_YELLOW_LATENCY} AND
|
||||
receivers.id IN (
|
||||
SELECT
|
||||
rr.id
|
||||
FROM users rr
|
||||
FULL OUTER JOIN #{TMP_NEW} ON rr.id = #{TMP_NEW}.new_user_id
|
||||
WHERE
|
||||
rr.musician = 't' AND
|
||||
rr.subscribe_email = 't' AND
|
||||
rr.last_jam_locidispid IS NOT NULL AND
|
||||
(#{TMP_NEW}.new_user_id IS NULL OR rr.id IS NULL)
|
||||
)
|
||||
SQL
|
||||
ActiveRecord::Base.connection.execute(sql)
|
||||
end
|
||||
|
|
@ -72,9 +65,6 @@ SQL
|
|||
# load new musicians into tmp table
|
||||
self._fetch_new_musicians
|
||||
|
||||
# load receiver candidates into tmp table
|
||||
self._fetch_receiver_candidates
|
||||
|
||||
# load email receivers into tmp table
|
||||
self._fetch_eligible_receivers
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue