@@ -77,7 +77,9 @@ def getTables(self, callback):
7777 def cb (result ):
7878 callback (U .getResultAsList (result ))
7979
80- self .Command .createAndRun (self .builArgs ('desc' ),
80+ args = self .buildArgs ('desc' )
81+ env = self .buildEnv ()
82+ self .Command .createAndRun (args , env ,
8183 query , cb , silenceErrors = True )
8284
8385 def getColumns (self , callback ):
@@ -87,7 +89,9 @@ def cb(result):
8789
8890 try :
8991 query = self .getOptionsForSgdbCli ()['queries' ]['columns' ]['query' ]
90- self .Command .createAndRun (self .builArgs ('columns' ),
92+ args = self .buildArgs ('columns' )
93+ env = self .buildEnv ()
94+ self .Command .createAndRun (args , env ,
9195 query , cb , silenceErrors = True )
9296 except Exception :
9397 pass
@@ -99,26 +103,34 @@ def cb(result):
99103
100104 try :
101105 query = self .getOptionsForSgdbCli ()['queries' ]['functions' ]['query' ]
102- self .Command .createAndRun (self .builArgs ('functions' ),
106+ args = self .buildArgs ('functions' )
107+ env = self .buildEnv ()
108+ self .Command .createAndRun (args , env ,
103109 query , cb , silenceErrors = True )
104110 except Exception :
105111 pass
106112
107113 def getTableRecords (self , tableName , callback ):
108114 query = self .getOptionsForSgdbCli ()['queries' ]['show records' ]['query' ].format (tableName , self .rowsLimit )
109115 queryToRun = '\n ' .join (self .getOptionsForSgdbCli ()['before' ] + [query ])
110- self .Command .createAndRun (self .builArgs ('show records' ), queryToRun , callback , timeout = self .timeout )
116+ args = self .buildArgs ('show records' )
117+ env = self .buildEnv ()
118+ self .Command .createAndRun (args , env , queryToRun , callback , timeout = self .timeout )
111119
112120 def getTableDescription (self , tableName , callback ):
113121 query = self .getOptionsForSgdbCli ()['queries' ]['desc table' ]['query' ] % tableName
114122 queryToRun = '\n ' .join (self .getOptionsForSgdbCli ()['before' ] + [query ])
115- self .Command .createAndRun (self .builArgs ('desc table' ), queryToRun , callback )
123+ args = self .buildArgs ('desc table' )
124+ env = self .buildEnv ()
125+ self .Command .createAndRun (args , env , queryToRun , callback )
116126
117127 def getFunctionDescription (self , functionName , callback ):
118128 query = self .getOptionsForSgdbCli ()['queries' ]['desc function' ][
119129 'query' ] % functionName
120130 queryToRun = '\n ' .join (self .getOptionsForSgdbCli ()['before' ] + [query ])
121- self .Command .createAndRun (self .builArgs ('desc function' ), queryToRun , callback )
131+ args = self .buildArgs ('desc function' )
132+ env = self .buildEnv ()
133+ self .Command .createAndRun (args , env , queryToRun , callback )
122134
123135 def explainPlan (self , queries , callback ):
124136 try :
@@ -132,7 +144,9 @@ def explainPlan(self, queries, callback):
132144 for query in filter (None , sqlparse .split (rawQuery ))
133145 ]
134146 queryToRun = '\n ' .join (self .getOptionsForSgdbCli ()['before' ] + stripped_queries )
135- self .Command .createAndRun (self .builArgs ('explain plan' ), queryToRun , callback , timeout = self .timeout )
147+ args = self .buildArgs ('explain plan' )
148+ env = self .buildEnv ()
149+ self .Command .createAndRun (args , env , queryToRun , callback , timeout = self .timeout )
136150
137151 def execute (self , queries , callback , stream = False ):
138152 queryToRun = ''
@@ -165,9 +179,11 @@ def execute(self, queries, callback, stream=False):
165179 if self .history :
166180 self .history .add (queryToRun )
167181
168- self .Command .createAndRun (self .builArgs (), queryToRun , callback , options = {'show_query' : self .show_query }, timeout = self .timeout , stream = stream )
182+ args = self .buildArgs ()
183+ env = self .buildEnv ()
184+ self .Command .createAndRun (args , env , queryToRun , callback , options = {'show_query' : self .show_query }, timeout = self .timeout , stream = stream )
169185
170- def builArgs (self , queryName = None ):
186+ def buildArgs (self , queryName = None ):
171187 cliOptions = self .getOptionsForSgdbCli ()
172188 args = [self .cli ]
173189
@@ -206,6 +222,31 @@ def builArgs(self, queryName=None):
206222 Log ('Using cli args ' + ' ' .join (args ))
207223 return args
208224
225+ def buildEnv (self ):
226+ cliOptions = self .getOptionsForSgdbCli ()
227+ env = dict ()
228+
229+ # append **optional** environment variables dict (if any)
230+ optionalEnv = cliOptions .get ('env_optional' )
231+ if optionalEnv : # only if we have optional args
232+ if isinstance (optionalEnv , dict ):
233+ for var , value in optionalEnv .items ():
234+ formattedValue = self .formatOptionalArgument (value , self .options )
235+ if formattedValue :
236+ env .update ({var : formattedValue })
237+
238+ # append environment variables dict (if any)
239+ staticEnv = cliOptions .get ('env' )
240+ if staticEnv : # only if we have optional args
241+ if isinstance (staticEnv , dict ):
242+ for var , value in staticEnv .items ():
243+ formattedValue = value .format (** self .options )
244+ if formattedValue :
245+ env .update ({var : formattedValue })
246+
247+ Log ('Environment for command: ' + str (env ))
248+ return env
249+
209250 def getOptionsForSgdbCli (self ):
210251 return self .settings .get ('cli_options' , {}).get (self .type )
211252
0 commit comments