Skip to content
Snippets Groups Projects
Commit 03edafa1 authored by Bartek Wrona's avatar Bartek Wrona
Browse files

Merge branch 'mt-fix-tests' into 'develop'

Fixed result of inaccurate assumption

See merge request !68
parents eec369bd af8ec930
No related branches found
No related tags found
4 merge requests!456Release candidate v1 24,!230Setup monitoring with pghero,!135Enable postgres monitoring on CI server,!68Fixed result of inaccurate assumption
......@@ -207,7 +207,7 @@ class Blocks:
if not is_initial_sync:
Accounts.dirty(op['author']) # lite - rep
Accounts.dirty(op['voter']) # lite - stats
Votes.vote_op(op)
Votes.vote_op(op, cls._head_block_date)
# misc ops
elif op_type == 'transfer_operation':
......
......@@ -161,7 +161,6 @@ class Posts:
payout = COALESCE( CAST( data_source.payout as DECIMAL ), ihp.payout ),
pending_payout = COALESCE( CAST( data_source.pending_payout as DECIMAL ), ihp.pending_payout ),
payout_at = COALESCE( CAST( data_source.payout_at as TIMESTAMP ), ihp.payout_at ),
updated_at = data_source.updated_at,
last_payout = COALESCE( CAST( data_source.last_payout as TIMESTAMP ), ihp.last_payout ),
cashout_time = COALESCE( CAST( data_source.cashout_time as TIMESTAMP ), ihp.cashout_time ),
is_paidout = COALESCE( CAST( data_source.is_paidout as BOOLEAN ), ihp.is_paidout )
......@@ -177,7 +176,6 @@ class Posts:
t.payout,
t.pending_payout,
t.payout_at,
t.updated_at,
t.last_payout,
t.cashout_time,
t.is_paidout
......@@ -196,7 +194,6 @@ class Posts:
payout,
pending_payout,
payout_at,
updated_at,
last_payout,
cashout_time,
is_paidout)
......@@ -310,7 +307,7 @@ class Posts:
payout_at = date #Here should be `cashout_time`
last_payout = date
cls._comment_payout_ops.append("('{}', '{}', {}, {}, {}, {}, {}, {}, {}, {}, {}, '{}'::timestamp, {}, {}, {})".format(
cls._comment_payout_ops.append("('{}', '{}', {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {})".format(
author,
permlink,
"NULL" if ( total_payout_value is None ) else ( "'{}'".format( legacy_amount(total_payout_value) ) ),
......@@ -323,7 +320,6 @@ class Posts:
"NULL" if ( pending_payout is None ) else pending_payout,
"NULL" if ( payout_at is None ) else ( "'{}'::timestamp".format( payout_at ) ),
date,#updated_at
"NULL" if ( last_payout is None ) else ( "'{}'::timestamp".format( last_payout ) ),
"NULL" if ( cashout_time is None ) else ( "'{}'::timestamp".format( cashout_time ) ),
......
......@@ -49,11 +49,12 @@ class Votes:
inside_flush = False
@classmethod
def vote_op(cls, vop):
def vote_op(cls, vote_operation, date):
""" Process vote_operation """
voter = vop['voter']
author = vop['author']
permlink = vop['permlink']
voter = vote_operation['voter']
author = vote_operation['author']
permlink = vote_operation['permlink']
weight = vote_operation['weight']
if(cls.inside_flush):
log.info("Adding new vote-info into '_votes_data' dict")
......@@ -64,10 +65,10 @@ class Votes:
cls._votes_data[key] = dict(voter=voter,
author=author,
permlink=permlink,
vote_percent=0,
vote_percent=weight,
weight=0,
rshares=0,
last_update="1969-12-31T23:59:59")
last_update=date)
@classmethod
def effective_comment_vote_op(cls, key, vop, date):
......@@ -79,7 +80,6 @@ class Votes:
assert key in cls._votes_data
cls._votes_data[key]["vote_percent"] = vop["vote_percent"]
cls._votes_data[key]["weight"] = vop["weight"]
cls._votes_data[key]["rshares"] = vop["rshares"]
cls._votes_data[key]["last_update"] = date
......@@ -90,33 +90,29 @@ class Votes:
cls.inside_flush = True
if cls._votes_data:
sql = """
INSERT INTO hive_votes
(post_id, voter_id, author_id, permlink_id, weight, rshares, vote_percent, last_update)
select data_source.post_id, data_source.voter_id, data_source.author_id, data_source.permlink_id, data_source.weight, data_source.rshares, data_source.vote_percent, data_source.last_update
from
(
SELECT hp.id as post_id, ha_v.id as voter_id, ha_a.id as author_id, hpd_p.id as permlink_id, t.weight, t.rshares, t.vote_percent, t.last_update
from
(
VALUES
-- voter, author, permlink, weight, rshares, vote_percent, last_update
{}
) AS T(voter, author, permlink, weight, rshares, vote_percent, last_update)
INNER JOIN hive_accounts ha_v ON ha_v.name = t.voter
INNER JOIN hive_accounts ha_a ON ha_a.name = t.author
INNER JOIN hive_permlink_data hpd_p ON hpd_p.permlink = t.permlink
INNER JOIN hive_posts hp ON hp.author_id = ha_a.id AND hp.permlink_id = hpd_p.id
) as data_source(post_id, voter_id, author_id, permlink_id, weight, rshares, vote_percent, last_update)
ON CONFLICT ON CONSTRAINT hive_votes_ux1 DO
UPDATE
SET
weight = EXCLUDED.weight,
rshares = EXCLUDED.rshares,
vote_percent = EXCLUDED.vote_percent,
last_update = EXCLUDED.last_update,
num_changes = hive_votes.num_changes + 1
WHERE hive_votes.voter_id = EXCLUDED.voter_id and hive_votes.author_id = EXCLUDED.author_id and hive_votes.permlink_id = EXCLUDED.permlink_id;
"""
INSERT INTO hive_votes
(post_id, voter_id, author_id, permlink_id, weight, rshares, vote_percent, last_update)
SELECT hp.id as post_id, ha_v.id as voter_id, ha_a.id as author_id, hpd_p.id as permlink_id, t.weight, t.rshares, t.vote_percent, t.last_update
FROM
(
VALUES
-- voter, author, permlink, weight, rshares, vote_percent, last_update
{}
) AS T(voter, author, permlink, weight, rshares, vote_percent, last_update)
INNER JOIN hive_accounts ha_v ON ha_v.name = t.voter
INNER JOIN hive_accounts ha_a ON ha_a.name = t.author
INNER JOIN hive_permlink_data hpd_p ON hpd_p.permlink = t.permlink
INNER JOIN hive_posts hp ON hp.author_id = ha_a.id AND hp.permlink_id = hpd_p.id
ON CONFLICT ON CONSTRAINT hive_votes_ux1 DO
UPDATE
SET
weight = (CASE (SELECT hp.is_paidout FROM hive_posts hp WHERE hp.id = EXCLUDED.post_id) WHEN true THEN hive_votes.weight ELSE EXCLUDED.weight END),
rshares = (CASE (SELECT hp.is_paidout FROM hive_posts hp WHERE hp.id = EXCLUDED.post_id) WHEN true THEN hive_votes.rshares ELSE EXCLUDED.rshares END),
vote_percent = EXCLUDED.vote_percent,
last_update = EXCLUDED.last_update,
num_changes = hive_votes.num_changes + 1
WHERE hive_votes.voter_id = EXCLUDED.voter_id and hive_votes.author_id = EXCLUDED.author_id and hive_votes.permlink_id = EXCLUDED.permlink_id;
"""
values = []
values_limit = 1000
......
Subproject commit 113cb05cc2dc35fe6e6e149fc3ecb8ae286d4cc4
Subproject commit 619f51ed6c85a016621b12fa1264c12c7d3d3156
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment