@@ -576,6 +576,12 @@ void *get_authdata(struct sqlclntstate *clnt)
576576 return clnt -> plugin .get_authdata (clnt );
577577}
578578
579+ void free_authdata (struct sqlclntstate * clnt )
580+ {
581+ if (clnt && clnt -> plugin .free_authdata )
582+ clnt -> plugin .free_authdata (clnt );
583+ }
584+
579585static int skip_row (struct sqlclntstate * clnt , uint64_t rowid )
580586{
581587 return clnt -> plugin .skip_row (clnt , rowid );
@@ -5245,7 +5251,7 @@ void cleanup_clnt(struct sqlclntstate *clnt)
52455251 memset (clnt -> work .aFingerprint , 0 , FINGERPRINTSZ );
52465252
52475253 clear_session_tbls (clnt );
5248- free (clnt -> authdata );
5254+ free_authdata (clnt );
52495255 clnt -> authdata = NULL ;
52505256
52515257 free_client_adj_col_names (clnt );
@@ -5277,6 +5283,18 @@ void cleanup_clnt(struct sqlclntstate *clnt)
52775283int gbl_unexpected_last_type_warn = 1 ;
52785284int gbl_unexpected_last_type_abort = 0 ;
52795285
5286+ int cdb2_in_client_trans () {
5287+ struct sql_thread * thd = pthread_getspecific (query_info_key );
5288+ if (thd == NULL )
5289+ return 0 ;
5290+
5291+ struct sqlclntstate * clnt = thd -> clnt ;
5292+ if (clnt == NULL )
5293+ return 0 ;
5294+
5295+ return clnt -> in_client_trans ;
5296+ }
5297+
52805298void reset_clnt (struct sqlclntstate * clnt , int initial )
52815299{
52825300 if (initial ) {
@@ -5431,7 +5449,7 @@ void reset_clnt(struct sqlclntstate *clnt, int initial)
54315449 }
54325450 free (clnt -> context );
54335451 if (clnt -> authdata ) {
5434- free (clnt -> authdata );
5452+ free_authdata (clnt );
54355453 clnt -> authdata = NULL ;
54365454 }
54375455 clnt -> context = NULL ;
@@ -6814,6 +6832,10 @@ void *internal_get_authdata(struct sqlclntstate *a)
68146832 return a -> authdata ;
68156833 return NULL ;
68166834}
6835+ int internal_free_authdata (struct sqlclntstate * a )
6836+ {
6837+ return 0 ;
6838+ }
68176839static int internal_local_check (struct sqlclntstate * a )
68186840{
68196841 return 1 ;
0 commit comments