Fix the bug reported by Chris Lee.
authorHiroshi Inoue
Fri, 12 Oct 2001 01:08:51 +0000 (01:08 +0000)
committerHiroshi Inoue
Fri, 12 Oct 2001 01:08:51 +0000 (01:08 +0000)
src/interfaces/odbc/convert.c
src/interfaces/odbc/pgtypes.c

index e5954ae75d18c6ff727bc891d7572639cc8d9865..5e20631067d256a5ffc77f81966c932d22576a79 100644 (file)
@@ -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);
index 0af96536e8fc4f44a44e588655a0677977ddd24b..d6995f8c46f2c002c8c4cf7a453981455777174d 100644 (file)
@@ -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);