Skip to content

Commit e65c90c

Browse files
Greg Brdlrt
authored andcommitted
Calculate minimum transaction id in scope of after-block-height restriction in a slightly more efficient way
1 parent 5985b92 commit e65c90c

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

files/grest/rpc/account/account_txs.sql

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,20 @@ DECLARE
1212
_tx_id_list bigint[];
1313
_stake_address_id integer;
1414
BEGIN
15-
SELECT INTO _tx_id_min id
16-
FROM tx
17-
WHERE block_id >= (SELECT id FROM block WHERE block_no >= _after_block_height ORDER BY id limit 1)
18-
ORDER BY id limit 1;
15+
16+
SELECT INTO _tx_id_min min(id)
17+
FROM tx
18+
WHERE block_id = (
19+
SELECT id
20+
FROM block AS b
21+
WHERE block_no >= _after_block_height
22+
AND EXISTS (
23+
SELECT true
24+
FROM tx t
25+
WHERE t.block_id = b.id
26+
)
27+
ORDER BY id LIMIT 1
28+
);
1929

2030
SELECT INTO _stake_address_id id FROM stake_address WHERE hash_raw = (SELECT DECODE(b32_decode(_stake_address), 'hex'));
2131

files/grest/rpc/address/address_txs.sql

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,19 @@ DECLARE
1111
_tx_id_min bigint;
1212
_tx_id_list bigint[];
1313
BEGIN
14-
SELECT INTO _tx_id_min id
15-
FROM tx
16-
WHERE block_id >= (SELECT id FROM block WHERE block_no >= _after_block_height ORDER BY id limit 1)
17-
ORDER BY id limit 1;
14+
SELECT INTO _tx_id_min min(id)
15+
FROM tx
16+
WHERE block_id = (
17+
SELECT id
18+
FROM block AS b
19+
WHERE block_no >= _after_block_height
20+
AND EXISTS (
21+
SELECT true
22+
FROM tx t
23+
WHERE t.block_id = b.id
24+
)
25+
ORDER BY id LIMIT 1
26+
);
1827

1928
-- all tx_out & tx_in tx ids
2029
SELECT INTO _tx_id_list ARRAY_AGG(tx_id)

0 commit comments

Comments
 (0)