@@ -2961,17 +2961,27 @@ export class PgWriteStore extends PgStore {
2961
2961
t . nonce ,
2962
2962
] ) ;
2963
2963
const updatedRows = await sql < { tx_id : string } [ ] > `
2964
- WITH input_data (tx_id, sender_address, sponsor_address, sponsored, nonce)
2965
- AS (VALUES ${ sql ( inputData ) } ),
2966
- affected_mempool_tx_ids AS (
2964
+ WITH input_data (tx_id, sender_address, sponsor_address, sponsored, nonce) AS (
2965
+ VALUES ${ sql ( inputData ) }
2966
+ ),
2967
+ sponsored_inputs AS (SELECT * FROM input_data WHERE sponsored::boolean),
2968
+ non_sponsored_inputs AS (SELECT * FROM input_data WHERE NOT sponsored::boolean),
2969
+ affected_sponsored AS (
2970
+ SELECT m.tx_id
2971
+ FROM mempool_txs m
2972
+ INNER JOIN sponsored_inputs i ON m.nonce = i.nonce::int
2973
+ AND (m.sponsor_address = i.sponsor_address OR m.sender_address = i.sponsor_address)
2974
+ ),
2975
+ affected_non_sponsored AS (
2967
2976
SELECT m.tx_id
2968
- FROM mempool_txs AS m
2969
- INNER JOIN input_data AS i
2970
- ON m.nonce = i.nonce::int
2971
- AND (CASE i.sponsored::boolean
2972
- WHEN true THEN (m.sponsor_address = i.sponsor_address OR m.sender_address = i.sponsor_address)
2973
- ELSE (m.sponsor_address = i.sender_address OR m.sender_address = i.sender_address)
2974
- END)
2977
+ FROM mempool_txs m
2978
+ INNER JOIN non_sponsored_inputs i ON m.nonce = i.nonce::int
2979
+ AND (m.sponsor_address = i.sender_address OR m.sender_address = i.sender_address)
2980
+ ),
2981
+ affected_mempool_tx_ids AS (
2982
+ SELECT tx_id FROM affected_sponsored
2983
+ UNION
2984
+ SELECT tx_id FROM affected_non_sponsored
2975
2985
UNION
2976
2986
SELECT tx_id::bytea FROM input_data
2977
2987
),
@@ -3046,17 +3056,27 @@ export class PgWriteStore extends PgStore {
3046
3056
t . nonce ,
3047
3057
] ) ;
3048
3058
const updateResults = await sql < { tx_id : string } [ ] > `
3049
- WITH input_data (tx_id, sender_address, sponsor_address, sponsored, nonce)
3050
- AS (VALUES ${ sql ( inputData ) } ),
3051
- affected_mempool_tx_ids AS (
3059
+ WITH input_data (tx_id, sender_address, sponsor_address, sponsored, nonce) AS (
3060
+ VALUES ${ sql ( inputData ) }
3061
+ ),
3062
+ sponsored_inputs AS (SELECT * FROM input_data WHERE sponsored::boolean),
3063
+ non_sponsored_inputs AS (SELECT * FROM input_data WHERE NOT sponsored::boolean),
3064
+ affected_sponsored AS (
3065
+ SELECT m.tx_id
3066
+ FROM mempool_txs m
3067
+ INNER JOIN sponsored_inputs i ON m.nonce = i.nonce::int
3068
+ AND (m.sponsor_address = i.sponsor_address OR m.sender_address = i.sponsor_address)
3069
+ ),
3070
+ affected_non_sponsored AS (
3052
3071
SELECT m.tx_id
3053
- FROM mempool_txs AS m
3054
- INNER JOIN input_data AS i
3055
- ON m.nonce = i.nonce::int
3056
- AND (CASE i.sponsored::boolean
3057
- WHEN true THEN (m.sponsor_address = i.sponsor_address OR m.sender_address = i.sponsor_address)
3058
- ELSE (m.sponsor_address = i.sender_address OR m.sender_address = i.sender_address)
3059
- END)
3072
+ FROM mempool_txs m
3073
+ INNER JOIN non_sponsored_inputs i ON m.nonce = i.nonce::int
3074
+ AND (m.sponsor_address = i.sender_address OR m.sender_address = i.sender_address)
3075
+ ),
3076
+ affected_mempool_tx_ids AS (
3077
+ SELECT tx_id FROM affected_sponsored
3078
+ UNION
3079
+ SELECT tx_id FROM affected_non_sponsored
3060
3080
UNION
3061
3081
SELECT tx_id::bytea FROM input_data
3062
3082
),
0 commit comments