From 2ebdd5fd1dfcc4ac7a53f0e6ad4e661888cb7cf5 Mon Sep 17 00:00:00 2001 From: tilghman Date: Fri, 27 Jul 2007 23:21:23 +0000 Subject: Some ODBC drivers don't set the CHAR_OCTET_LENGTH field correctly. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@77603 f38db490-d61c-443f-a65b-d21fe96a405b --- cdr/cdr_adaptive_odbc.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'cdr') diff --git a/cdr/cdr_adaptive_odbc.c b/cdr/cdr_adaptive_odbc.c index 8c3b1e5ff..12e982069 100644 --- a/cdr/cdr_adaptive_odbc.c +++ b/cdr/cdr_adaptive_odbc.c @@ -198,6 +198,13 @@ static int load_config(void) SQLGetData(stmt, 11, SQL_C_SHORT, &entry->nullable, sizeof(entry->nullable), NULL); SQLGetData(stmt, 16, SQL_C_LONG, &entry->octetlen, sizeof(entry->octetlen), NULL); + /* Specification states that the octenlen should be the maximum number of bytes + * returned in a char or binary column, but it seems that some drivers just set + * it to NULL. (Bad Postgres! No biscuit!) */ + if (entry->octetlen == 0) + entry->octetlen = entry->size; + + ast_verb(10, "Found %s column with type %hd with len %ld, octetlen %ld, and numlen (%hd,%hd)\n", entry->name, entry->type, entry->size, entry->octetlen, entry->decimals, entry->radix); /* Insert column info into column list */ AST_LIST_INSERT_TAIL(&(tableptr->columns), entry, list); res = 0; -- cgit v1.2.3