summaryrefslogtreecommitdiff
path: root/lib/dblib.lua
diff options
context:
space:
mode:
authorPixel <pixel@nobis-crew.org>2009-09-30 16:24:06 -0700
committerPixel <pixel@nobis-crew.org>2009-09-30 16:24:06 -0700
commit15c9b1d365b31e37e2163375c5a643179c46e6ff (patch)
tree2b3a4d46a325c618cd12d2e55d0fe6faf9a0a3d9 /lib/dblib.lua
parentcd5af67c1d0266c38ddce37f72e906726a776b9c (diff)
Fixing a few bugs, moving Desc from hitten to public, and adding the rawselect methods.
Diffstat (limited to 'lib/dblib.lua')
-rw-r--r--lib/dblib.lua93
1 files changed, 58 insertions, 35 deletions
diff --git a/lib/dblib.lua b/lib/dblib.lua
index 6b4599a..a47b755 100644
--- a/lib/dblib.lua
+++ b/lib/dblib.lua
@@ -194,11 +194,50 @@ END;
return r, alters, keys, extras
end,
+ newtable = function(tablename, tname, db, ddl)
+ return {
+ insert = _luadb.insert,
+ delete = _luadb.delete,
+ select = _luadb.select,
+ gselect = _luadb.gselect,
+ rselect = _luadb.rselect,
+ grselect = _luadb.grselect,
+ update = _luadb.update,
+ pinsert = function(...) return pcall(_luadb.insert, ...) end,
+ pdelete = function(...) return pcall(_luadb.delete, ...) end,
+ pselect = function(...) return pcall(_luadb.select, ...) end,
+ pgselect = function(...) return pcall(_luadb.gselect, ...) end,
+ prselect = function(...) return pcall(_luadb.rselect, ...) end,
+ pgrselect = function(...) return pcall(_luadb.grselect, ...) end,
+ pupdate = function(...) return pcall(_luadb.update, ...) end,
+ numrows = _luadb.numrows,
+ numfields = _luadb.numfields,
+ nextrow = _luadb.nextrow,
+ count = _luadb.count,
+ restrict = _luadb.restrict,
+ restricter = _luadb.restricter,
+ empty = _luadb.empty,
+ _ = {
+ tablename = tablename,
+ tname = tname,
+ db = db,
+ ddl = ddl,
+ conditions = "1=1",
+ },
+ }
+ end,
+
opentable = function(db, tablename, ddl, force_create)
+ local tname
+ if db._.prefix and db._.prefix ~= "" and db._.odbc_name == "oracle" then
+ tname = db._.fq .. db._.prefix .. db._.fq .. '.' .. db._.fq .. db.sql_escape(tablename) .. db._.fq
+ else
+ tname = db._.fq .. db._.prefix .. db.sql_escape(tablename) .. db._.fq
+ end
+ if not ddl then return _luadb.newtable(tablename, tname, db, ddl) end
local fields, alters, keys, extras = _luadb.generate_fields(db, tablename, ddl)
- local tname = db._.fq .. db._.prefix .. db.sql_escape(tablename) .. db._.fq
local operations = 0
- local dfields = db._.Desc(db, tablename)
+ local dfields = db:Desc(tablename)
if force_create or dfields == nil then
-- table doesn't exist, create it
@@ -337,32 +376,7 @@ END;
end
end
- return {
- insert = _luadb.insert,
- delete = _luadb.delete,
- select = _luadb.select,
- gselect = _luadb.gselect,
- update = _luadb.update,
- pinsert = function(...) return pcall(_luadb.insert, ...) end,
- pdelete = function(...) return pcall(_luadb.delete, ...) end,
- pselect = function(...) return pcall(_luadb.select, ...) end,
- pgselect = function(...) return pcall(_luadb.gselect, ...) end,
- pupdate = function(...) return pcall(_luadb.update, ...) end,
- numrows = _luadb.numrows,
- numfields = _luadb.numfields,
- nextrow = _luadb.nextrow,
- count = _luadb.count,
- restrict = _luadb.restrict,
- restricter = _luadb.restricter,
- empty = _luadb.empty,
- _ = {
- tablename = tablename,
- tname = tname,
- db = db,
- ddl = ddl,
- conditions = "1",
- },
- }, operations
+ return newtable(tablename, tname, db, ddl), operations
end,
compare_fields = function(db, ddl, field)
@@ -625,7 +639,7 @@ END;
end
if foreign then
- local foreign_conds = "1"
+ local foreign_conds = "1=1"
stmt = stmt .. " FROM " .. t._.tname
local found_table, fname, f
for k, v in pairs(foreign) do
@@ -718,6 +732,10 @@ END;
return _luadb.iselect(false, ...)
end,
+ rselect = function(...)
+ return _luadb.iselect(true, ...)
+ end,
+
numrows = function(t)
if t._.db._.odbc_name == "mysql" then
return t._.db._.conn:NumRows()
@@ -749,6 +767,11 @@ END;
return t.nextrow, t
end,
+ grselect = function(t, ...)
+ _luadb.iselect(true, t, ...)
+ return t.nextrow, t
+ end,
+
nextrow = function(t)
if t._.db._.odbc_name == "mysql" then
return t._.db._.conn:FetchRow()
@@ -756,7 +779,7 @@ END;
local row = nil
if t._.db._.rset:next() ~= 0 then
row = {}
- for k, v in t._.db._.fieldsNames do
+ for k, v in pairs(t._.db._.fieldsNames) do
row[v] = t._.db._.rset:getString(k)
end
end
@@ -827,7 +850,7 @@ END;
restrict = function(t, conditions)
-- all in all, "conditions" can just be a direct string. Let the programmer do what he wants, after all.
- if conditions == nil or conditions == "" then conditions = "1" end
+ if conditions == nil or conditions == "" then conditions = "1=1" end
t._.conditions = conditions
end,
@@ -861,7 +884,7 @@ END;
oracle = {
_SafeQuery = function(db, str, query_type, no_commit)
local r = -1
-
+
if luadb.debugmode then
print(str)
end
@@ -999,7 +1022,7 @@ END;
elseif col.PRECISION_NUM then
row.Type = row.Type .. "(" .. col.PRECISION_NUM .. ")"
else
- if row.Type == "NUMBER" and (col.SCALE + 0) == 0 then
+ if row.Type == "NUMBER" and (not col.SCALE or ((col.SCALE + 0) == 0)) then
row.Type = "INT"
end
row.Type = row.Type .. "(" .. col.LENGTH .. ")"
@@ -1065,6 +1088,7 @@ luadb = {
ErrNO = function(db) return db._.conn:ErrNO() end,
Error = function(db) return db._.conn:Error() end,
ErrorStr = function(db) return db._.conn:ErrNO() .. " - " .. db._.conn:Error() end,
+ Desc = _luadb.mysql.Desc,
_ = {
fq = '`',
eq = '"',
@@ -1075,7 +1099,6 @@ luadb = {
base = base,
prefix = sql_escape(prefix or ""),
odbc_name = "mysql",
- Desc = _luadb.mysql.Desc,
},
}
end, },
@@ -1106,6 +1129,7 @@ luadb = {
ErrNO = function(db) return db._.errNO end,
Error = function(db) return db._.errStr end,
ErrorStr = function(db) return db._.errStr end,
+ Desc = _luadb.oracle.Desc,
_ = {
fq = '"',
eq = "'",
@@ -1116,7 +1140,6 @@ luadb = {
base = base,
prefix = sql_escape(prefix or ""),
odbc_name = "oracle",
- Desc = _luadb.oracle.Desc,
},
}