[Home]

Summary:ASTERISK-12275: [patch] Column names causes
Reporter:Oleksandr Panchuk (panolex)Labels:
Date Opened:2008-06-29 04:55:47Date Closed:2008-06-29 06:59:40
Priority:CriticalRegression?No
Status:Closed/CompleteComponents:CDR/cdr_pgsql
Versions:Frequency of
Occurrence
Related
Issues:
is a clone ofASTERISK-22826 cdr_adaptive_odbc SQL execute error with PostgreSQL
Environment:Attachments:( 0) cdr_pgsql.patch
Description:Names "start" and "end" is reserwed keywords in postgresql and other sql-compliant databases.

When using following cdr table scheme:

CREATE TABLE cdr (
   id bigint NOT NULL,
   accountcode character varying(20) NOT NULL,
   src character varying(80) DEFAULT ''::character varying NOT NULL,
   dst character varying(80) DEFAULT ''::character varying NOT NULL,
   dcontext character varying(80) DEFAULT ''::character varying NOT NULL,
   clid character varying(80) DEFAULT ''::character varying NOT NULL,
   channel character varying(80) DEFAULT ''::character varying NOT NULL,
   dstchannel character varying(80) DEFAULT ''::character varying NOT NULL,
   lastapp character varying(80) DEFAULT ''::character varying NOT NULL,
   lastdata character varying(80) DEFAULT ''::character varying NOT NULL,
   start timestamp with time zone DEFAULT now() NOT NULL,
   answer timestamp with time zone,
   end timestamp with time zone,
   duration integer DEFAULT 0,
   billsec integer DEFAULT 0,
   disposition disposition_t,
   amaflags character varying(80) DEFAULT ''::character varying,
   uniqueid character varying(32) DEFAULT ''::character varying,
   userfield character varying(255)
);

, there will be an error inserting into cdr table:

[Jun 29 11:20:12] ERROR[8297]: cdr_pgsql.c:297 pgsql_log: cdr_pgsql: Failed to insert call detail record into database!
[Jun 29 11:20:12] ERROR[8297]: cdr_pgsql.c:298 pgsql_log: cdr_pgsql: Reason: ERROR:  syntax error at or near "end"
LINE 1: ...ntcode,src,dst,dcontext,clid,channel,start,answer,end,durati...
                                                            ^

[Jun 29 11:20:12] ERROR[8297]: cdr_pgsql.c:299 pgsql_log: cdr_pgsql: Connection may have been lost... attempting to reconnect.
[Jun 29 11:20:12] ERROR[8297]: cdr_pgsql.c:302 pgsql_log: cdr_pgsql: Connection reestablished.
[Jun 29 11:20:12] ERROR[8297]: cdr_pgsql.c:308 pgsql_log: cdr_pgsql: HARD ERROR!  Attempted reconnection failed.  DROPPING CALL RECORD!
[Jun 29 11:20:12] ERROR[8297]: cdr_pgsql.c:309 pgsql_log: cdr_pgsql: Reason: ERROR:  syntax error at or near "end"
LINE 1: ...ntcode,src,dst,dcontext,clid,channel,start,answer,end,durati...
                                                            ^

[Jun 29 11:20:12] ERROR[8297]: cdr_pgsql.c:297 pgsql_log: cdr_pgsql: Failed to insert call detail record into database!
[Jun 29 11:20:12] ERROR[8297]: cdr_pgsql.c:298 pgsql_log: cdr_pgsql: Reason: ERROR:  syntax error at or near "end"
LINE 1: ...,channel,dstchannel,lastapp,lastdata,start,answer,end,durati...
                                                            ^

[Jun 29 11:20:12] ERROR[8297]: cdr_pgsql.c:299 pgsql_log: cdr_pgsql: Connection may have been lost... attempting to reconnect.
[Jun 29 11:20:12] ERROR[8297]: cdr_pgsql.c:302 pgsql_log: cdr_pgsql: Connection reestablished.
[Jun 29 11:20:12] ERROR[8297]: cdr_pgsql.c:308 pgsql_log: cdr_pgsql: HARD ERROR!  Attempted reconnection failed.  DROPPING CALL RECORD!
[Jun 29 11:20:12] ERROR[8297]: cdr_pgsql.c:309 pgsql_log: cdr_pgsql: Reason: ERROR:  syntax error at or near "end"
LINE 1: ...,channel,dstchannel,lastapp,lastdata,start,answer,end,durati...

, proposed to rename column "end" to "callend" , "start" to "callstart", and for better naming "answer" to "callanswer".


****** ADDITIONAL INFORMATION ******

Asterisk: asterisk-1.6.0-beta9
System: Gentoo Linux AMD64, latest
Database: postgresql-8.3.3
Comments:By: Sean Bright (seanbright) 2008-06-29 06:19:50

You should be able to just double-quote the column names in the INSERT statement instead of changing the column names.

By: Digium Subversion (svnbot) 2008-06-29 06:59:38

Repository: asterisk
Revision: 126274

U   trunk/cdr/cdr_pgsql.c

------------------------------------------------------------------------
r126274 | seanbright | 2008-06-29 06:59:35 -0500 (Sun, 29 Jun 2008) | 6 lines

Quote column names when inserting CDRs into postgres to avoid conflicts
with reserved words.

(closes issue ASTERISK-12275)
Reported by: panolex

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=126274