diff options
author | Ted Trask <ttrask01@yahoo.com> | 2013-02-05 16:39:56 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2013-02-05 16:39:56 +0000 |
commit | d98358c9c05802e79a8185e466c14a42aebd2c22 (patch) | |
tree | e4a4f6590738a7d48aa092a54c862d6a0ba086ac /kamailio-model.lua | |
parent | 44d949e561ee652d598c75bd1f4dfc69ca0f6dbc (diff) | |
download | acf-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.lua | 59 |
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 |