@@ -16,75 +16,72 @@ static void
1616test_xactdescprepareCommit (void * * state )
1717{
1818 StringInfo buf = makeStringInfo ();
19+ const char * gid = "4242424242-0000000042" ;
20+ Size gidlen = strlen (gid ) + 1 ;
21+ Size datalen = MAXALIGN (sizeof (xl_xact_prepare )) + MAXALIGN (gidlen );
1922
20- XLogReaderState * record = palloc (sizeof (XLogReaderState ));
21- XLogRecGetData ( record ) = palloc (sizeof (TwoPhaseFileHeader ));
22- record -> record = palloc ( sizeof ( TwoPhaseFileHeader ) );
23+ XLogReaderState * record = palloc0 (sizeof (XLogReaderState ));
24+ record -> record = palloc0 (sizeof (DecodedXLogRecord ));
25+ XLogRecGetData ( record ) = palloc0 ( datalen );
2326
2427 XLogRecGetInfo (record ) = XLOG_XACT_PREPARE ;
25- TwoPhaseFileHeader * tpfh = (TwoPhaseFileHeader * ) XLogRecGetData (record );
28+ xl_xact_prepare * xlrec = (xl_xact_prepare * ) XLogRecGetData (record );
2629
27- tpfh -> prepared_at = 617826371830030 ;
28- tpfh -> tablespace_oid_to_delete_on_commit = 42 ;
29- tpfh -> tablespace_oid_to_delete_on_abort = InvalidOid ;
30-
31- /* Can not use save_state() here, so emulate it */
32- tpfh -> gidlen = strlen ("4242424242-0000000042" ) + 1 ;
33- strcpy ((char * )tpfh + sizeof (* tpfh ), "4242424242-0000000042" );
30+ xlrec -> prepared_at = 617826371830030 ;
31+ xlrec -> gidlen = gidlen ;
32+ memcpy ((char * ) xlrec + MAXALIGN (sizeof (xl_xact_prepare )), gid , gidlen );
3433
3534 xact_desc (buf , record );
3635
37- assert_string_equal ("at = 2019-07-30 18:26:11.83003+00; gid = 4242424242-0000000042; tablespace_oid_to_delete_on_commit = 42 " , buf -> data );
36+ assert_string_equal ("gid 4242424242-0000000042: 2019-07-30 18:26:11.83003+00" , buf -> data );
3837}
3938
4039static void
4140test_xactdescprepareAbort (void * * state )
4241{
4342 StringInfo buf = makeStringInfo ();
43+ const char * gid = "1111111111-0000000001" ;
44+ Size gidlen = strlen (gid ) + 1 ;
45+ Size datalen = MAXALIGN (sizeof (xl_xact_prepare )) + MAXALIGN (gidlen );
4446
45- XLogReaderState * record = palloc (sizeof (XLogReaderState ));
46- XLogRecGetData ( record ) = palloc (sizeof (TwoPhaseFileHeader ));
47- record -> record = palloc ( sizeof ( TwoPhaseFileHeader ) );
47+ XLogReaderState * record = palloc0 (sizeof (XLogReaderState ));
48+ record -> record = palloc0 (sizeof (DecodedXLogRecord ));
49+ XLogRecGetData ( record ) = palloc0 ( datalen );
4850
4951 XLogRecGetInfo (record ) = XLOG_XACT_PREPARE ;
50- TwoPhaseFileHeader * tpfh = (TwoPhaseFileHeader * ) XLogRecGetData (record );
51-
52- tpfh -> prepared_at = 617826371830030 ;
53- tpfh -> tablespace_oid_to_delete_on_commit = InvalidOid ;
54- tpfh -> tablespace_oid_to_delete_on_abort = 42 ;
52+ xl_xact_prepare * xlrec = (xl_xact_prepare * ) XLogRecGetData (record );
5553
56- /* Can not use save_state() here, so emulate it */
57- tpfh -> gidlen = strlen ( "4242424242-0000000042" ) + 1 ;
58- strcpy ((char * )tpfh + sizeof (* tpfh ), "4242424242-0000000042" );
54+ xlrec -> prepared_at = 617826371830030 ;
55+ xlrec -> gidlen = gidlen ;
56+ memcpy ((char * ) xlrec + MAXALIGN ( sizeof (xl_xact_prepare )), gid , gidlen );
5957
6058 xact_desc (buf , record );
6159
62- assert_string_equal ("at = 2019-07-30 18:26:11.83003+00; gid = 4242424242-0000000042; tablespace_oid_to_delete_on_abort = 42 " , buf -> data );
60+ assert_string_equal ("gid 1111111111-0000000001: 2019-07-30 18:26:11.83003+00" , buf -> data );
6361}
6462
6563static void
6664test_xactdescprepareNone (void * * state )
6765{
6866 StringInfo buf = makeStringInfo ();
67+ const char * gid = "9999999999-0000000099" ;
68+ Size gidlen = strlen (gid ) + 1 ;
69+ Size datalen = MAXALIGN (sizeof (xl_xact_prepare )) + MAXALIGN (gidlen );
6970
70- XLogReaderState * record = palloc (sizeof (XLogReaderState ));
71- XLogRecGetData ( record ) = palloc (sizeof (TwoPhaseFileHeader ));
72- record -> record = palloc ( sizeof ( TwoPhaseFileHeader ) );
71+ XLogReaderState * record = palloc0 (sizeof (XLogReaderState ));
72+ record -> record = palloc0 (sizeof (DecodedXLogRecord ));
73+ XLogRecGetData ( record ) = palloc0 ( datalen );
7374
7475 XLogRecGetInfo (record ) = XLOG_XACT_PREPARE ;
75- TwoPhaseFileHeader * tpfh = (TwoPhaseFileHeader * ) XLogRecGetData (record );
76-
77- tpfh -> prepared_at = 617826371830030 ;
78- tpfh -> tablespace_oid_to_delete_on_commit = InvalidOid ;
79- tpfh -> tablespace_oid_to_delete_on_abort = InvalidOid ;
76+ xl_xact_prepare * xlrec = (xl_xact_prepare * ) XLogRecGetData (record );
8077
81- /* Can not use save_state() here, so emulate it */
82- tpfh -> gidlen = strlen ( "4242424242-0000000042" ) + 1 ;
83- strcpy ((char * )tpfh + sizeof (* tpfh ), "4242424242-0000000042" );
78+ xlrec -> prepared_at = 0 ;
79+ xlrec -> gidlen = gidlen ;
80+ memcpy ((char * ) xlrec + MAXALIGN ( sizeof (xl_xact_prepare )), gid , gidlen );
8481
8582 xact_desc (buf , record );
8683
87- assert_string_equal ("at = 2019-07-30 18:26:11.83003 +00; gid = 4242424242-0000000042 " , buf -> data );
84+ assert_string_equal ("gid 9999999999-0000000099: 2000-01-01 00:00:00 +00" , buf -> data );
8885}
8986
9087int
0 commit comments