tx detail -> account relation

- fix relation between tx - slot - account
This commit is contained in:
GroovieGermanikus 2023-12-13 09:51:04 +01:00
parent e0159d0601
commit d87710a25d
No known key found for this signature in database
GPG Key ID: 5B6EB831A5CD2015
3 changed files with 51 additions and 19 deletions

30
QUERIES.md Normal file
View File

@ -0,0 +1,30 @@
## Collection of useful(tm) queries
### List accounts referenced in the relevant slots for respective transaction
This is intended for testing or finding examples.
```sql
SELECT
amt.transaction_id,
acc.account_key,
amb.*
FROM banking_stage_results_2.accounts_map_blocks amb
INNER JOIN banking_stage_results_2.accounts_map_transaction amt ON amt.acc_id=amb.acc_id
INNER JOIN banking_stage_results_2.accounts acc ON acc.acc_id=amb.acc_id
INNER JOIN banking_stage_results_2.transaction_slot tx_slot ON tx_slot.slot=amb.slot AND tx_slot.transaction_id=amt.transaction_id
```
### Transactions with more than one relevant slot
```sql
SELECT
tx_slot.transaction_id,signature,
count(distinct slot)
FROM banking_stage_results_2.transaction_slot tx_slot
INNER JOIN banking_stage_results_2.transactions txs ON txs.transaction_id=tx_slot.transaction_id
INNER JOIN banking_stage_results_2.errors err ON err.error_code=tx_slot.error_code
WHERE true
GROUP BY tx_slot.transaction_id, signature
HAVING count(distinct slot) > 1
```

View File

@ -6,28 +6,28 @@ def run_query(transaction_row_limit=None, filter_txsig=None, filter_account_addr
"""
SELECT * FROM (
SELECT
signature,
( SELECT count(distinct slot) FROM banking_stage_results_2.transaction_slot WHERE transaction_id=tx_slot.transaction_id ) AS num_relative_slots,
(
SELECT ARRAY_AGG(json_build_object('error', err.error_text, 'count', count)::text)
FROM banking_stage_results_2.errors err
WHERE err.error_code=tx_slot.error_code
) AS all_errors,
( txi is not null ) AS was_included_in_block,
txi.cu_requested,
txi.prioritization_fees,
utc_timestamp
signature,
( SELECT count(distinct slot) FROM banking_stage_results_2.transaction_slot WHERE transaction_id=tx_slot.transaction_id ) AS num_relative_slots,
(
SELECT ARRAY_AGG(json_build_object('error', err.error_text, 'count', count)::text)
FROM banking_stage_results_2.errors err
WHERE err.error_code=tx_slot.error_code
) AS all_errors,
( txi is not null ) AS was_included_in_block,
txi.cu_requested,
txi.prioritization_fees,
utc_timestamp
FROM banking_stage_results_2.transaction_slot tx_slot
INNER JOIN banking_stage_results_2.transactions txs ON txs.transaction_id=tx_slot.transaction_id
LEFT JOIN banking_stage_results_2.transaction_infos txi ON txi.transaction_id=tx_slot.transaction_id
LEFT JOIN banking_stage_results_2.transaction_infos txi ON txi.transaction_id=tx_slot.transaction_id
WHERE true
AND (%s or signature = %s)
AND (%s or txi.transaction_id in (
SELECT transaction_id
FROM banking_stage_results_2.accounts_map_transaction amt
INNER JOIN banking_stage_results_2.accounts acc ON acc.acc_id=amt.acc_id
WHERE account_key = %s
))
SELECT transaction_id
FROM banking_stage_results_2.accounts_map_transaction amt
INNER JOIN banking_stage_results_2.accounts acc ON acc.acc_id=amt.acc_id
WHERE account_key = %s
))
) AS data
ORDER BY utc_timestamp DESC
LIMIT %s

View File

@ -72,9 +72,11 @@ def find_transaction_details_by_sig(tx_sig: str):
amb.*,
acc.account_key
FROM banking_stage_results_2.accounts_map_blocks amb
INNER JOIN banking_stage_results_2.accounts_map_transaction amt ON amt.acc_id=amb.acc_id
INNER JOIN banking_stage_results_2.accounts acc ON acc.acc_id=amb.acc_id
WHERE slot IN (SELECT unnest(CAST(%s as bigint[])))
""", args=[list(relevant_slots)]))
WHERE amb.slot IN (SELECT unnest(CAST(%s as bigint[])))
AND amt.transaction_id = %s
""", args=[list(relevant_slots), transaction_id]))
)
write_lock_info = dict()