Skip to content

Commit 622d766

Browse files
authored
Merge pull request #1501 from input-output-hk/release/be/0.30.x
LW-11640 Fix queries performances issue
2 parents 804b9c0 + d6e9c48 commit 622d766

File tree

5 files changed

+9
-23
lines changed

5 files changed

+9
-23
lines changed

packages/cardano-services/src/ChainHistory/DbSyncChainHistory/ChainHistoryBuilder.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,9 @@ export class ChainHistoryBuilder {
310310
values: [ids]
311311
});
312312
const redeemerMap: TransactionDataMap<Cardano.Redeemer[]> = new Map();
313-
for (const redeemer of result.rows) {
313+
for (const redeemer of result.rows
314+
.map(({ id, ...rest }) => ({ id: BigInt(id), ...rest }))
315+
.sort((a, b) => Number(a.id - b.id))) {
314316
const txId = redeemer.tx_id.toString('hex') as unknown as Cardano.TransactionId;
315317
const currentRedeemers = redeemerMap.get(txId) ?? [];
316318
redeemerMap.set(txId, [...currentRedeemers, mapRedeemer(redeemer)]);

packages/cardano-services/src/ChainHistory/DbSyncChainHistory/mappers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ const mapRedeemerPurpose = (purpose: RedeemerModel['purpose']): Cardano.Redeemer
161161
throw new NotImplementedError(`Failed to map redeemer "purpose": ${purpose}`);
162162
})();
163163

164-
export const mapRedeemer = (redeemerModel: RedeemerModel): Cardano.Redeemer => ({
164+
export const mapRedeemer = (redeemerModel: Omit<RedeemerModel, 'id'>): Cardano.Redeemer => ({
165165
data: stubRedeemerData,
166166
executionUnits: {
167167
memory: Number(redeemerModel.unit_mem),

packages/cardano-services/src/ChainHistory/DbSyncChainHistory/queries.ts

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -41,31 +41,14 @@ export const findTxCollateralsByIds = `
4141
WHERE tx.id = ANY($1)
4242
ORDER BY tx_in.id ASC`;
4343

44-
export const findTxInputsByAddresses = `
45-
${selectTxInput()}
46-
JOIN block ON tx.block_id = block.id
47-
WHERE tx_out.address = ANY($1)
48-
AND block.block_no >= $2
49-
AND block.block_no <= $3
50-
ORDER BY tx_in.id ASC`;
51-
5244
export const findTxOutputsByIds = `
5345
${selectTxOutput()}
5446
WHERE tx.id = ANY($1)
5547
ORDER BY tx_out.id ASC`;
5648

57-
export const findTxOutputsByAddresses = `
58-
${selectTxOutput()}
59-
JOIN block ON tx.block_id = block.id
60-
WHERE tx_out.address = ANY($1)
61-
AND block.block_no >= $2
62-
AND block.block_no <= $3
63-
ORDER BY tx_out.id ASC`;
64-
6549
export const findCollateralOutputsByTxIds = `
6650
${selectTxOutput(true)}
67-
WHERE tx.id = ANY($1)
68-
ORDER BY tx_out.id ASC`;
51+
WHERE tx.id = ANY($1)`;
6952

7053
export const findTip = `
7154
SELECT
@@ -181,6 +164,7 @@ export const findWithdrawalsByTxIds = `
181164

182165
export const findRedeemersByTxIds = `
183166
SELECT
167+
redeemer.id AS id,
184168
redeemer."index" AS "index",
185169
redeemer.purpose AS purpose,
186170
redeemer.script_hash AS script_hash,
@@ -189,8 +173,7 @@ export const findRedeemersByTxIds = `
189173
tx.hash AS tx_id
190174
FROM redeemer
191175
JOIN tx ON tx.id = redeemer.tx_id
192-
WHERE tx.id = ANY($1)
193-
ORDER BY redeemer.id ASC`;
176+
WHERE tx.id = ANY($1)`;
194177

195178
export const findVotingProceduresByTxIds = `
196179
SELECT

packages/cardano-services/src/ChainHistory/DbSyncChainHistory/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ export interface WithdrawalModel {
109109
}
110110

111111
export interface RedeemerModel {
112+
id: string;
112113
index: number;
113114
purpose: 'cert' | 'mint' | 'spend' | 'reward' | 'vote' | 'propose';
114115
script_hash: Buffer;

packages/cardano-services/test/ChainHistory/DbSyncChainHistoryProvider/mappers.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ describe('chain history mappers', () => {
456456
);
457457
});
458458
describe('mapRedeemer', () => {
459-
const redeemerModel: Omit<RedeemerModel, 'purpose'> = {
459+
const redeemerModel: Omit<RedeemerModel, 'id' | 'purpose'> = {
460460
index: 1,
461461
script_hash: Buffer.from(hash28ByteBase16, 'hex'),
462462
tx_id: Buffer.from(transactionHash, 'hex'),

0 commit comments

Comments
 (0)