@@ -53,6 +53,8 @@ type BaseSession struct {
5353 // privilege set if our counter doesn't equal the database's counter.
5454 privSetCounter uint64
5555 privilegeSet PrivilegeSet
56+
57+ storedProcParams map [string ]* StoredProcParam
5658}
5759
5860func (s * BaseSession ) GetLogger () * logrus.Entry {
@@ -252,6 +254,29 @@ func (s *BaseSession) IncrementStatusVariable(ctx *Context, statVarName string,
252254 return
253255}
254256
257+ func (s * BaseSession ) NewStoredProcParam (name string , param * StoredProcParam ) {
258+ if _ , ok := s .storedProcParams [name ]; ok {
259+ return
260+ }
261+ s .storedProcParams [name ] = param
262+ }
263+
264+ func (s * BaseSession ) GetStoredProcParam (name string ) * StoredProcParam {
265+ if param , ok := s .storedProcParams [name ]; ok {
266+ return param
267+ }
268+ return nil
269+ }
270+
271+ func (s * BaseSession ) SetStoredProcParam (name string , val any ) error {
272+ param := s .GetStoredProcParam (name )
273+ if param == nil {
274+ return fmt .Errorf ("variable `%s` could not be found" , name )
275+ }
276+ param .SetValue (val )
277+ return nil
278+ }
279+
255280// GetCharacterSet returns the character set for this session (defined by the system variable `character_set_connection`).
256281func (s * BaseSession ) GetCharacterSet () CharacterSetID {
257282 sysVar , _ := s .systemVars [characterSetConnectionSysVarName ]
@@ -504,17 +529,18 @@ func NewBaseSessionWithClientServer(server string, client Client, id uint32) *Ba
504529 statusVars = make (map [string ]StatusVarValue )
505530 }
506531 return & BaseSession {
507- addr : server ,
508- client : client ,
509- id : id ,
510- systemVars : systemVars ,
511- statusVars : statusVars ,
512- userVars : NewUserVars (),
513- idxReg : NewIndexRegistry (),
514- viewReg : NewViewRegistry (),
515- locks : make (map [string ]bool ),
516- lastQueryInfo : defaultLastQueryInfo (),
517- privSetCounter : 0 ,
532+ addr : server ,
533+ client : client ,
534+ id : id ,
535+ systemVars : systemVars ,
536+ statusVars : statusVars ,
537+ userVars : NewUserVars (),
538+ storedProcParams : make (map [string ]* StoredProcParam ),
539+ idxReg : NewIndexRegistry (),
540+ viewReg : NewViewRegistry (),
541+ locks : make (map [string ]bool ),
542+ lastQueryInfo : defaultLastQueryInfo (),
543+ privSetCounter : 0 ,
518544 }
519545}
520546
@@ -534,14 +560,15 @@ func NewBaseSession() *BaseSession {
534560 statusVars = make (map [string ]StatusVarValue )
535561 }
536562 return & BaseSession {
537- id : atomic .AddUint32 (& autoSessionIDs , 1 ),
538- systemVars : systemVars ,
539- statusVars : statusVars ,
540- userVars : NewUserVars (),
541- idxReg : NewIndexRegistry (),
542- viewReg : NewViewRegistry (),
543- locks : make (map [string ]bool ),
544- lastQueryInfo : defaultLastQueryInfo (),
545- privSetCounter : 0 ,
563+ id : atomic .AddUint32 (& autoSessionIDs , 1 ),
564+ systemVars : systemVars ,
565+ statusVars : statusVars ,
566+ userVars : NewUserVars (),
567+ storedProcParams : make (map [string ]* StoredProcParam ),
568+ idxReg : NewIndexRegistry (),
569+ viewReg : NewViewRegistry (),
570+ locks : make (map [string ]bool ),
571+ lastQueryInfo : defaultLastQueryInfo (),
572+ privSetCounter : 0 ,
546573 }
547574}
0 commit comments