10
10
postgres:: { Client , Statement } ,
11
11
postgres_types:: { FromSql , ToSql } ,
12
12
solana_geyser_plugin_interface:: geyser_plugin_interface:: {
13
- GeyserPluginError , ReplicaTransactionInfo ,
13
+ GeyserPluginError , ReplicaTransactionInfoV2 ,
14
14
} ,
15
15
solana_runtime:: bank:: RewardType ,
16
16
solana_sdk:: {
@@ -149,6 +149,7 @@ pub struct DbTransaction {
149
149
/// Given a slot, the transaction with a smaller write_version appears
150
150
/// before transactions with higher write_versions in a shred.
151
151
pub write_version : i64 ,
152
+ pub index : i64 ,
152
153
}
153
154
154
155
pub struct LogTransactionRequest {
@@ -487,7 +488,7 @@ impl From<&TransactionStatusMeta> for DbTransactionStatusMeta {
487
488
488
489
fn build_db_transaction (
489
490
slot : u64 ,
490
- transaction_info : & ReplicaTransactionInfo ,
491
+ transaction_info : & ReplicaTransactionInfoV2 ,
491
492
transaction_write_version : u64 ,
492
493
) -> DbTransaction {
493
494
DbTransaction {
@@ -521,6 +522,7 @@ fn build_db_transaction(
521
522
. to_vec ( ) ,
522
523
meta : DbTransactionStatusMeta :: from ( transaction_info. transaction_status_meta ) ,
523
524
write_version : transaction_write_version as i64 ,
525
+ index : transaction_info. index as i64 ,
524
526
}
525
527
}
526
528
@@ -530,8 +532,8 @@ impl SimplePostgresClient {
530
532
config : & GeyserPluginPostgresConfig ,
531
533
) -> Result < Statement , GeyserPluginError > {
532
534
let stmt = "INSERT INTO transaction AS txn (signature, is_vote, slot, message_type, legacy_message, \
533
- v0_loaded_message, signatures, message_hash, meta, write_version, updated_on) \
534
- VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) \
535
+ v0_loaded_message, signatures, message_hash, meta, write_version, index, updated_on) \
536
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12 ) \
535
537
ON CONFLICT (slot, signature) DO UPDATE SET is_vote=excluded.is_vote, \
536
538
message_type=excluded.message_type, \
537
539
legacy_message=excluded.legacy_message, \
@@ -540,6 +542,7 @@ impl SimplePostgresClient {
540
542
message_hash=excluded.message_hash, \
541
543
meta=excluded.meta, \
542
544
write_version=excluded.write_version, \
545
+ index=excluded.index,
543
546
updated_on=excluded.updated_on" ;
544
547
545
548
let stmt = client. prepare ( stmt) ;
@@ -580,6 +583,7 @@ impl SimplePostgresClient {
580
583
& transaction_info. message_hash ,
581
584
& transaction_info. meta ,
582
585
& transaction_info. write_version ,
586
+ & transaction_info. index ,
583
587
& updated_on,
584
588
] ,
585
589
) ;
@@ -600,7 +604,7 @@ impl SimplePostgresClient {
600
604
impl ParallelPostgresClient {
601
605
fn build_transaction_request (
602
606
slot : u64 ,
603
- transaction_info : & ReplicaTransactionInfo ,
607
+ transaction_info : & ReplicaTransactionInfoV2 ,
604
608
transaction_write_version : u64 ,
605
609
) -> LogTransactionRequest {
606
610
LogTransactionRequest {
@@ -614,7 +618,7 @@ impl ParallelPostgresClient {
614
618
615
619
pub fn log_transaction_info (
616
620
& mut self ,
617
- transaction_info : & ReplicaTransactionInfo ,
621
+ transaction_info : & ReplicaTransactionInfoV2 ,
618
622
slot : u64 ,
619
623
) -> Result < ( ) , GeyserPluginError > {
620
624
self . transaction_write_version
@@ -1295,7 +1299,7 @@ pub(crate) mod tests {
1295
1299
1296
1300
fn check_transaction (
1297
1301
slot : u64 ,
1298
- transaction : & ReplicaTransactionInfo ,
1302
+ transaction : & ReplicaTransactionInfoV2 ,
1299
1303
db_transaction : & DbTransaction ,
1300
1304
) {
1301
1305
assert_eq ! ( transaction. signature. as_ref( ) , db_transaction. signature) ;
@@ -1364,7 +1368,7 @@ pub(crate) mod tests {
1364
1368
. unwrap ( ) ;
1365
1369
1366
1370
let transaction_status_meta = build_transaction_status_meta ( ) ;
1367
- let transaction_info = ReplicaTransactionInfo {
1371
+ let transaction_info = ReplicaTransactionInfoV2 {
1368
1372
signature : & signature,
1369
1373
is_vote : false ,
1370
1374
transaction : & transaction,
@@ -1409,7 +1413,7 @@ pub(crate) mod tests {
1409
1413
. unwrap ( ) ;
1410
1414
1411
1415
let transaction_status_meta = build_transaction_status_meta ( ) ;
1412
- let transaction_info = ReplicaTransactionInfo {
1416
+ let transaction_info = ReplicaTransactionInfoV2 {
1413
1417
signature : & signature,
1414
1418
is_vote : true ,
1415
1419
transaction : & transaction,
0 commit comments