diff options
author | Karl Berry <karl@freefriends.org> | 2013-04-19 23:37:39 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-04-19 23:37:39 +0000 |
commit | 69de3344104bfec286cbe7ea63f03fab58d3c1ec (patch) | |
tree | 14d60f3983479b6a35b024ed1c170d109b86d4e9 /Master/texmf-dist/tex/context/base/util-sql-imp-swiglib.lua | |
parent | 9ff55323bdb88ede985266ee9123bc2cdda58848 (diff) |
context update from cont-tmf.zip of Apr 20 01:16, 11085698 bytes
git-svn-id: svn://tug.org/texlive/trunk@30044 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/util-sql-imp-swiglib.lua')
-rw-r--r-- | Master/texmf-dist/tex/context/base/util-sql-imp-swiglib.lua | 51 |
1 files changed, 33 insertions, 18 deletions
diff --git a/Master/texmf-dist/tex/context/base/util-sql-imp-swiglib.lua b/Master/texmf-dist/tex/context/base/util-sql-imp-swiglib.lua index 9a22477a9b1..719620a6f9c 100644 --- a/Master/texmf-dist/tex/context/base/util-sql-imp-swiglib.lua +++ b/Master/texmf-dist/tex/context/base/util-sql-imp-swiglib.lua @@ -110,7 +110,10 @@ local typemap = mysql.MYSQL_TYPE_VAR_STRING and { -- real_escape_string local function finish(t) - mysql_free_result(t._result_) + local r = t._result_ + if r then + mysql_free_result(r) + end end -- will become metatable magic @@ -203,9 +206,17 @@ local mt = { __index = { numrows = numrows, getcolnames = getcolnames, getcoltypes = getcoltypes, + -- fallback + _result_ = nil, + names = { }, + types = { }, + noffields = 0, + nofrows = 0, } } +local nt = setmetatable({},mt) + -- session local function close(t) @@ -218,24 +229,28 @@ local function execute(t,query) local result = mysql_execute_query(connection,query,#query) if result == 0 then local result = mysql_store_result(connection) - mysql_field_seek(result,0) - local nofrows = mysql_num_rows(result) or 0 - local noffields = mysql_num_fields(result) - local names = { } - local types = { } - for i=1,noffields do - local field = mysql_fetch_field(result) - names[i] = field.name - types[i] = field.type + if result then + mysql_field_seek(result,0) + local nofrows = mysql_num_rows(result) or 0 + local noffields = mysql_num_fields(result) + local names = { } + local types = { } + for i=1,noffields do + local field = mysql_fetch_field(result) + names[i] = field.name + types[i] = field.type + end + local t = { + _result_ = result, + names = names, + types = types, + noffields = noffields, + nofrows = nofrows, + } + return setmetatable(t,mt) + else + return nt end - local t = { - _result_ = result, - names = names, - types = types, - noffields = noffields, - nofrows = nofrows, - } - return setmetatable(t,mt) end end return false |