Changeset: 250e4f6bb7db for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=250e4f6bb7db Modified Files: configure.ag Branch: default Log Message:
Merged from Aug2011 diffs (truncated from 12469 to 300 lines): diff --git a/clients/odbc/driver/ODBCConvert.c b/clients/odbc/driver/ODBCConvert.c --- a/clients/odbc/driver/ODBCConvert.c +++ b/clients/odbc/driver/ODBCConvert.c @@ -1199,7 +1199,7 @@ ODBCFetch(ODBCStmt *stmt, case SQL_BINARY: case SQL_VARBINARY: case SQL_LONGVARBINARY: { - size_t i; + size_t k; int n; unsigned char c = 0; SQLLEN j = 0; @@ -1214,13 +1214,13 @@ ODBCFetch(ODBCStmt *stmt, #endif return SQL_ERROR; } - for (i = 0; i < datalen; i++) { - if ('0' <= data[i] && data[i] <= '9') - n = data[i] - '0'; - else if ('A' <= data[i] && data[i] <= 'F') - n = data[i] - 'A' + 10; - else if ('a' <= data[i] && data[i] <= 'f') - n = data[i] - 'a' + 10; + for (k = 0; k < datalen; k++) { + if ('0' <= data[k] && data[k] <= '9') + n = data[k] - '0'; + else if ('A' <= data[k] && data[k] <= 'F') + n = data[k] - 'A' + 10; + else if ('a' <= data[k] && data[k] <= 'f') + n = data[k] - 'a' + 10; else { /* should not happen */ /* General error */ @@ -1231,7 +1231,7 @@ ODBCFetch(ODBCStmt *stmt, #endif return SQL_ERROR; } - if (i & 1) { + if (k & 1) { c |= n; if (j < buflen) p[j] = c; diff --git a/clients/odbc/driver/ODBCDbc.c b/clients/odbc/driver/ODBCDbc.c --- a/clients/odbc/driver/ODBCDbc.c +++ b/clients/odbc/driver/ODBCDbc.c @@ -34,7 +34,7 @@ * This file contains the functions which operate on * ODBC connection structures/objects (see ODBCDbc.h). * - * Author: Martin van Dinther + * Author: Martin van Dinther, Sjoerd Mullender * Date : 30 aug 2002 * **********************************************/ diff --git a/clients/odbc/driver/ODBCDbc.h b/clients/odbc/driver/ODBCDbc.h --- a/clients/odbc/driver/ODBCDbc.h +++ b/clients/odbc/driver/ODBCDbc.h @@ -34,7 +34,7 @@ * This file contains the ODBC connection structure * and function prototypes on this structure. * - * Author: Martin van Dinther + * Author: Martin van Dinther, Sjoerd Mullender * Date : 30 aug 2002 * **********************************************/ diff --git a/clients/odbc/driver/ODBCDesc.c b/clients/odbc/driver/ODBCDesc.c --- a/clients/odbc/driver/ODBCDesc.c +++ b/clients/odbc/driver/ODBCDesc.c @@ -231,8 +231,9 @@ addODBCDescRec(ODBCDesc *desc, SQLSMALLI return &desc->descRec[recno]; } +/* Return either the column size or display size for a column or parameter. */ SQLULEN -ODBCDisplaySize(ODBCDescRec *rec) +ODBCLength(ODBCDescRec *rec, int display) { switch (rec->sql_desc_concise_type) { case SQL_CHAR: @@ -247,67 +248,121 @@ ODBCDisplaySize(ODBCDescRec *rec) return rec->sql_desc_length; case SQL_DECIMAL: case SQL_NUMERIC: - return rec->sql_desc_length; + return rec->sql_desc_length + (display ? 2 : 0); case SQL_BIT: return 1; case SQL_TINYINT: - return 3; + return 3 + (display && !rec->sql_desc_unsigned); case SQL_SMALLINT: - return 5; + return 5 + (display && !rec->sql_desc_unsigned); case SQL_INTEGER: - return 10; + return 10 + (display && !rec->sql_desc_unsigned); case SQL_BIGINT: - return rec->sql_desc_unsigned ? 20 : 19; + return display || rec->sql_desc_unsigned ? 20 : 19; case SQL_REAL: - return 7; + /* display: sign, 7 digits, decimal point, E, sign, 2 digits */ + return display ? 14 : 7; case SQL_FLOAT: case SQL_DOUBLE: - return 15; + /* display: sign, 15 digits, decimal point, E, sign, 3 digits */ + return display ? 24 : 15; case SQL_TYPE_DATE: - return 10; /* strlen("yyyy-mm-dd") */ + /* strlen("yyyy-mm-dd") */ + return 10; case SQL_TYPE_TIME: - return 12; /* strlen("hh:mm:ss.fff") */ + /* strlen("hh:mm:ss.fff") */ + return 12; case SQL_TYPE_TIMESTAMP: - return 23; /* strlen("yyyy-mm-dd hh:mm:ss.fff") */ + /* strlen("yyyy-mm-dd hh:mm:ss.fff") */ + return 23; case SQL_INTERVAL_SECOND: /* strlen("INTERVAL -'sss[.fff]' SECOND(p,q)") */ - return 11 + 13 + (rec->sql_desc_datetime_interval_precision > 10) + (rec->sql_desc_precision > 10) + rec->sql_desc_datetime_interval_precision + (rec->sql_desc_precision > 0 ? rec->sql_desc_precision + 1 : 0); + return 11 + 13 + + (rec->sql_desc_datetime_interval_precision > 10) + + (rec->sql_desc_precision > 10) + + rec->sql_desc_datetime_interval_precision + + (rec->sql_desc_precision > 0 ? + rec->sql_desc_precision + 1 : + 0); case SQL_INTERVAL_DAY_TO_SECOND: /* strlen("INTERVAL -'ddd hh:mm:ss[.fff]' DAY(p) TO SECOND(q)") */ - return 11 + 21 + (rec->sql_desc_datetime_interval_precision > 10) + (rec->sql_desc_precision > 10) + rec->sql_desc_datetime_interval_precision + 9 + (rec->sql_desc_precision > 0 ? rec->sql_desc_precision + 1 : 0); + return 11 + 21 + + (rec->sql_desc_datetime_interval_precision > 10) + + (rec->sql_desc_precision > 10) + + rec->sql_desc_datetime_interval_precision + + 9 + + (rec->sql_desc_precision > 0 ? + rec->sql_desc_precision + 1 : + 0); case SQL_INTERVAL_HOUR_TO_SECOND: /* strlen("INTERVAL -'hhh:mm:ss[.fff]' HOUR(p) TO SECOND(q)") */ - return 11 + 22 + (rec->sql_desc_datetime_interval_precision > 10) + (rec->sql_desc_precision > 10) + rec->sql_desc_datetime_interval_precision + 6 + (rec->sql_desc_precision > 0 ? rec->sql_desc_precision + 1 : 0); + return 11 + 22 + + (rec->sql_desc_datetime_interval_precision > 10) + + (rec->sql_desc_precision > 10) + + rec->sql_desc_datetime_interval_precision + + 6 + + (rec->sql_desc_precision > 0 ? + rec->sql_desc_precision + 1 : + 0); case SQL_INTERVAL_MINUTE_TO_SECOND: /* strlen("INTERVAL -'mmm:ss[.fff]' MINUTE(p) TO SECOND(q)") */ - return 11 + 24 + (rec->sql_desc_datetime_interval_precision > 10) + (rec->sql_desc_precision > 10) + rec->sql_desc_datetime_interval_precision + 3 + (rec->sql_desc_precision > 0 ? rec->sql_desc_precision + 1 : 0); + return 11 + 24 + + (rec->sql_desc_datetime_interval_precision > 10) + + (rec->sql_desc_precision > 10) + + rec->sql_desc_datetime_interval_precision + + 3 + + (rec->sql_desc_precision > 0 ? + rec->sql_desc_precision + 1 : + 0); case SQL_INTERVAL_YEAR: /* strlen("INTERVAL -'yyy' YEAR(p)") */ - return 11 + 9 + (rec->sql_desc_datetime_interval_precision > 10) + rec->sql_desc_datetime_interval_precision; + return 11 + 9 + + (rec->sql_desc_datetime_interval_precision > 10) + + rec->sql_desc_datetime_interval_precision; case SQL_INTERVAL_MONTH: /* strlen("INTERVAL -'yyy' MONTH(p)") */ - return 11 + 10 + (rec->sql_desc_datetime_interval_precision > 10) + rec->sql_desc_datetime_interval_precision; + return 11 + 10 + + (rec->sql_desc_datetime_interval_precision > 10) + + rec->sql_desc_datetime_interval_precision; case SQL_INTERVAL_DAY: /* strlen("INTERVAL -'yyy' DAY(p)") */ - return 11 + 8 + (rec->sql_desc_datetime_interval_precision > 10) + rec->sql_desc_datetime_interval_precision; + return 11 + 8 + + (rec->sql_desc_datetime_interval_precision > 10) + + rec->sql_desc_datetime_interval_precision; case SQL_INTERVAL_HOUR: /* strlen("INTERVAL -'yyy' HOUR(p)") */ - return 11 + 9 + (rec->sql_desc_datetime_interval_precision > 10) + rec->sql_desc_datetime_interval_precision; + return 11 + 9 + + (rec->sql_desc_datetime_interval_precision > 10) + + rec->sql_desc_datetime_interval_precision; case SQL_INTERVAL_MINUTE: /* strlen("INTERVAL -'yyy' MINUTE(p)") */ - return 11 + 11 + (rec->sql_desc_datetime_interval_precision > 10) + rec->sql_desc_datetime_interval_precision; + return 11 + 11 + + (rec->sql_desc_datetime_interval_precision > 10) + + rec->sql_desc_datetime_interval_precision; case SQL_INTERVAL_YEAR_TO_MONTH: /* strlen("INTERVAL -'yyy' YEAR(p) TO MONTH") */ - return 11 + 18 + (rec->sql_desc_datetime_interval_precision > 10) + rec->sql_desc_datetime_interval_precision + 3; + return 11 + 18 + + (rec->sql_desc_datetime_interval_precision > 10) + + rec->sql_desc_datetime_interval_precision + + 3; case SQL_INTERVAL_DAY_TO_HOUR: /* strlen("INTERVAL -'yyy' DAY(p) TO HOUR") */ - return 11 + 16 + (rec->sql_desc_datetime_interval_precision > 10) + rec->sql_desc_datetime_interval_precision + 3; + return 11 + 16 + + (rec->sql_desc_datetime_interval_precision > 10) + + rec->sql_desc_datetime_interval_precision + + 3; case SQL_INTERVAL_HOUR_TO_MINUTE: /* strlen("INTERVAL -'yyy' HOUR(p) TO MINUTE") */ - return 11 + 19 + (rec->sql_desc_datetime_interval_precision > 10) + rec->sql_desc_datetime_interval_precision + 3; + return 11 + 19 + + (rec->sql_desc_datetime_interval_precision > 10) + + rec->sql_desc_datetime_interval_precision + + 3; case SQL_INTERVAL_DAY_TO_MINUTE: /* strlen("INTERVAL -'yyy' DAY(p) TO MINUTE") */ - return 11 + 18 + (rec->sql_desc_datetime_interval_precision > 10) + rec->sql_desc_datetime_interval_precision + 6; + return 11 + 18 + + (rec->sql_desc_datetime_interval_precision > 10) + + rec->sql_desc_datetime_interval_precision + + 6; case SQL_GUID: /* strlen("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee") */ return 36; diff --git a/clients/odbc/driver/ODBCDesc.h b/clients/odbc/driver/ODBCDesc.h --- a/clients/odbc/driver/ODBCDesc.h +++ b/clients/odbc/driver/ODBCDesc.h @@ -99,7 +99,7 @@ ODBCError *getDescError(ODBCDesc *desc); void destroyODBCDesc(ODBCDesc *desc); void setODBCDescRecCount(ODBCDesc *desc, int count); ODBCDescRec *addODBCDescRec(ODBCDesc *desc, SQLSMALLINT recno); -SQLULEN ODBCDisplaySize(ODBCDescRec *rec); +SQLULEN ODBCLength(ODBCDescRec *rec, int display); SQLRETURN SQLGetDescField_(ODBCDesc *desc, SQLSMALLINT RecordNumber, SQLSMALLINT FieldIdentifier, SQLPOINTER Value, SQLINTEGER BufferLength, SQLINTEGER *StringLength); SQLRETURN SQLSetDescField_(ODBCDesc *desc, SQLSMALLINT RecordNumber, SQLSMALLINT FieldIdentifier, SQLPOINTER Value, SQLINTEGER BufferLength); diff --git a/clients/odbc/driver/ODBCEnv.c b/clients/odbc/driver/ODBCEnv.c --- a/clients/odbc/driver/ODBCEnv.c +++ b/clients/odbc/driver/ODBCEnv.c @@ -34,7 +34,7 @@ * This file contains the functions which operate on * ODBC environment structures/objects (see ODBCEnv.h). * - * Author: Martin van Dinther + * Author: Martin van Dinther, Sjoerd Mullender * Date : 30 aug 2002 * **********************************************/ diff --git a/clients/odbc/driver/ODBCEnv.h b/clients/odbc/driver/ODBCEnv.h --- a/clients/odbc/driver/ODBCEnv.h +++ b/clients/odbc/driver/ODBCEnv.h @@ -34,7 +34,7 @@ * This file contains the ODBC environment structure * and function prototypes on this structure. * - * Author: Martin van Dinther + * Author: Martin van Dinther, Sjoerd Mullender * Date : 30 aug 2002 * **********************************************/ diff --git a/clients/odbc/driver/ODBCError.c b/clients/odbc/driver/ODBCError.c --- a/clients/odbc/driver/ODBCError.c +++ b/clients/odbc/driver/ODBCError.c @@ -34,7 +34,7 @@ * This file contains the functions which operate on * ODBC error structures/objects (see ODBCError.h) * - * Author: Martin van Dinther + * Author: Martin van Dinther, Sjoerd Mullender * Date : 30 aug 2002 * **********************************************/ diff --git a/clients/odbc/driver/ODBCError.h b/clients/odbc/driver/ODBCError.h --- a/clients/odbc/driver/ODBCError.h +++ b/clients/odbc/driver/ODBCError.h @@ -39,7 +39,7 @@ * can result in multiple ODBC errors. These are stored * as a linked list. * - * Author: Martin van Dinther + * Author: Martin van Dinther, Sjoerd Mullender * Date : 30 aug 2002 * **********************************************/ diff --git a/clients/odbc/driver/ODBCGlobal.h b/clients/odbc/driver/ODBCGlobal.h --- a/clients/odbc/driver/ODBCGlobal.h +++ b/clients/odbc/driver/ODBCGlobal.h @@ -34,7 +34,7 @@ * The global MonetDB ODBC include file which * includes all needed external include files. * - * Author: Martin van Dinther + * Author: Martin van Dinther, Sjoerd Mullender * Date : 30 aug 2002 * **********************************************/ diff --git a/clients/odbc/driver/ODBCStmt.c b/clients/odbc/driver/ODBCStmt.c --- a/clients/odbc/driver/ODBCStmt.c +++ b/clients/odbc/driver/ODBCStmt.c _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list