/usr/share/lua/5.1/DBI.lua is in lua-dbi-common 0.5.hg5ba1dd988961-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | module('DBI', package.seeall)
-- Driver to module mapping
local name_to_module = {
MySQL = 'dbdmysql',
PostgreSQL = 'dbdpostgresql',
SQLite3 = 'dbdsqlite3',
DB2 = 'dbddb2',
Oracle = 'dbdoracle',
}
local string = require('string')
-- Returns a list of available drivers
-- based on run time loading
local function available_drivers()
local available = {}
for driver, modulefile in pairs(name_to_module) do
local m, err = pcall(require, modulefile)
if m then
table.insert(available, driver)
end
end
-- no drivers available
if table.maxn(available) < 1 then
available = {'(None)'}
end
return available
end
-- High level DB connection function
-- This should be used rather than DBD.{Driver}.New
function Connect(driver, ...)
local modulefile = name_to_module[driver]
if not modulefile then
local available = table.concat(available_drivers(), ',')
error(string.format("Driver '%s' not found. Available drivers are: %s", driver, available))
end
local m, err = pcall(require, modulefile)
if not m then
-- cannot load the module, we cannot continue
local available = table.concat(available_drivers(), ',')
error(string.format('Cannot load driver %s. Available drivers are: %s', driver, available))
end
local class_str = string.format('DBD.%s.Connection', driver)
local connection_class = package.loaded[class_str]
-- Calls DBD.{Driver}.New(...)
return connection_class.New(...)
end
-- Help function to do prepare and execute in
-- a single step
function Do(dbh, sql, ...)
local sth,err = dbh:prepare(sql)
if not sth then
return false, err
end
local ok, err = sth:execute(...)
if not ok then
return false, err
end
return sth:affected()
end
-- Lit drivers available on this system
function Drivers()
return available_drivers()
end
|