Software / code / prosody
Comparison
util/sql.lua @ 8076:6e0defa19ab9
util.sql: Apply quote transform in engine:execute so it is applied to eg encoding checks in mod_storage_sql (thanks Martin)
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 12 Apr 2017 17:26:44 +0200 |
| parent | 8073:7361412a9664 |
| child | 8077:29b3957db212 |
comparison
equal
deleted
inserted
replaced
| 8075:a4dd08fd64cf | 8076:6e0defa19ab9 |
|---|---|
| 137 function engine:execute(sql, ...) | 137 function engine:execute(sql, ...) |
| 138 local success, err = self:connect(); | 138 local success, err = self:connect(); |
| 139 if not success then return success, err; end | 139 if not success then return success, err; end |
| 140 local prepared = self.prepared; | 140 local prepared = self.prepared; |
| 141 | 141 |
| 142 sql = self:prepquery(sql); | |
| 142 local stmt = prepared[sql]; | 143 local stmt = prepared[sql]; |
| 143 if not stmt then | 144 if not stmt then |
| 144 local err; | 145 local err; |
| 145 stmt, err = self.conn:prepare(sql); | 146 stmt, err = self.conn:prepare(sql); |
| 146 if not stmt then return stmt, err; end | 147 if not stmt then return stmt, err; end |
| 252 sql = sql:gsub("\"([,)])", "\"(20)%1"); | 253 sql = sql:gsub("\"([,)])", "\"(20)%1"); |
| 253 end | 254 end |
| 254 if index.unique then | 255 if index.unique then |
| 255 sql = sql:gsub("^CREATE", "CREATE UNIQUE"); | 256 sql = sql:gsub("^CREATE", "CREATE UNIQUE"); |
| 256 end | 257 end |
| 257 sql = self:prepquery(sql); | |
| 258 if self._debug then | 258 if self._debug then |
| 259 debugquery("create", sql); | 259 debugquery("create", sql); |
| 260 end | 260 end |
| 261 return self:execute(sql); | 261 return self:execute(sql); |
| 262 end | 262 end |
| 284 end | 284 end |
| 285 sql = sql.. ");" | 285 sql = sql.. ");" |
| 286 if self.params.driver == "MySQL" then | 286 if self.params.driver == "MySQL" then |
| 287 sql = sql:gsub(";$", (" CHARACTER SET '%s' COLLATE '%s_bin';"):format(self.charset, self.charset)); | 287 sql = sql:gsub(";$", (" CHARACTER SET '%s' COLLATE '%s_bin';"):format(self.charset, self.charset)); |
| 288 end | 288 end |
| 289 sql = self:prepquery(sql); | |
| 290 if self._debug then | 289 if self._debug then |
| 291 debugquery("create", sql); | 290 debugquery("create", sql); |
| 292 end | 291 end |
| 293 local success,err = self:execute(sql); | 292 local success,err = self:execute(sql); |
| 294 if not success then return success,err; end | 293 if not success then return success,err; end |