Skip to content

Commit bb30911

Browse files
tippeneinbrady.ouren
andauthored
fix: use total_count CTE and return it with the parsed results (#2073)
* fix: use total_count CTE and return it with the parsed results * fix: sql cte syntax and useless fields --------- Co-authored-by: brady.ouren <[email protected]>
1 parent 054004e commit bb30911

File tree

2 files changed

+47
-32
lines changed

2 files changed

+47
-32
lines changed

src/datastore/pg-store-v2.ts

Lines changed: 38 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ export class PgStoreV2 extends BasePgStoreModule {
8181
ORDER BY block_height DESC
8282
)
8383
SELECT offset_block_height as block_height
84-
FROM ordered_blocks
84+
FROM ordered_blocks
8585
WHERE index_block_hash = ${cursor ?? sql`(SELECT index_block_hash FROM chain_tip LIMIT 1)`}
8686
LIMIT 1
8787
),
@@ -518,6 +518,12 @@ export class PgStoreV2 extends BasePgStoreModule {
518518
FROM nft_events
519519
WHERE sender = ${args.address} OR recipient = ${args.address}
520520
)
521+
),
522+
count AS (
523+
SELECT COUNT(*)::int AS total_count
524+
FROM address_txs
525+
INNER JOIN txs USING (tx_id, index_block_hash, microblock_hash)
526+
WHERE canonical = TRUE AND microblock_canonical = TRUE
521527
)
522528
SELECT
523529
${sql(TX_COLUMNS)},
@@ -572,7 +578,7 @@ export class PgStoreV2 extends BasePgStoreModule {
572578
SELECT COUNT(*)::int FROM nft_events
573579
WHERE ${eventAcctCond} AND asset_event_type_id = ${DbAssetEventTypeId.Burn}
574580
) AS nft_burn,
575-
(COUNT(*) OVER())::int AS count
581+
(SELECT total_count FROM count) AS count
576582
FROM address_txs
577583
INNER JOIN txs USING (tx_id, index_block_hash, microblock_hash)
578584
WHERE canonical = TRUE AND microblock_canonical = TRUE
@@ -712,33 +718,33 @@ export class PgStoreV2 extends BasePgStoreModule {
712718
AND end_cycle_id = ${cycleNumber + 1}
713719
ORDER BY stacker, block_height DESC, tx_index DESC, event_index DESC
714720
), delegated_stackers AS (
715-
SELECT DISTINCT ON (main.stacker)
716-
main.stacker,
721+
SELECT DISTINCT ON (main.stacker)
722+
main.stacker,
717723
sk.signer_key
718724
FROM pox4_events main
719725
LEFT JOIN signer_keys sk ON main.delegator = sk.stacker
720-
WHERE main.canonical = true
726+
WHERE main.canonical = true
721727
AND main.microblock_canonical = true
722728
AND main.name IN ('delegate-stack-stx', 'delegate-stack-increase', 'delegate-stack-extend')
723-
AND main.start_cycle_id <= ${cycleNumber}
729+
AND main.start_cycle_id <= ${cycleNumber}
724730
AND main.end_cycle_id > ${cycleNumber}
725731
ORDER BY main.stacker, main.block_height DESC, main.microblock_sequence DESC, main.tx_index DESC, main.event_index DESC
726732
), solo_stackers AS (
727-
SELECT DISTINCT ON (stacker)
728-
stacker,
733+
SELECT DISTINCT ON (stacker)
734+
stacker,
729735
signer_key
730736
FROM pox4_events
731737
WHERE canonical = true AND microblock_canonical = true
732738
AND name in ('stack-stx', 'stacks-increase', 'stack-extend')
733-
AND start_cycle_id <= ${cycleNumber}
739+
AND start_cycle_id <= ${cycleNumber}
734740
AND end_cycle_id > ${cycleNumber}
735741
ORDER BY stacker, block_height DESC, microblock_sequence DESC, tx_index DESC, event_index DESC
736742
)
737-
SELECT
743+
SELECT
738744
ps.signing_key,
739-
ps.weight,
740-
ps.stacked_amount,
741-
ps.weight_percent,
745+
ps.weight,
746+
ps.stacked_amount,
747+
ps.weight_percent,
742748
ps.stacked_amount_percent,
743749
COUNT(DISTINCT ds.stacker)::int AS pooled_stacker_count,
744750
COUNT(DISTINCT ss.stacker)::int AS solo_stacker_count,
@@ -782,20 +788,20 @@ export class PgStoreV2 extends BasePgStoreModule {
782788
AND end_cycle_id = ${cycleNumber + 1}
783789
ORDER BY stacker, block_height DESC, tx_index DESC, event_index DESC
784790
), delegated_stackers AS (
785-
SELECT DISTINCT ON (main.stacker)
786-
main.stacker,
791+
SELECT DISTINCT ON (main.stacker)
792+
main.stacker,
787793
sk.signer_key
788794
FROM pox4_events main
789795
LEFT JOIN signer_keys sk ON main.delegator = sk.stacker
790-
WHERE main.canonical = true
796+
WHERE main.canonical = true
791797
AND main.microblock_canonical = true
792798
AND main.name IN ('delegate-stack-stx', 'delegate-stack-increase', 'delegate-stack-extend')
793-
AND main.start_cycle_id <= ${cycleNumber}
799+
AND main.start_cycle_id <= ${cycleNumber}
794800
AND main.end_cycle_id > ${cycleNumber}
795801
ORDER BY main.stacker, main.block_height DESC, main.microblock_sequence DESC, main.tx_index DESC, main.event_index DESC
796802
), solo_stackers AS (
797-
SELECT DISTINCT ON (stacker)
798-
stacker,
803+
SELECT DISTINCT ON (stacker)
804+
stacker,
799805
signer_key
800806
FROM pox4_events
801807
WHERE canonical = true AND microblock_canonical = true
@@ -804,19 +810,19 @@ export class PgStoreV2 extends BasePgStoreModule {
804810
AND end_cycle_id > ${cycleNumber}
805811
ORDER BY stacker, block_height DESC, microblock_sequence DESC, tx_index DESC, event_index DESC
806812
)
807-
SELECT
813+
SELECT
808814
ps.signing_key,
809-
ps.weight,
810-
ps.stacked_amount,
811-
ps.weight_percent,
815+
ps.weight,
816+
ps.stacked_amount,
817+
ps.weight_percent,
812818
ps.stacked_amount_percent,
813819
COUNT(DISTINCT ds.stacker)::int AS pooled_stacker_count,
814820
COUNT(DISTINCT ss.stacker)::int AS solo_stacker_count
815821
FROM pox_sets ps
816822
LEFT JOIN delegated_stackers ds ON ps.signing_key = ds.signer_key
817823
LEFT JOIN solo_stackers ss ON ps.signing_key = ss.signer_key
818-
WHERE ps.canonical = TRUE
819-
AND ps.cycle_number = ${cycleNumber}
824+
WHERE ps.canonical = TRUE
825+
AND ps.cycle_number = ${cycleNumber}
820826
AND ps.signing_key = ${signerKey}
821827
GROUP BY ps.signing_key, ps.weight, ps.stacked_amount, ps.weight_percent, ps.stacked_amount_percent
822828
LIMIT 1
@@ -862,8 +868,8 @@ export class PgStoreV2 extends BasePgStoreModule {
862868
AND end_cycle_id = ${cycleNumber + 1}
863869
ORDER BY stacker, block_height DESC, tx_index DESC, event_index DESC
864870
), delegated_stackers AS (
865-
SELECT DISTINCT ON (main.stacker)
866-
main.stacker,
871+
SELECT DISTINCT ON (main.stacker)
872+
main.stacker,
867873
sk.signer_key,
868874
main.locked,
869875
main.pox_addr,
@@ -872,15 +878,15 @@ export class PgStoreV2 extends BasePgStoreModule {
872878
'pooled' as stacker_type
873879
FROM pox4_events main
874880
LEFT JOIN signer_keys sk ON main.delegator = sk.stacker
875-
WHERE main.canonical = true
881+
WHERE main.canonical = true
876882
AND main.microblock_canonical = true
877883
AND main.name IN ('delegate-stack-stx', 'delegate-stack-increase', 'delegate-stack-extend')
878884
AND main.start_cycle_id <= ${cycleNumber}
879885
AND main.end_cycle_id > ${cycleNumber}
880886
ORDER BY main.stacker, main.block_height DESC, main.microblock_sequence DESC, main.tx_index DESC, main.event_index DESC
881887
), solo_stackers AS (
882-
SELECT DISTINCT ON (stacker)
883-
stacker,
888+
SELECT DISTINCT ON (stacker)
889+
stacker,
884890
signer_key,
885891
locked,
886892
pox_addr,
@@ -909,8 +915,8 @@ export class PgStoreV2 extends BasePgStoreModule {
909915
COUNT(*) OVER()::int AS total
910916
FROM pox_sets ps
911917
LEFT JOIN combined_stackers cs ON ps.signing_key = cs.signer_key
912-
WHERE ps.canonical = TRUE
913-
AND ps.cycle_number = ${cycleNumber}
918+
WHERE ps.canonical = TRUE
919+
AND ps.cycle_number = ${cycleNumber}
914920
AND ps.signing_key = ${signerKey}
915921
ORDER BY locked DESC
916922
LIMIT ${limit}

src/tests/address-tests.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,15 @@ describe('address tests', () => {
606606
burn: 0,
607607
});
608608

609+
// fetch with offset
610+
const v2Fetch1offset = await supertest(api.server).get(
611+
`/extended/v2/addresses/${testAddr2}/transactions?offset=1`
612+
);
613+
expect(v2Fetch1offset.status).toBe(200);
614+
expect(v2Fetch1offset.type).toBe('application/json');
615+
const v2Fetch1offsetJson = JSON.parse(v2Fetch1offset.text);
616+
expect(v2Fetch1offsetJson.total).toBe(7);
617+
609618
const v2Fetch2 = await supertest(api.server).get(
610619
`/extended/v2/addresses/${testAddr2}/transactions/${v2Fetch1Json.results[0].tx.tx_id}/events?limit=3`
611620
);

0 commit comments

Comments
 (0)