diff --git a/src/interfaces/odbc/pgtypes.c b/src/interfaces/odbc/pgtypes.c index 691fd92c53a52aadb9080b83fb82ca73b3ddc9b0..3bc42a97a58c9f14c92f8d09c33229ad8d27345b 100644 --- a/src/interfaces/odbc/pgtypes.c +++ b/src/interfaces/odbc/pgtypes.c @@ -520,7 +520,7 @@ pgtype_to_name(StatementClass *stmt, Int4 type) static Int2 getNumericDecimalDigits(StatementClass *stmt, Int4 type, int col) { - Int4 atttypmod = -1; + Int4 atttypmod = -1, default_decimal_digits = 6; QResultClass *result; ColumnInfoClass *flds; @@ -545,30 +545,35 @@ getNumericDecimalDigits(StatementClass *stmt, Int4 type, int col) return flds->adtsize[col]; } if (atttypmod < 0) - return PG_NUMERIC_MAX_SCALE; + return default_decimal_digits; } else atttypmod = QR_get_atttypmod(result, col); if (atttypmod > -1) return (atttypmod & 0xffff); else - return (QR_get_display_size(result, col) ? - QR_get_display_size(result, col) : - PG_NUMERIC_MAX_SCALE); + { + Int4 dsp_size = QR_get_display_size(result, col); + if (dsp_size <= 0) + return default_decimal_digits; + if (dsp_size < 5) + dsp_size = 5; + return dsp_size; + } } static Int4 getNumericColumnSize(StatementClass *stmt, Int4 type, int col) { - Int4 atttypmod = -1; + Int4 atttypmod = -1, max_column_size = PG_NUMERIC_MAX_PRECISION + PG_NUMERIC_MAX_SCALE, default_column_size = 28; QResultClass *result; ColumnInfoClass *flds; mylog("getNumericColumnSize: type=%d, col=%d\n", type, col); if (col < 0) - return PG_NUMERIC_MAX_PRECISION; + return max_column_size; result = SC_get_Curres(stmt); @@ -583,19 +588,25 @@ getNumericColumnSize(StatementClass *stmt, Int4 type, int col) { atttypmod = flds->atttypmod[col]; if (atttypmod < 0 && flds->adtsize[col] > 0) - return flds->adtsize[col]; + return 2 * flds->adtsize[col]; } if (atttypmod < 0) - return PG_NUMERIC_MAX_PRECISION; + return default_column_size; } else atttypmod = QR_get_atttypmod(result, col); if (atttypmod > -1) return (atttypmod >> 16) & 0xffff; else - return (QR_get_display_size(result, col) > 0 ? - QR_get_display_size(result, col) : - PG_NUMERIC_MAX_PRECISION); + { + Int4 dsp_size = QR_get_display_size(result, col); + if (dsp_size <= 0) + return default_column_size; + dsp_size *= 2; + if (dsp_size < 10) + dsp_size = 10; + return dsp_size; + } } @@ -665,7 +676,7 @@ getCharColumnSize(StatementClass *stmt, Int4 type, int col, int handle_unknown_s p = QR_get_display_size(result, col); /* longest */ attlen = QR_get_atttypmod(result, col); /* Size is unknown -- handle according to parameter */ - if (attlen > p) /* maybe the length is known */ + if (attlen >= p && attlen > 0) /* maybe the length is known */ return attlen; /* The type is really unknown */ diff --git a/src/interfaces/odbc/psqlodbc.h b/src/interfaces/odbc/psqlodbc.h index 3cc09113f6f2fee2ba75ff7b30d0ea86f767f092..3a2d8c9cb0bec0fe0d003d58abf0aca8be514f02 100644 --- a/src/interfaces/odbc/psqlodbc.h +++ b/src/interfaces/odbc/psqlodbc.h @@ -5,7 +5,7 @@ * * Comments: See "notice.txt" for copyright and license information. * - * $Id: psqlodbc.h,v 1.64 2002/04/10 08:18:53 inoue Exp $ + * $Id: psqlodbc.h,v 1.65 2002/04/15 02:46:00 inoue Exp $ * */ @@ -87,7 +87,7 @@ typedef UInt4 Oid; #define DBMS_NAME "PostgreSQL" #endif /* ODBCVER */ -#define POSTGRESDRIVERVERSION "07.01.0011" +#define POSTGRESDRIVERVERSION "07.02.0001" #ifdef WIN32 #if (ODBCVER >= 0x0300) diff --git a/src/interfaces/odbc/psqlodbc.rc b/src/interfaces/odbc/psqlodbc.rc index 7c99c038e20a9168ebcb9ec694d601823c8ed52c..050b45d94139acf15783b8f4cc2088dcc4e9066d 100644 --- a/src/interfaces/odbc/psqlodbc.rc +++ b/src/interfaces/odbc/psqlodbc.rc @@ -366,8 +366,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 7,1,0,11 - PRODUCTVERSION 7,1,0,11 + FILEVERSION 7,2,0,01 + PRODUCTVERSION 7,2,0,01 FILEFLAGSMASK 0x3L #ifdef _DEBUG FILEFLAGS 0x1L @@ -389,14 +389,14 @@ BEGIN VALUE "CompanyName", "Insight Distribution Systems\0" #endif VALUE "FileDescription", "PostgreSQL Driver\0" - VALUE "FileVersion", " 07.01.0011\0" + VALUE "FileVersion", " 07.02.0001\0" VALUE "InternalName", "psqlodbc\0" VALUE "LegalCopyright", "\0" VALUE "LegalTrademarks", "ODBC(TM) is a trademark of Microsoft Corporation. Microsoft® is a registered trademark of Microsoft Corporation. Windows(TM) is a trademark of Microsoft Corporation.\0" VALUE "OriginalFilename", "psqlodbc.dll\0" VALUE "PrivateBuild", "\0" VALUE "ProductName", "Microsoft Open Database Connectivity\0" - VALUE "ProductVersion", " 07.01.0011\0" + VALUE "ProductVersion", " 07.02.0001\0" VALUE "SpecialBuild", "\0" END END diff --git a/src/interfaces/odbc/psqlodbc.reg b/src/interfaces/odbc/psqlodbc.reg index ac4322f9420a23c1b522ade4a23fd3afb50b8e1d..71155f50a170fec62378787472d6fa05374c8750 100644 --- a/src/interfaces/odbc/psqlodbc.reg +++ b/src/interfaces/odbc/psqlodbc.reg @@ -14,4 +14,3 @@ REGEDIT4 "Setup"="PSQLODBC.DLL" "SQLLevel"="1" "UsageCount"=dword:00000001 - diff --git a/src/interfaces/odbc/psqlodbc30.reg b/src/interfaces/odbc/psqlodbc30.reg index 8746f361e97f1f89e6ecc070756d084186270bc4..79a63effff1c88ba84b6177e967e131f3794c44f 100644 --- a/src/interfaces/odbc/psqlodbc30.reg +++ b/src/interfaces/odbc/psqlodbc30.reg @@ -3,9 +3,9 @@ REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI] [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers] -"PostgreSQL30"="Installed" +"PostgreSQL+ (Beta)"="Installed" -[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL30] +[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL+ (Beta)] "APILevel"="1" "ConnectFunctions"="YYN" "Driver"="PSQLODBC30.DLL" @@ -14,4 +14,3 @@ REGEDIT4 "Setup"="PSQLODBC30.DLL" "SQLLevel"="1" "UsageCount"=dword:00000001 - diff --git a/src/interfaces/odbc/psqlodbc30w.reg b/src/interfaces/odbc/psqlodbc30w.reg index 81fd93e15c9f88cbd407583472eb9ec5c00b645b..ffeac51418819e10f1bfdea25029772d2cdeeb30 100644 --- a/src/interfaces/odbc/psqlodbc30w.reg +++ b/src/interfaces/odbc/psqlodbc30w.reg @@ -3,9 +3,9 @@ REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI] [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers] -"PostgreSQL30W"="Installed" +"PostgreSQL+ Unicode (Beta)"="Installed" -[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL30W] +[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL+ Unicode (Beta)] "APILevel"="1" "ConnectFunctions"="YYN" "Driver"="PSQLODBC30W.DLL"