Fix documentation for pgsql cel and cdr, and slightly improve pgsql_cel.
authorTim Ringenbach <tim.ringenbach@gmail.com>
Wed, 14 Jul 2010 16:09:11 +0000 (16:09 +0000)
committerTim Ringenbach <tim.ringenbach@gmail.com>
Wed, 14 Jul 2010 16:09:11 +0000 (16:09 +0000)
Change the documented pgsql schema to use "timestamp" instead of "time",
as the latter is only a time without a date.

Added some missing columns for cel's pgsql schema, and corrected spelling
on some others. Updated cel's uniqueid size to be the same as the cdr.
Added id column to cel's pgsql schema and updated code to allow unknown
columns to get their default value instead of forcing 0 or empty string.

Added microseconds to the timestamp cel logs to pgsql.

Review: https://reviewboard.asterisk.org/r/734

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@276349 65c4cc65-6c06-0410-ace0-fbb531ad65f3

cel/cel_pgsql.c
doc/tex/cdrdriver.tex
doc/tex/celdriver.tex

index 1765487..e4bdab1 100644 (file)
@@ -55,7 +55,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/logger.h"
 #include "asterisk.h"
 
-#define DATE_FORMAT "%Y-%m-%d %T"
+#define DATE_FORMAT "%Y-%m-%d %T.%6q"
 
 static char *config = "cel_pgsql.conf";
 static char *pghostname = NULL, *pgdbname = NULL, *pgdbuser = NULL, *pgpassword = NULL, *pgdbport = NULL, *table = NULL;
@@ -240,9 +240,12 @@ static void pgsql_log(const struct ast_event *event, void *userdata)
                                } else if (strcmp(cur->name, "peer") == 0) {
                                        value = record.peer;
                                } else {
-                                       value = "";
+                                       value = NULL;
                                }
-                               if (strncmp(cur->type, "int", 3) == 0) {
+
+                               if (value == NULL) {
+                                       ast_str_append(&sql2, 0, "%sDEFAULT", SEP);
+                               } else if (strncmp(cur->type, "int", 3) == 0) {
                                        long long whatever;
                                        if (value && sscanf(value, "%30lld", &whatever) == 1) {
                                                LENGTHEN_BUF2(26);
index a94ddf2..8e3215c 100644 (file)
@@ -258,7 +258,7 @@ CREATE TABLE cdr (
 \begin{astlisting}
 \begin{verbatim}
         CREATE TABLE cdr (
-                calldate      time               NOT NULL ,
+                calldate      timestamp             NOT NULL ,
                 clid          varchar (80)          NOT NULL ,
                 src           varchar (80)          NOT NULL ,
                 dst           varchar (80)          NOT NULL ,
index c3abf0d..c1b9e00 100644 (file)
@@ -205,13 +205,15 @@ Using MySQL for Channel Event records is supported by using ODBC and the cel_odb
 
 \begin{verbatim}
         CREATE TABLE cel (
+                id            serial ,
                 eventtype     varchar (30)          NOT NULL ,
-                eventtime     time                  NOT NULL ,
-                cidname       varchar (80)          NOT NULL ,
-                cidnum        varchar (80)          NOT NULL ,
-                cidani        varchar (80)          NOT NULL ,
-                cidrdnis      varchar (80)          NOT NULL ,
-                ciddnis       varchar (80)          NOT NULL ,
+                eventtime     timestamp             NOT NULL ,
+                userdeftype   varchar(255)          NOT NULL ,
+                cid_name      varchar (80)          NOT NULL ,
+                cid_num       varchar (80)          NOT NULL ,
+                cid_ani       varchar (80)          NOT NULL ,
+                cid_rdnis     varchar (80)          NOT NULL ,
+                cid_dnid      varchar (80)          NOT NULL ,
                 exten         varchar (80)          NOT NULL ,
                 context       varchar (80)          NOT NULL ,
                 channame      varchar (80)          NOT NULL ,
@@ -219,7 +221,9 @@ Using MySQL for Channel Event records is supported by using ODBC and the cel_odb
                 appdata       varchar (80)          NOT NULL ,
                 amaflags      int                   NOT NULL ,
                 accountcode   varchar (20)          NOT NULL ,
-                uniqueid      varchar (32)          NOT NULL ,
+                peeraccount   varchar (20)          NOT NULL ,
+                uniqueid      varchar (150)         NOT NULL ,
+                linkedid      varchar (150)         NOT NULL ,
                 userfield     varchar (255)         NOT NULL ,
                 peer          varchar (80)          NOT NULL
         );