code: public int getPrecision(int column) throws SQLException {
  
          checkColumn(column);
  
          // type in columnTypes overrides column type
          Type type      = resultMetaData.columnTypes[--column];
          long precision = type.precision;
  
          if (type.isDateTimeType() || type.isIntervalType()) {
              precision = type.displaySize();
          }
  
          if (precision > Integer.MAX_VALUE) {
              precision = Integer.MAX_VALUE;
          }
  
          return (int) precision;
      }
docs: <!-- start generic documentation -->
  (JDBC4 clarification:)
  Get the designated column's specified column size.
  For numeric data, this is the maximum precision.  For character data, this is the [maximum] length in characters.
  For datetime datatypes, this is the [maximim] length in characters of the String representation (assuming the
  maximum allowed precision of the fractional seconds component). For binary data, this is the [maximum] length in bytes.  For the ROWID datatype,
  this is the length in bytes[, as returned by the implementation-specific java.sql.RowId.getBytes() method]. 0 is returned for data types where the
  column size is not applicable.
  <!-- end generic documentation -->
  
  <!-- start Release-specific documentation -->
  <div class="ReleaseSpecificDocumentation">
  <h3>HSQLDB-Specific Information:</h3> <p>
  
  Starting with 1.8.0, HSQLDB reports the declared length or precision
  specifiers for table columns, if they are defined.<p>
  
  From 1.9.0, HSQLDB, reports the correct length or precision for
  computed columns according to the SQL Standard.<p>
  </div>
  <!-- end release-specific documentation -->
  
  @param column the first column is 1, the second is 2, ...
  @return precision
  @exception SQLException if a database access error occurs