@@ -4293,6 +4293,15 @@ void fdb_free_tran(sqlclntstate *clnt, fdb_tran_t *tran)
42934293
42944294extern char gbl_dbname [];
42954295
4296+ void fdb_client_set_identityBlob (sqlclntstate * clnt , cdb2_hndl_tp * hndl )
4297+ {
4298+ extern void * (* externalComdb2getAuthIdBlob )(void * ID );
4299+ if (gbl_fdb_auth_enabled && externalComdb2getAuthIdBlob &&
4300+ ((clnt -> authdata = get_authdata (clnt )) != NULL )) {
4301+ cdb2_setIdentityBlob (hndl , externalComdb2getAuthIdBlob (clnt -> authdata ));
4302+ }
4303+ }
4304+
42964305int fdb_trans_commit (sqlclntstate * clnt , enum trans_clntcomm sideeffects )
42974306{
42984307 fdb_distributed_tran_t * dtran = clnt -> dbtran .dtran ;
@@ -4340,6 +4349,7 @@ int fdb_trans_commit(sqlclntstate *clnt, enum trans_clntcomm sideeffects)
43404349 if (tran -> nwrites ) {
43414350 /* handle is only created upon first remote write to this fdb */
43424351 assert (tran -> fcon .hndl );
4352+ fdb_client_set_identityBlob (clnt , tran -> fcon .hndl );
43434353 rc = cdb2_run_statement (tran -> fcon .hndl , "commit" );
43444354 } else {
43454355 rc = 0 ;
@@ -4461,6 +4471,7 @@ int fdb_trans_rollback(sqlclntstate *clnt)
44614471 if (tran -> nwrites ) {
44624472 /* handle is only created upon first remote write to this fdb */
44634473 assert (tran -> fcon .hndl );
4474+ fdb_client_set_identityBlob (clnt , tran -> fcon .hndl );
44644475 rc = cdb2_run_statement (tran -> fcon .hndl , "rollback" );
44654476 } else {
44664477 rc = 0 ;
@@ -5748,12 +5759,7 @@ static int _fdb_client_set_options(sqlclntstate *clnt,
57485759 if (clnt -> prepare_only ) {
57495760 SET_STR ("PREPARE_ONLY" , "ON" );
57505761 }
5751-
5752- extern void * (* externalComdb2getAuthIdBlob )(void * ID );
5753- if (gbl_fdb_auth_enabled && externalComdb2getAuthIdBlob &&
5754- ((clnt -> authdata = get_authdata (clnt )) != NULL )) {
5755- cdb2_setIdentityBlob (hndl , externalComdb2getAuthIdBlob (clnt -> authdata ));
5756- }
5762+ fdb_client_set_identityBlob (clnt , hndl );
57575763
57585764 return 0 ;
57595765}
0 commit comments