11WITH ActiveProposals AS (
2- SELECT id
2+ SELECT id
33 FROM gov_action_proposal
44 WHERE expiration > (SELECT MAX (no) FROM epoch)
55 AND ratified_epoch IS NULL
@@ -97,11 +97,11 @@ EnrichedCurrentMembers AS (
9797 FROM
9898 ProcessedCurrentMembers pcm
9999 LEFT JOIN json_array_elements(pcm .current_members ) AS member ON true
100- LEFT JOIN CommitteeData cm
101- ON (CASE
102- WHEN (member- >> ' hash' ) ~ ' ^[0-9a-fA-F]+$'
103- THEN encode(decode(member- >> ' hash' , ' hex' ), ' hex' )
104- ELSE NULL
100+ LEFT JOIN CommitteeData cm
101+ ON (CASE
102+ WHEN (member- >> ' hash' ) ~ ' ^[0-9a-fA-F]+$'
103+ THEN encode(decode(member- >> ' hash' , ' hex' ), ' hex' )
104+ ELSE NULL
105105 END) = cm .hash
106106 GROUP BY
107107 pcm .id
@@ -113,15 +113,23 @@ RankedPoolVotes AS (
113113 vp .vote
114114 FROM
115115 voting_procedure vp
116- WHERE
116+ WHERE
117117 vp .pool_voter IS NOT NULL
118118 AND vp .gov_action_proposal_id IN (SELECT id FROM ActiveProposals)
119- ORDER BY
120- vp .pool_voter ,
121- vp .gov_action_proposal_id ,
119+ ORDER BY
120+ vp .pool_voter ,
121+ vp .gov_action_proposal_id ,
122122 vp .tx_id DESC ,
123123 vp .id DESC
124124),
125+ -- it's a fix for duplication issue https://github.com/IntersectMBO/cardano-db-sync/issues/1986
126+ LatestPoolStat AS (
127+ SELECT DISTINCT ON (pool_hash_id) *
128+ FROM
129+ pool_stat
130+ WHERE
131+ epoch_no = (SELECT MAX (no) FROM epoch)
132+ ),
125133PoolVotes AS (
126134 SELECT
127135 rpv .gov_action_proposal_id ,
@@ -132,10 +140,10 @@ PoolVotes AS (
132140 SUM (CASE WHEN rpv .vote = ' Yes' THEN ps .voting_power ELSE 0 END) AS poolYesVotes,
133141 SUM (CASE WHEN rpv .vote = ' No' THEN ps .voting_power ELSE 0 END) AS poolNoVotes,
134142 SUM (CASE WHEN rpv .vote = ' Abstain' THEN ps .voting_power ELSE 0 END) AS poolAbstainVotes
135- FROM
143+ FROM
136144 RankedPoolVotes rpv
137- JOIN
138- pool_stat ps
145+ JOIN
146+ LatestPoolStat ps
139147 ON rpv .pool_voter = ps .pool_hash_id
140148 WHERE
141149 ps .epoch_no = (SELECT MAX (no) FROM epoch)
@@ -147,29 +155,29 @@ RankedDRepVotes AS (
147155 vp .gov_action_proposal_id ,
148156 vp .drep_voter ,
149157 vp .vote
150- FROM
158+ FROM
151159 voting_procedure vp
152- WHERE
160+ WHERE
153161 vp .drep_voter IS NOT NULL
154162 AND vp .gov_action_proposal_id IN (SELECT id FROM ActiveProposals)
155- ORDER BY
156- vp .drep_voter ,
157- vp .gov_action_proposal_id ,
163+ ORDER BY
164+ vp .drep_voter ,
165+ vp .gov_action_proposal_id ,
158166 vp .tx_id DESC ,
159167 vp .id DESC
160168),
161169RankedDRepRegistration AS (
162170 SELECT DISTINCT ON (dr .drep_hash_id )
163171 dr.*
164- FROM
172+ FROM
165173 drep_registration dr
166- ORDER BY
174+ ORDER BY
167175 dr .drep_hash_id ,
168176 dr .tx_id DESC ,
169177 dr .id DESC
170178),
171179CommitteeVotes AS (
172- SELECT
180+ SELECT
173181 vp .gov_action_proposal_id ,
174182 SUM (CASE WHEN vp .vote = ' Yes' THEN 1 ELSE 0 END) AS ccYesVotes,
175183 SUM (CASE WHEN vp .vote = ' No' THEN 1 ELSE 0 END) AS ccNoVotes,
@@ -182,13 +190,13 @@ CommitteeVotes AS (
182190 FROM voting_procedure
183191 WHERE committee_voter IS NOT NULL
184192 AND gov_action_proposal_id IN (SELECT id FROM ActiveProposals)
185- ORDER BY
186- committee_voter,
187- gov_action_proposal_id,
193+ ORDER BY
194+ committee_voter,
195+ gov_action_proposal_id,
188196 tx_id DESC ,
189197 id DESC
190198 ) vp
191- GROUP BY
199+ GROUP BY
192200 vp .gov_action_proposal_id
193201)
194202SELECT
@@ -215,13 +223,13 @@ SELECT
215223
216224 WHEN gov_action_proposal .type ::text = ' HardForkInitiation' THEN
217225 json_build_object(
218- ' major' , (gov_action_proposal .description - > ' contents' - > 1 - >> ' major' )::int ,
226+ ' major' , (gov_action_proposal .description - > ' contents' - > 1 - >> ' major' )::int ,
219227 ' minor' , (gov_action_proposal .description - > ' contents' - > 1 - >> ' minor' )::int
220228 )
221229
222230 WHEN gov_action_proposal .type ::text = ' NoConfidence' THEN
223231 json_build_object(' data' , gov_action_proposal .description - > ' contents' )
224-
232+
225233 WHEN gov_action_proposal .type ::text = ' ParameterChange' THEN
226234 json_build_object(' data' , gov_action_proposal .description - > ' contents' )
227235
@@ -237,12 +245,12 @@ SELECT
237245 ' tag' , pd .tag ,
238246 ' members' , em .enriched_members ,
239247 ' membersToBeRemoved' , mtr .members_to_be_removed ,
240- ' threshold' ,
241- CASE
242- WHEN (pd .threshold - >> ' numerator' ) IS NOT NULL
243- AND (pd .threshold - >> ' denominator' ) IS NOT NULL
248+ ' threshold' ,
249+ CASE
250+ WHEN (pd .threshold - >> ' numerator' ) IS NOT NULL
251+ AND (pd .threshold - >> ' denominator' ) IS NOT NULL
244252 THEN (pd .threshold - >> ' numerator' )::float / (pd .threshold - >> ' denominator' )::float
245- ELSE NULL
253+ ELSE NULL
246254 END
247255 )
248256 FROM
@@ -260,9 +268,9 @@ SELECT
260268 , ' {}' ::JSON) AS description,
261269 CASE
262270 WHEN meta .network_name ::text = ' mainnet' OR meta .network_name ::text = ' preprod' THEN
263- latest_epoch .start_time + (gov_action_proposal .expiration - latest_epoch .no )::bigint * INTERVAL ' 5 days'
271+ latest_epoch .start_time + (gov_action_proposal .expiration - latest_epoch .no )::bigint * INTERVAL ' 5 days'
264272 ELSE
265- latest_epoch .start_time + (gov_action_proposal .expiration - latest_epoch .no )::bigint * INTERVAL ' 1 day'
273+ latest_epoch .start_time + (gov_action_proposal .expiration - latest_epoch .no )::bigint * INTERVAL ' 1 day'
266274 END AS expiry_date,
267275 gov_action_proposal .expiration ,
268276 creator_block .time ,
@@ -271,7 +279,7 @@ SELECT
271279 encode(voting_anchor .data_hash , ' hex' ) data_hash,
272280 jsonb_set(
273281 ROW_TO_JSON(proposal_params)::jsonb,
274- ' {cost_model}' ,
282+ ' {cost_model}' ,
275283 CASE
276284 WHEN cost_model .id IS NOT NULL THEN
277285 ROW_TO_JSON(cost_model)::jsonb
339347 LEFT JOIN LatestDrepDistr ldd_drep ON ldd_drep .hash_id = rdr .drep_hash_id
340348 AND ldd_drep .epoch_no = latest_epoch .no
341349 LEFT JOIN gov_action_proposal AS prev_gov_action ON gov_action_proposal .prev_gov_action_proposal = prev_gov_action .id
342- LEFT JOIN tx AS prev_gov_action_tx ON prev_gov_action .tx_id = prev_gov_action_tx .id
350+ LEFT JOIN tx AS prev_gov_action_tx ON prev_gov_action .tx_id = prev_gov_action_tx .id
343351WHERE
344352 (COALESCE(?, ' ' ) = ' ' OR
345353 off_chain_vote_gov_action_data .title ILIKE ? OR
0 commit comments