summaryrefslogtreecommitdiff
path: root/tex/context/base/util-sql.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/util-sql.lua')
-rw-r--r--tex/context/base/util-sql.lua26
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