Changeset: 53c2716da3fb for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/53c2716da3fb Modified Files: clients/odbc/driver/ODBCDesc.c clients/odbc/driver/SQLExecute.c Branch: Jun2023 Log Message:
Attempt to fix ODBC lengths for varchar columns. diffs (42 lines): 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 @@ -227,7 +227,7 @@ ODBCLength(ODBCDescRec *rec, int lengtht case SQL_VARCHAR: case SQL_LONGVARCHAR: if (lengthtype == SQL_DESC_OCTET_LENGTH) - return rec->sql_desc_length * 6; + return rec->sql_desc_length * 4; else return rec->sql_desc_length; case SQL_WCHAR: 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 @@ -376,9 +376,23 @@ ODBCInitResult(ODBCStmt *stmt) /* this must come after other fields have been * initialized */ - rec->sql_desc_length = ODBCLength(rec, SQL_DESC_LENGTH); - rec->sql_desc_display_size = ODBCLength(rec, SQL_DESC_DISPLAY_SIZE); - rec->sql_desc_octet_length = ODBCLength(rec, SQL_DESC_OCTET_LENGTH); + if (rec->sql_desc_concise_type == SQL_CHAR || + rec->sql_desc_concise_type == SQL_VARCHAR || + rec->sql_desc_concise_type == SQL_LONGVARCHAR || + rec->sql_desc_concise_type == SQL_WCHAR || + rec->sql_desc_concise_type == SQL_WVARCHAR || + rec->sql_desc_concise_type == SQL_WLONGVARCHAR) { + /* for strings, get the display size from what + * the server told us the size is for this + * column, and derive the octet length from + * that */ + rec->sql_desc_display_size = mapi_get_len(hdl, i); + rec->sql_desc_octet_length = 4 * rec->sql_desc_display_size; + } else { + rec->sql_desc_length = ODBCLength(rec, SQL_DESC_LENGTH); + rec->sql_desc_display_size = ODBCLength(rec, SQL_DESC_DISPLAY_SIZE); + rec->sql_desc_octet_length = ODBCLength(rec, SQL_DESC_OCTET_LENGTH); + } if (rec->sql_desc_length == 0) { rec->sql_desc_length = SQL_NO_TOTAL; rec->sql_desc_display_size = SQL_NO_TOTAL; _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org