Hello Daniel, Did you receive my patch? I generated a patch and send you as attachment. I didn't post it on the tracker on sourceforge. Could you post it?
I've done another patch which implements using call of stored procedure instead of use insert/delete/update.
I've attached it.
There is a #define SQL_PROC which switch on using stored procedure in function
db_insert, db_delete, db_update and db_replace.
The SQL syntax
{call <oper>_<table>(p_field1=value1,..,p_fieldN=valueN)}
where <oper> may be: insert, delete, update and replace
<table> is a name of table
field1 - filedN are names of fields
For example:
{call insert_location
(p_username='123',p_contact='sip:[EMAIL PROTECTED]:5060',p_expires='2006-03-15
18:39:47',
p_q=-1.00,p_callid='1234',p_cseq=2,p_flags=0,p_user_agent='X-PRO release
1105x',p_received=NULL,p_socket='1.2.3.5_5060')}
{call update_location (p_expires='2006-03-15 18:56:03',p_q=-1.00,p_callid='1235',p_cseq=3,p_flags=0,
p_user_agent='X-PRO release 1105x',p_received=NULL,p_socket='1.2.3.5_5060',
pp_user_name='123',pp_contact='sip:[EMAIL PROTECTED]:5060')}
{call delete_location (p_user_name='123',p_contact='sip:[EMAIL
PROTECTED]:5060')}
This patch also fix one small bug in function db_update
In the origin code the query string is null terminated only if exist 'where'
parameters.
Origin code is
========
if (_n)
{
ret = snprintf(sql_buf + off, SQL_BUF_LEN - off, " where ");
if (ret < 0 || ret >= (SQL_BUF_LEN - off)) goto error;
off += ret;
ret = print_where(&CON_CONNECTION(_h), sql_buf + off, SQL_BUF_LEN - off, _k,
_o, _v, _n);
if (ret < 0) return -1;
off += ret;
*(sql_buf + off) = '\0';
}
========
The correct code is
========
if (_n)
{
ret = snprintf(sql_buf + off, SQL_BUF_LEN - off, " where ");
if (ret < 0 || ret >= (SQL_BUF_LEN - off)) goto error;
off += ret;
ret = print_where(&CON_CONNECTION(_h), sql_buf + off, SQL_BUF_LEN - off, _k,
_o, _v, _n);
if (ret < 0) return -1; off += ret; } *(sql_buf + off) = '\0'; ======== Best regards, Alex Gradinar
unixodbc-sql-procs.patch
Description: Binary data
_______________________________________________ Devel mailing list [email protected] http://openser.org/cgi-bin/mailman/listinfo/devel
