Changeset: 1a8782ac5c73 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1a8782ac5c73
Modified Files:
Branch: sciql
Log Message:
merged with default
diffs (truncated from 12631 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
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list