[sr-dev] PostgreSQL problems with Kamailio_3.0.2
Klaus Feichtinger
klaus.feichtinger at gmx.net
Thu Jun 24 21:15:02 CEST 2010
Am 24.06.2010 18:46, schrieb Henning Westerholt:
> On Sunday 20 June 2010, Klaus Feichtinger wrote:
> > 1) The default settings of 4 PGSQL tables after initializing the
> > database with “kamdbctl init” are not useful; the tables
> “PRESENTITY”,
> > “PUA”, “ACC” and “MISSED_CALLS” have wrong settings for
> “Not NULL”
> > characteristics of some columns. In detail following columns had to be
> > adapted manually in the database:
>
> Hello Klaus,
>
> thanks for the report.
>
> > “acc” and “missed_calls” table : column “id” must allow
> “NULL” (remove “Not
> > Null” setting)
>
> This two tables are related to the acc module. Do you get some errors here
> as
> well by using this module?
>
Hello Henning,
No - I have still clarified in an older mail that the acc and missed_calls tables are not affected by this error. I had problems, but I think these problems were home-made. Because of integrating SIREMIS I had to adapt these tables manually. I guess the error occured during table manipulation / extension.
> > “presentity” table: the column “sender” must allow “NULL”
> (remove “Not
> > Null” setting)
> >
> > “pua” table: the columns “extra_headers”, “version”,
> “remote_contact”,
> > “contact” and “desired_expires” must allow “NULL” (remove
> “Not Null”
> > setting)
>
> We can fix this in the data definition (the SQL is derived from some XML
> source). Can you maybe quote a bit more context to the error messages you
> provided, that i can take a look to the module in question how its
> inserted?
>
For the table "PRESENTITY" following context was displayed in syslog:
3034: 0(5844) DEBUG: db_postgres [km_val.c:158]: PQescapeStringConn: in: 14 chars, out: 14 chars
3035: 0(5844) DEBUG: db_postgres [km_val.c:158]: PQescapeStringConn: in: 5 chars, out: 5 chars
3036: 0(5844) DEBUG: db_postgres [km_val.c:158]: PQescapeStringConn: in: 8 chars, out: 8 chars
3037: 0(5844) DEBUG: db_postgres [km_val.c:158]: PQescapeStringConn: in: 21 chars, out: 21 chars
3038: 0(5844) DEBUG: db_postgres [km_dbase.c:149]: 0x82b2e48 PQsendQuery(insert into presentity (domain,username,event,etag,expires,body,received_time ) values ('192.168.150.11','16666','presence','a.1275999321.5844.1.0',1275999709,'<?xml version="1.0"?>\\012<presence xmlns="urn:ietf:params:xml:ns:pidf" xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model" xmlns:rpid="urn:ietf:params:xml:ns:pidf:rpid" xmlns:c="urn:ietf:params:xml:ns:pidf:cipid" entity="pres:16666 at 192.168.150.11">\\012 <tuple id="0x8298198">\\012 <status>\\012 <basic>open</basic>\\012 </status>\\012 </tuple>\\012</presence>\\012',1275999348))
3044: 0(5844) DEBUG: db_postgres [km_dbase.c:403]: 0x82b2e48 PQresultStatus(PGRES_FATAL_ERROR) PQgetResult(0x9c73a00)
3045: 0(5844) ERROR: db_postgres [km_dbase.c:427]: invalid query, execution aborted
3046: 0(5844) ERROR: db_postgres [km_dbase.c:428]: driver error: PGRES_FATAL_ERROR, ERROR: null value in column "sender" violates not-null constraint
3050: 0(5844) DEBUG: db_postgres [km_dbase.c:302]: PQclear(0x9c73a00) result set
3051: 0(5844) WARNING: db_postgres [km_dbase.c:473]: unexpected result returned 0(5844) DEBUG: presence [presentity.c:102]: send 200OK reply
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
For the table "PUA" following context was displayed in syslog:
4132: 1(5855) DEBUG: db_postgres [km_val.c:158]: PQescapeStringConn: in: 24 chars, out: 24 chars
4133: 1(5855) DEBUG: db_postgres [km_val.c:158]: PQescapeStringConn: in: 54 chars, out: 54 chars
4134: 1(5855) DEBUG: db_postgres [km_val.c:158]: PQescapeStringConn: in: 0 chars, out: 0 chars
4135: 1(5855) DEBUG: db_postgres [km_val.c:158]: PQescapeStringConn: in: 0 chars, out: 0 chars
4136: 1(5855) DEBUG: db_postgres [km_val.c:158]: PQescapeStringConn: in: 0 chars, out: 0 chars
4137: 1(5855) DEBUG: db_postgres [km_val.c:158]: PQescapeStringConn: in: 0 chars, out: 0 chars
4138: 1(5855) DEBUG: db_postgres [km_val.c:158]: PQescapeStringConn: in: 21 chars, out: 21 chars
4139: 1(5855) DEBUG: db_postgres [km_val.c:158]: PQescapeStringConn: in: 9 chars, out: 9 chars
4140: 1(5855) DEBUG: db_postgres [km_val.c:158]: PQescapeStringConn: in: 0 chars, out: 0 chars
4141: 1(5855) DEBUG: db_postgres [km_val.c:158]: PQescapeStringConn: in: 0 chars, out: 0 chars
4142: 1(5855) DEBUG: db_postgres [km_val.c:158]: PQescapeStringConn: in: 0 chars, out: 0 chars
4143: 1(5855) DEBUG: db_postgres [km_dbase.c:149]: 0x82b2e40 PQsendQuery(insert into pua (pres_uri,pres_id,flag,event,watcher_uri,call_id,to_tag,from_tag,etag,tuple_id,cseq,expires,desired_expires,record_route,contact,remote_contact,version ) values ('sip:16666 at 192.168.150.11','UL_PUBLISH.2365073952-4024904-12759993470 at 172.16.51.15',1,1,'','','','','a.1275999321.5844.1.0','0x8298198',0,1275999709,1275999708,'','','',0))
4145: 1(5855) DEBUG: db_postgres [km_dbase.c:403]: 0x82b2e40 PQresultStatus(PGRES_FATAL_ERROR) PQgetResult(0x9c73938)
4146: 1(5855) ERROR: db_postgres [km_dbase.c:427]: invalid query, execution aborted
4147: 1(5855) ERROR: db_postgres [km_dbase.c:428]: driver error: PGRES_FATAL_ERROR, ERROR: null value in column "extra_headers" violates not-null constraint
4151: 1(5855) DEBUG: db_postgres [km_dbase.c:302]: PQclear(0x9c73938) result set
4152: 1(5855) WARNING: db_postgres [km_dbase.c:473]: unexpected result returned 1(5855) DEBUG: db_postgres [km_dbase.c:149]: 0x82b2e40 PQsendQuery(delete from pua where expires<1275999411)
4154: 1(5855) DEBUG: db_postgres [km_dbase.c:403]: 0x82b2e40 PQresultStatus(PGRES_COMMAND_OK) PQgetResult(0x9c73578)
4155: 1(5855) DEBUG: db_postgres [km_dbase.c:302]: PQclear(0x9c73578) result set
> >
> > 2) I do not know if this has a direct influence on the problems I
> have
> > with presence, but the column “sender” in the table
> “presentity” seems to
> > be used only “half”. When the pua_usrloc module is inserting an
> entry into
> > the table it does NOT insert a value for the column “sender”.
> However,
> > when a query is sent for selecting information from this table, the
> column
> > “sender” is explicitly requested……
>
> This looks like a bug in the module to me.
>
> > [..]
> > What does the column “sender” represent? In the presence description
> on the
> > Kamailio homepage (version 1.5) this column still is not included.
>
> In sr repository the docs are also not that meaningful:
> <description>Sender contact</description>
>
> If this was added recently, maybe the author can comment on the purpose of
> them?
>
> > 3) The next problem I have is, that the PIDF-body, which is stored
> in
> > the PGSQL database, seems to cause an error in the presence_xml module
> and
> > therefore no body is attached to the NOTIFY message. The NOTIFY message
> > contains a SIP header “Content-Type: application/pidf+xml”, but no
> > PIDF-body is sent in this message. As result of this SIP request the
> SIP
> > user agent (= subscriber) is a little bit confused….. I think that
> problem
> > in general has something to do with the “error” described in the
> new task
> > from Friday June 18th
> > (http://lists.sip-router.org/pipermail/sr-dev/2010-June/007865.html).
>
> This is something related to the BLOB handling as well, maybe its related.
>
> > 4) I don’t know if the parser might be influenced by a WARNING
> that is
> > generated by the postgresql daemon whenever an entry into the
> presentity
> > table is done (including XML body). From Kamailio log output I saw that
> > the special characters “#011” and “#012” are included in the
> XML body. I
> > guess that is the octal notation of \t (horizontal tab) and \n
> (newline).
> >
> > However, postgresql generates an error message that looks like
> following:
> > WARNING: nonstandard use of \\ in a string literal at character 162
> > HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
> >
> > Maybe this has some influence on the parser problem, too. Because in
> this
> > version of Postgresql the parameter “standard_conforming_strings”
> is
> > implicitly on – just for previous versions it could be set to off.
> That
> > means, that any backslash symbol (\) is interpreted as standard
> character
> > (no escape). Therefore the queried result of the database does no
> longer
> > include \n and \t.
>
> Sounds indeed possible that this caused the problem.
>
> > [..]
> > Please give me some comments to these problems ;-) I know, PostgreSQL is
> > only “second quality” for Kamailio, but it has some advantages
> against
> > MySQL, too.
>
> I'll comment on the mails later on as well. Yes, postgres is indeed not
> that
> used that much, means that more bugs will be present especially in module
> that
> are as well not that much used like e.g. usrloc. If there are problems in
> the
> driver module it should be of course fixed.
>
> Henning
--
GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01
More information about the sr-dev
mailing list