Problem with LUA dbh:query in Freeswitch
I am trying to use Lua to retrieve some currency conversion rates from a postgres database. It works but the numeric field value is only returning the first three decimal places although if I list the data in postgres it has four decimal places. I may be doing something daft as I am quite new to Lua, sample code is below. Any ideas appreciated regards, John local dbh = freeswitch.Dbh("odbc://fs_odbc:fs_user:password") if dbh:connected() == false then freeswitch.consoleLog("notice", "dp.lua cannot connect to database" .. dsn .. "\n") return end assert(dbh:connected()) e_rate = 1.123456789 -- just a test to see decimal places freeswitch.consoleLog("info",string.format(" e_rate = %f", e_rate)) local function eur2usd() local sql = "select eur2usd from currency order by id desc limit 1" dbh:query(sql, function(row) e_rate = row.eur2usd end) end local function eur2gbp() local sql = "select eur2gbp from currency order by id desc limit 1" dbh:query(sql, function(row) e_rate = row.eur2gbp end) end eur2usd() freeswitch.consoleLog("info",string.format(" euro2usd = %f", e_rate)) eur2gbp() freeswitch.consoleLog("info",string.format(" euro2gbp = %f", e_rate))
Have you tried a pgsql:// dsn? In case the ODBC driver is having some truncating effect. On 22 March 2015 at 02:06, John Carpenter <carpenter.john@gmail.com> wrote:
I am trying to use Lua to retrieve some currency conversion rates from a postgres database. It works but the numeric field value is only returning the first three decimal places although if I list the data in postgres it has four decimal places. I may be doing something daft as I am quite new to Lua, sample code is below. Any ideas appreciated
regards, John
local dbh = freeswitch.Dbh("odbc://fs_odbc:fs_user:password") if dbh:connected() == false then freeswitch.consoleLog("notice", "dp.lua cannot connect to database" .. dsn .. "\n") return end assert(dbh:connected())
e_rate = 1.123456789 -- just a test to see decimal places freeswitch.consoleLog("info",string.format(" e_rate = %f", e_rate))
local function eur2usd() local sql = "select eur2usd from currency order by id desc limit 1" dbh:query(sql, function(row) e_rate = row.eur2usd end) end
local function eur2gbp() local sql = "select eur2gbp from currency order by id desc limit 1" dbh:query(sql, function(row) e_rate = row.eur2gbp end) end
eur2usd() freeswitch.consoleLog("info",string.format(" euro2usd = %f", e_rate)) eur2gbp() freeswitch.consoleLog("info",string.format(" euro2gbp = %f", e_rate))
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
Thats it, changed connection to a pgsql:// dsn and I get four decimal places, changed it back to ODBC and back to 3 decimal places. Thanks very much, been driving me mad On 23 March 2015 at 10:23, Steven Ayre <steveayre@gmail.com> wrote:
Have you tried a pgsql:// dsn? In case the ODBC driver is having some truncating effect.
On 22 March 2015 at 02:06, John Carpenter <carpenter.john@gmail.com> wrote:
I am trying to use Lua to retrieve some currency conversion rates from a postgres database. It works but the numeric field value is only returning the first three decimal places although if I list the data in postgres it has four decimal places. I may be doing something daft as I am quite new to Lua, sample code is below. Any ideas appreciated
regards, John
local dbh = freeswitch.Dbh("odbc://fs_odbc:fs_user:password") if dbh:connected() == false then freeswitch.consoleLog("notice", "dp.lua cannot connect to database" .. dsn .. "\n") return end assert(dbh:connected())
e_rate = 1.123456789 -- just a test to see decimal places freeswitch.consoleLog("info",string.format(" e_rate = %f", e_rate))
local function eur2usd() local sql = "select eur2usd from currency order by id desc limit 1" dbh:query(sql, function(row) e_rate = row.eur2usd end) end
local function eur2gbp() local sql = "select eur2gbp from currency order by id desc limit 1" dbh:query(sql, function(row) e_rate = row.eur2gbp end) end
eur2usd() freeswitch.consoleLog("info",string.format(" euro2usd = %f", e_rate)) eur2gbp() freeswitch.consoleLog("info",string.format(" euro2gbp = %f", e_rate))
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
I’m not much of a programmer, but can’t you specify a format to %f to force it to return 4 decimal places? Or is that not available in Lua? Bote From: John Carpenter Sent: Monday, 23 March, 2015 06:59 Subject: Re: [Freeswitch-users] Problem with LUA dbh:query in Freeswitch Thats it, changed connection to a pgsql:// dsn and I get four decimal places, changed it back to ODBC and back to 3 decimal places. Thanks very much, been driving me mad On 23 March 2015 at 10:23, Steven Ayre <steveayre@gmail.com> wrote: Have you tried a pgsql:// dsn? In case the ODBC driver is having some truncating effect. On 22 March 2015 at 02:06, John Carpenter <carpenter.john@gmail.com> wrote: I am trying to use Lua to retrieve some currency conversion rates from a postgres database. It works but the numeric field value is only returning the first three decimal places although if I list the data in postgres it has four decimal places. I may be doing something daft as I am quite new to Lua, sample code is below. Any ideas appreciated regards, John local dbh = freeswitch.Dbh("odbc://fs_odbc:fs_user:password") if dbh:connected() == false then freeswitch.consoleLog("notice", "dp.lua cannot connect to database" .. dsn .. "\n") return end assert(dbh:connected()) e_rate = 1.123456789 -- just a test to see decimal places freeswitch.consoleLog("info",string.format(" e_rate = %f", e_rate)) local function eur2usd() local sql = "select eur2usd from currency order by id desc limit 1" dbh:query(sql, function(row) e_rate = row.eur2usd end) end local function eur2gbp() local sql = "select eur2gbp from currency order by id desc limit 1" dbh:query(sql, function(row) e_rate = row.eur2gbp end) end eur2usd() freeswitch.consoleLog("info",string.format(" euro2usd = %f", e_rate)) eur2gbp() freeswitch.consoleLog("info",string.format(" euro2gbp = %f", e_rate))
Yep, it's available and defaults to 6 decimal places, but looks like it's not a Lua issue... On Mon, Mar 23, 2015 at 9:05 AM, Bote Man <bote_radio@botecomm.com> wrote:
I’m not much of a programmer, but can’t you specify a format to %f to force it to return 4 decimal places?
Or is that not available in Lua?
Bote
*From:* John Carpenter *Sent:* Monday, 23 March, 2015 06:59 *Subject:* Re: [Freeswitch-users] Problem with LUA dbh:query in Freeswitch
Thats it, changed connection to a pgsql:// dsn and I get four decimal places, changed it back to ODBC and back to 3 decimal places.
Thanks very much, been driving me mad
On 23 March 2015 at 10:23, Steven Ayre <steveayre@gmail.com> wrote:
Have you tried a pgsql:// dsn? In case the ODBC driver is having some truncating effect.
On 22 March 2015 at 02:06, John Carpenter <carpenter.john@gmail.com> wrote:
I am trying to use Lua to retrieve some currency conversion rates from a postgres database. It works but the numeric field value is only returning the first three decimal places although if I list the data in postgres it has four decimal places. I may be doing something daft as I am quite new to Lua, sample code is below. Any ideas appreciated
regards, John
*local* dbh = freeswitch.Dbh(*"odbc://fs_odbc:fs_user:password"*) *if* dbh:connected() == *false* *then* freeswitch.consoleLog(*"notice"*, *"dp.lua cannot connect to database"* .. dsn .. *"\n"*) *return* *end* *assert*(dbh:connected())
e_rate = *1.123456789* *-- just a test* to see decimal places freeswitch.consoleLog(*"info"*,*string.format*(*" e_rate = %f"*, e_rate))
*local* *function* eur2usd() *local* sql = *"select eur2usd from currency order by id desc limit 1"* dbh:query(sql, *function*(row) e_rate = row.eur2usd *end*) *end*
*local* *function* eur2gbp() *local* sql = *"select eur2gbp from currency order by id desc limit 1"* dbh:query(sql, *function*(row) e_rate = row.eur2gbp *end*) *end*
eur2usd() freeswitch.consoleLog(*"info"*,*string.format*(*" euro2usd = %f"*, e_rate)) eur2gbp() freeswitch.consoleLog(*"info"*,*string.format*(*" euro2gbp = %f"*, e_rate))
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
-- Ítalo Rossi
I'm doing something very similar, this is what I use: local rate = string.format("%.4f", currency]["rate"]) On Mon, Mar 23, 2015 at 8:45 AM, Ítalo Rossi <italorossib@gmail.com> wrote:
Yep, it's available and defaults to 6 decimal places, but looks like it's not a Lua issue...
On Mon, Mar 23, 2015 at 9:05 AM, Bote Man <bote_radio@botecomm.com> wrote:
I’m not much of a programmer, but can’t you specify a format to %f to force it to return 4 decimal places?
Or is that not available in Lua?
Bote
*From:* John Carpenter *Sent:* Monday, 23 March, 2015 06:59 *Subject:* Re: [Freeswitch-users] Problem with LUA dbh:query in Freeswitch
Thats it, changed connection to a pgsql:// dsn and I get four decimal places, changed it back to ODBC and back to 3 decimal places.
Thanks very much, been driving me mad
On 23 March 2015 at 10:23, Steven Ayre <steveayre@gmail.com> wrote:
Have you tried a pgsql:// dsn? In case the ODBC driver is having some truncating effect.
On 22 March 2015 at 02:06, John Carpenter <carpenter.john@gmail.com> wrote:
I am trying to use Lua to retrieve some currency conversion rates from a postgres database. It works but the numeric field value is only returning the first three decimal places although if I list the data in postgres it has four decimal places. I may be doing something daft as I am quite new to Lua, sample code is below. Any ideas appreciated
regards, John
*local* dbh = freeswitch.Dbh(*"odbc://fs_odbc:fs_user:password"*) *if* dbh:connected() == *false* *then* freeswitch.consoleLog(*"notice"*, *"dp.lua cannot connect to database"* .. dsn .. *"\n"*) *return* *end* *assert*(dbh:connected())
e_rate = *1.123456789* *-- just a test* to see decimal places freeswitch.consoleLog(*"info"*,*string.format*(*" e_rate = %f"*, e_rate))
*local* *function* eur2usd() *local* sql = *"select eur2usd from currency order by id desc limit 1"* dbh:query(sql, *function*(row) e_rate = row.eur2usd *end*) *end*
*local* *function* eur2gbp() *local* sql = *"select eur2gbp from currency order by id desc limit 1"* dbh:query(sql, *function*(row) e_rate = row.eur2gbp *end*) *end*
eur2usd() freeswitch.consoleLog(*"info"*,*string.format*(*" euro2usd = %f"*, e_rate)) eur2gbp() freeswitch.consoleLog(*"info"*,*string.format*(*" euro2gbp = %f"*, e_rate))
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
-- Ítalo Rossi
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
Thanks for all the other input but the resolution was to ditch ODBC and use pgsql// dsn. With ODBC I get 3 decimal places, with pgsql dsb I get the required 4. I think its a bit faster too. On 23 March 2015 at 18:40, Abaci B <abaci64@gmail.com> wrote:
I'm doing something very similar, this is what I use:
local rate = string.format("%.4f", currency]["rate"])
On Mon, Mar 23, 2015 at 8:45 AM, Ítalo Rossi <italorossib@gmail.com> wrote:
Yep, it's available and defaults to 6 decimal places, but looks like it's not a Lua issue...
On Mon, Mar 23, 2015 at 9:05 AM, Bote Man <bote_radio@botecomm.com> wrote:
I’m not much of a programmer, but can’t you specify a format to %f to force it to return 4 decimal places?
Or is that not available in Lua?
Bote
*From:* John Carpenter *Sent:* Monday, 23 March, 2015 06:59 *Subject:* Re: [Freeswitch-users] Problem with LUA dbh:query in Freeswitch
Thats it, changed connection to a pgsql:// dsn and I get four decimal places, changed it back to ODBC and back to 3 decimal places.
Thanks very much, been driving me mad
On 23 March 2015 at 10:23, Steven Ayre <steveayre@gmail.com> wrote:
Have you tried a pgsql:// dsn? In case the ODBC driver is having some truncating effect.
On 22 March 2015 at 02:06, John Carpenter <carpenter.john@gmail.com> wrote:
I am trying to use Lua to retrieve some currency conversion rates from a postgres database. It works but the numeric field value is only returning the first three decimal places although if I list the data in postgres it has four decimal places. I may be doing something daft as I am quite new to Lua, sample code is below. Any ideas appreciated
regards, John
*local* dbh = freeswitch.Dbh(*"odbc://fs_odbc:fs_user:password"*) *if* dbh:connected() == *false* *then* freeswitch.consoleLog(*"notice"*, *"dp.lua cannot connect to database"* .. dsn .. *"\n"*) *return* *end* *assert*(dbh:connected())
e_rate = *1.123456789* *-- just a test* to see decimal places freeswitch.consoleLog(*"info"*,*string.format*(*" e_rate = %f"*, e_rate))
*local* *function* eur2usd() *local* sql = *"select eur2usd from currency order by id desc limit 1"* dbh:query(sql, *function*(row) e_rate = row.eur2usd *end*) *end*
*local* *function* eur2gbp() *local* sql = *"select eur2gbp from currency order by id desc limit 1"* dbh:query(sql, *function*(row) e_rate = row.eur2gbp *end*) *end*
eur2usd() freeswitch.consoleLog(*"info"*,*string.format*(*" euro2usd = %f"*, e_rate)) eur2gbp() freeswitch.consoleLog(*"info"*,*string.format*(*" euro2gbp = %f"*, e_rate))
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
-- Ítalo Rossi
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
participants (5)
-
Abaci B
-
Bote Man
-
John Carpenter
-
Steven Ayre
-
Ítalo Rossi