diff options
Diffstat (limited to 'tex/context/base/util-sql.lua')
-rw-r--r-- | tex/context/base/util-sql.lua | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/tex/context/base/util-sql.lua b/tex/context/base/util-sql.lua index fea60c96a..4e9a5bcd4 100644 --- a/tex/context/base/util-sql.lua +++ b/tex/context/base/util-sql.lua @@ -348,6 +348,10 @@ local function execute(specification) report_state("error in converting") return end + local one = data[1] + if one then + setmetatable(data,{ __index = one } ) + end return data, keys end @@ -407,6 +411,10 @@ local function execute(specification) report_state("error in converting") return end + local one = data[1] + if one then + setmetatable(data,{ __index = one } ) + end return data, keys end @@ -464,6 +472,10 @@ local query = whitespace local splitter = Ct(query * (separator * query)^0) local function datafetched(specification,query,converter) + if not query or query == "" then + report_state("no valid query") + return { }, { } + end local id = specification.id local session, connection if id then @@ -605,6 +617,10 @@ local function execute(specification) report_state("error in fetching") return end + local one = data[1] + if one then + setmetatable(data,{ __index = one } ) + end return data, keys end @@ -764,7 +780,7 @@ return function(result,deserialize) local data = { } for i=1,nofrows do local v = { result:fetch() } - data[#data+1] = { + data[i] = { %s } end @@ -775,6 +791,7 @@ end function sql.makeconverter(entries,deserialize) local shortcuts = { } local assignments = { } + local fields = { } for i=1,#entries do local entry = entries[i] local nam = entry.name @@ -798,13 +815,12 @@ function sql.makeconverter(entries,deserialize) else assignments[i] = format("[%q] = v[%s],",nam,i) end + fields[#fields+1] = format("`%s`",nam) end local code = string.format(template,table.concat(shortcuts,"\n"),table.concat(assignments,"\n ")) local func = loadstring(code) if type(func) == "function" then - return func(), code - else - return false, code + return func(), concat(fields, ", ") end end @@ -850,3 +866,5 @@ else sql.prepare = sql.execute end + +return sql |