applied patch from Mark Lillywhite, patch was already applied to jdbc2, this applies...
authorBarry Lind
Tue, 30 Oct 2001 05:05:25 +0000 (05:05 +0000)
committerBarry Lind
Tue, 30 Oct 2001 05:05:25 +0000 (05:05 +0000)
src/interfaces/jdbc/org/postgresql/jdbc1/DatabaseMetaData.java

index 1029e7adcc7b65f67c74d1abdf52c4eee8945916..fcb6352277a15dfff509dccea0ac9ef93bab738b 100644 (file)
@@ -13,7 +13,7 @@ import org.postgresql.util.PSQLException;
 /**
  * This class provides information about the database as a whole.
  *
- * $Id: DatabaseMetaData.java,v 1.35 2001/10/25 05:59:59 momjian Exp $
+ * $Id: DatabaseMetaData.java,v 1.36 2001/10/30 05:05:25 barry Exp $
  *
  * 

Many of the methods here return lists of information in ResultSets.  You

  * can use the normal ResultSet methods such as getString and getInt to
@@ -2011,7 +2011,19 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
            }
 
            tuple[7] = null;                        // Buffer length
-           tuple[8] = "0".getBytes();              // Decimal Digits - how to get this?
+           // Decimal digits = scale
+           // From the source (see e.g. backend/utils/adt/numeric.c, 
+           // function numeric()) the scale and precision can be calculated
+           // from the typmod value.
+           if (typname.equals("numeric") || typname.equals("decimal")) 
+           { 
+               int attypmod = r.getInt(8);
+               tuple[8] =
+               Integer.toString((attypmod - VARHDRSZ) & 0xffff).getBytes();
+           }
+           else
+               tuple[8] = "0".getBytes();
+
            tuple[9] = "10".getBytes();             // Num Prec Radix - assume decimal
            tuple[10] = Integer.toString(nullFlag.equals("f") ?
                                         java.sql.DatabaseMetaData.columnNullable :