Software / code / prosody
Comparison
util/sql.lua @ 5742:3c57c2281087
util.sql: Don't fetch row count of result sets for queries that don't have result sets
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 12 Jul 2013 17:03:09 +0200 |
| parent | 5739:2e9ad9cb206f |
| child | 5743:8363dda76155 |
comparison
equal
deleted
inserted
replaced
| 5741:c7a664e496b3 | 5742:3c57c2281087 |
|---|---|
| 176 return stmt; | 176 return stmt; |
| 177 end | 177 end |
| 178 | 178 |
| 179 local result_mt = { __index = { | 179 local result_mt = { __index = { |
| 180 affected = function(self) return self.__affected; end; | 180 affected = function(self) return self.__affected; end; |
| 181 rowcount = function(self) return self.__rowcount; end; | |
| 182 } }; | 181 } }; |
| 183 | 182 |
| 184 function engine:execute_query(sql, ...) | 183 function engine:execute_query(sql, ...) |
| 185 if self.params.driver == "PostgreSQL" then | 184 if self.params.driver == "PostgreSQL" then |
| 186 sql = sql:gsub("`", "\""); | 185 sql = sql:gsub("`", "\""); |
| 198 if not stmt then | 197 if not stmt then |
| 199 stmt = assert(self.conn:prepare(sql)); | 198 stmt = assert(self.conn:prepare(sql)); |
| 200 prepared[sql] = stmt; | 199 prepared[sql] = stmt; |
| 201 end | 200 end |
| 202 assert(stmt:execute(...)); | 201 assert(stmt:execute(...)); |
| 203 return setmetatable({ __affected = stmt:affected(), __rowcount = stmt:rowcount() }, result_mt); | 202 return setmetatable({ __affected = stmt:affected() }, result_mt); |
| 204 end | 203 end |
| 205 engine.insert = engine.execute_update; | 204 engine.insert = engine.execute_update; |
| 206 engine.select = engine.execute_query; | 205 engine.select = engine.execute_query; |
| 207 engine.delete = engine.execute_update; | 206 engine.delete = engine.execute_update; |
| 208 engine.update = engine.execute_update; | 207 engine.update = engine.execute_update; |