aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/odbc/convert.c4
-rw-r--r--src/interfaces/odbc/pgtypes.c13
2 files changed, 9 insertions, 8 deletions
diff --git a/src/interfaces/odbc/convert.c b/src/interfaces/odbc/convert.c
index e5954ae75d1..5e20631067d 100644
--- a/src/interfaces/odbc/convert.c
+++ b/src/interfaces/odbc/convert.c
@@ -974,7 +974,7 @@ copy_statement_with_parameters(StatementClass *stmt)
ConnectionClass *conn = SC_get_conn(stmt);
ConnInfo *ci = &(conn->connInfo);
BOOL prepare_dummy_cursor = FALSE, begin_first = FALSE;
- char token_save[32];
+ char token_save[64];
int token_len;
BOOL prev_token_end;
#ifdef DRIVER_CURSOR_IMPLEMENT
@@ -1247,7 +1247,7 @@ copy_statement_with_parameters(StatementClass *stmt)
token_save[0] = oldchar;
token_len = 1;
}
- else
+ else if (token_len + 1 < sizeof(token_save))
token_save[token_len++] = oldchar;
}
CVT_APPEND_CHAR(oldchar);
diff --git a/src/interfaces/odbc/pgtypes.c b/src/interfaces/odbc/pgtypes.c
index 0af96536e8f..d6995f8c46f 100644
--- a/src/interfaces/odbc/pgtypes.c
+++ b/src/interfaces/odbc/pgtypes.c
@@ -586,10 +586,10 @@ pgtype_precision(StatementClass *stmt, Int4 type, int col, int handle_unknown_si
return 8;
case PG_TYPE_ABSTIME:
- case PG_TYPE_DATETIME:
case PG_TYPE_TIMESTAMP:
- /*return 19;*/
-return 21;
+ return 22;
+ case PG_TYPE_DATETIME:
+ return 22;
case PG_TYPE_BOOL:
return 1;
@@ -678,12 +678,12 @@ pgtype_length(StatementClass *stmt, Int4 type, int col, int handle_unknown_size_
case PG_TYPE_DATE:
case PG_TYPE_TIME:
- return 6;
+ return 6; /* sizeof(DATE(TIME)_STRUCT) */
case PG_TYPE_ABSTIME:
case PG_TYPE_DATETIME:
case PG_TYPE_TIMESTAMP:
- return 16;
+ return 16; /* sizeof(TIMESTAMP_STRUCT) */
/* Character types (and NUMERIC) use the default precision */
case PG_TYPE_VARCHAR:
@@ -723,9 +723,10 @@ pgtype_scale(StatementClass *stmt, Int4 type, int col)
* "yyyy-mm=dd hh:mm:ss[.f...]"
*/
case PG_TYPE_ABSTIME:
- case PG_TYPE_DATETIME:
case PG_TYPE_TIMESTAMP:
return 0;
+ case PG_TYPE_DATETIME:
+ return 0;
case PG_TYPE_NUMERIC:
return getNumericScale(stmt, type, col);