]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fix the bug reported by Chris Lee.
authorHiroshi Inoue <inoue@tpf.co.jp>
Fri, 12 Oct 2001 01:08:51 +0000 (01:08 +0000)
committerHiroshi Inoue <inoue@tpf.co.jp>
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);