summaryrefslogtreecommitdiffstats
path: root/kamailio-model.lua
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2013-02-05 16:39:56 +0000
committerTed Trask <ttrask01@yahoo.com>2013-02-05 16:39:56 +0000
commitd98358c9c05802e79a8185e466c14a42aebd2c22 (patch)
treee4a4f6590738a7d48aa092a54c862d6a0ba086ac /kamailio-model.lua
parent44d949e561ee652d598c75bd1f4dfc69ca0f6dbc (diff)
downloadacf-kamailio-d98358c9c05802e79a8185e466c14a42aebd2c22.tar.bz2
acf-kamailio-d98358c9c05802e79a8185e466c14a42aebd2c22.tar.xz
Added postgres version check to determine if should escape backslash or not
Diffstat (limited to 'kamailio-model.lua')
-rw-r--r--kamailio-model.lua59
1 files changed, 37 insertions, 22 deletions
diff --git a/kamailio-model.lua b/kamailio-model.lua
index 944627c..be19643 100644
--- a/kamailio-model.lua
+++ b/kamailio-model.lua
@@ -16,6 +16,7 @@ local kamctlrc_file = "/etc/kamailio/kamctlrc"
local env
local con
local DBENGINE
+local escapebackslash = false
-- ################################################################################
-- DATABASE FUNCTIONS
@@ -31,9 +32,34 @@ end
-- Escape special characters in sql statements
local escape = function(sql)
sql = sql or ""
+ if escapebackslash then
+ sql = string.gsub(sql, "\\", "\\\\")
+ end
return string.gsub(sql, "'", "''")
end
+local runsqlcommand = function(sql)
+logevent(sql)
+ assert(con:execute(sql))
+end
+
+local getselectresponse = function(sql)
+ local retval = {}
+logevent(sql)
+ local cur = assert (con:execute(sql))
+ local row = cur:fetch ({}, "a")
+ while row do
+ local tmp = {}
+ for name,val in pairs(row) do
+ tmp[name] = val
+ end
+ retval[#retval + 1] = tmp
+ row = cur:fetch (row, "a")
+ end
+ cur:close()
+ return retval
+end
+
local databaseconnect = function()
if not con then
-- parse the kamctlrc file
@@ -61,6 +87,17 @@ local databaseconnect = function()
-- connect to data source
con = assert(env:connect(config.DBNAME or "openser", config.DBRWUSER or "openser", config.DBRWPW or "openserrw", config.DBHOST, config.DBPORT))
+
+ -- Check the version for any special functionality
+ if DBENGINE == "PGSQL" then
+ local out = getselectresponse("SELECT version()")
+ local version = string.match(out[1].version, "([%d%.]+)")
+ local versionnum = tonumber(string.match(version, "%d+%.%d+"))
+ if versionnum < 9.1 then
+ escapebackslash = true
+ end
+ end
+
return true
end
return false
@@ -77,28 +114,6 @@ local databasedisconnect = function()
end
end
-local runsqlcommand = function(sql)
-logevent(sql)
- assert(con:execute(sql))
-end
-
-local getselectresponse = function(sql)
- local retval = {}
-logevent(sql)
- local cur = assert (con:execute(sql))
- local row = cur:fetch ({}, "a")
- while row do
- local tmp = {}
- for name,val in pairs(row) do
- tmp[name] = val
- end
- retval[#retval + 1] = tmp
- row = cur:fetch (row, "a")
- end
- cur:close()
- return retval
-end
-
local listtables = function()
local result = {}
if DBENGINE == "PGSQL" then