]> granicus.if.org Git - postgresql/commitdiff
1) Fix a bug about reporting varchar info thanks to Aceto.
authorHiroshi Inoue <inoue@tpf.co.jp>
Mon, 15 Apr 2002 02:46:00 +0000 (02:46 +0000)
committerHiroshi Inoue <inoue@tpf.co.jp>
Mon, 15 Apr 2002 02:46:00 +0000 (02:46 +0000)
2) Introcuced 3 drivers.
3) The version is now 7.02.0001.

src/interfaces/odbc/pgtypes.c
src/interfaces/odbc/psqlodbc.h
src/interfaces/odbc/psqlodbc.rc
src/interfaces/odbc/psqlodbc.reg
src/interfaces/odbc/psqlodbc30.reg
src/interfaces/odbc/psqlodbc30w.reg

index 691fd92c53a52aadb9080b83fb82ca73b3ddc9b0..3bc42a97a58c9f14c92f8d09c33229ad8d27345b 100644 (file)
@@ -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 */
index 3cc09113f6f2fee2ba75ff7b30d0ea86f767f092..3a2d8c9cb0bec0fe0d003d58abf0aca8be514f02 100644 (file)
@@ -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)
index 7c99c038e20a9168ebcb9ec694d601823c8ed52c..050b45d94139acf15783b8f4cc2088dcc4e9066d 100644 (file)
@@ -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
index ac4322f9420a23c1b522ade4a23fd3afb50b8e1d..71155f50a170fec62378787472d6fa05374c8750 100644 (file)
@@ -14,4 +14,3 @@ REGEDIT4
 "Setup"="PSQLODBC.DLL"\r
 "SQLLevel"="1"\r
 "UsageCount"=dword:00000001\r
-\r
index 8746f361e97f1f89e6ecc070756d084186270bc4..79a63effff1c88ba84b6177e967e131f3794c44f 100644 (file)
@@ -3,9 +3,9 @@ REGEDIT4
 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI]\r
 \r
 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers]\r
-"PostgreSQL30"="Installed"\r
+"PostgreSQL+ (Beta)"="Installed"\r
 \r
-[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL30]\r
+[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL+ (Beta)]\r
 "APILevel"="1"\r
 "ConnectFunctions"="YYN"\r
 "Driver"="PSQLODBC30.DLL"\r
@@ -14,4 +14,3 @@ REGEDIT4
 "Setup"="PSQLODBC30.DLL"\r
 "SQLLevel"="1"\r
 "UsageCount"=dword:00000001\r
-\r
index 81fd93e15c9f88cbd407583472eb9ec5c00b645b..ffeac51418819e10f1bfdea25029772d2cdeeb30 100644 (file)
@@ -3,9 +3,9 @@ REGEDIT4
 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI]\r
 \r
 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers]\r
-"PostgreSQL30W"="Installed"\r
+"PostgreSQL+ Unicode (Beta)"="Installed"\r
 \r
-[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL30W]\r
+[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL+ Unicode (Beta)]\r
 "APILevel"="1"\r
 "ConnectFunctions"="YYN"\r
 "Driver"="PSQLODBC30W.DLL"\r