@@ -77,7 +77,9 @@ def getTables(self, callback):
77
77
def cb (result ):
78
78
callback (U .getResultAsList (result ))
79
79
80
- self .Command .createAndRun (self .builArgs ('desc' ),
80
+ args = self .buildArgs ('desc' )
81
+ env = self .buildEnv ()
82
+ self .Command .createAndRun (args , env ,
81
83
query , cb , silenceErrors = True )
82
84
83
85
def getColumns (self , callback ):
@@ -87,7 +89,9 @@ def cb(result):
87
89
88
90
try :
89
91
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 ,
91
95
query , cb , silenceErrors = True )
92
96
except Exception :
93
97
pass
@@ -99,26 +103,34 @@ def cb(result):
99
103
100
104
try :
101
105
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 ,
103
109
query , cb , silenceErrors = True )
104
110
except Exception :
105
111
pass
106
112
107
113
def getTableRecords (self , tableName , callback ):
108
114
query = self .getOptionsForSgdbCli ()['queries' ]['show records' ]['query' ].format (tableName , self .rowsLimit )
109
115
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 )
111
119
112
120
def getTableDescription (self , tableName , callback ):
113
121
query = self .getOptionsForSgdbCli ()['queries' ]['desc table' ]['query' ] % tableName
114
122
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 )
116
126
117
127
def getFunctionDescription (self , functionName , callback ):
118
128
query = self .getOptionsForSgdbCli ()['queries' ]['desc function' ][
119
129
'query' ] % functionName
120
130
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 )
122
134
123
135
def explainPlan (self , queries , callback ):
124
136
try :
@@ -132,7 +144,9 @@ def explainPlan(self, queries, callback):
132
144
for query in filter (None , sqlparse .split (rawQuery ))
133
145
]
134
146
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 )
136
150
137
151
def execute (self , queries , callback , stream = False ):
138
152
queryToRun = ''
@@ -165,9 +179,11 @@ def execute(self, queries, callback, stream=False):
165
179
if self .history :
166
180
self .history .add (queryToRun )
167
181
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 )
169
185
170
- def builArgs (self , queryName = None ):
186
+ def buildArgs (self , queryName = None ):
171
187
cliOptions = self .getOptionsForSgdbCli ()
172
188
args = [self .cli ]
173
189
@@ -206,6 +222,31 @@ def builArgs(self, queryName=None):
206
222
Log ('Using cli args ' + ' ' .join (args ))
207
223
return args
208
224
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
+
209
250
def getOptionsForSgdbCli (self ):
210
251
return self .settings .get ('cli_options' , {}).get (self .type )
211
252
0 commit comments