Changeset: 0be9028dca99 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0be9028dca99
Modified Files:
clients/odbc/driver/SQLExecute.c
clients/odbc/driver/SQLPrepare.c
Branch: Mar2011
Log Message:
SQL_DESC_OCTET_LENGTH should give the size in bytes required to copy the data.
This fixes bug 2677.
diffs (42 lines):
diff --git a/clients/odbc/driver/SQLExecute.c b/clients/odbc/driver/SQLExecute.c
--- a/clients/odbc/driver/SQLExecute.c
+++ b/clients/odbc/driver/SQLExecute.c
@@ -232,7 +232,16 @@
* initialized */
rec->sql_desc_length = ODBCDisplaySize(rec);
rec->sql_desc_display_size = rec->sql_desc_length;
- rec->sql_desc_octet_length = rec->sql_desc_length;
+ if (rec->sql_desc_concise_type == SQL_CHAR ||
+ rec->sql_desc_concise_type == SQL_VARCHAR ||
+ rec->sql_desc_concise_type == SQL_LONGVARCHAR) {
+ /* in theory, each character (really: Unicode
+ * code point) could need 6 bytes in the UTF-8
+ * encoding, plus we need a byte for the
+ * terminating NUL byte */
+ rec->sql_desc_octet_length = 6 * rec->sql_desc_length +
1;
+ } else
+ rec->sql_desc_octet_length = rec->sql_desc_length;
rec++;
}
diff --git a/clients/odbc/driver/SQLPrepare.c b/clients/odbc/driver/SQLPrepare.c
--- a/clients/odbc/driver/SQLPrepare.c
+++ b/clients/odbc/driver/SQLPrepare.c
@@ -253,7 +253,16 @@
* initialized */
rec->sql_desc_length = ODBCDisplaySize(rec);
rec->sql_desc_display_size = rec->sql_desc_length;
- rec->sql_desc_octet_length = rec->sql_desc_length;
+ if (rec->sql_desc_concise_type == SQL_CHAR ||
+ rec->sql_desc_concise_type == SQL_VARCHAR ||
+ rec->sql_desc_concise_type == SQL_LONGVARCHAR) {
+ /* in theory, each character (really: Unicode
+ * code point) could need 6 bytes in the UTF-8
+ * encoding, plus we need a byte for the
+ * terminating NUL byte */
+ rec->sql_desc_octet_length = 6 * rec->sql_desc_length +
1;
+ } else
+ rec->sql_desc_octet_length = rec->sql_desc_length;
}
/* update the internal state */
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list