code: public final int getJdbcType(String type, int precision, int scale)  throws DialectException {
      	// TODO ?!
      	// SQLite returns "null" for type if we use rsmd.getColumnTypeName
      	if ((type == null) || "null".equals(type))  {
      		return Types.OTHER;
      	}
      	
      	List<ColumnTypeMatcher> typeMatchers = matchType(type, columnTypeMatchers);
      	if (typeMatchers.size() == 0) {
      		throw new DialectException("Cannot match the type '" + type + "' to a jdbc type");
      	}
      	if (typeMatchers.size() == 1) {
      		return jdbcTypes.get(typeMatchers.get(0).getColumnType());
      	}
      	
      	List<ColumnTypeMatcher> precisionMatchers = matchPrecision(precision, typeMatchers);
      	if (precisionMatchers.size() == 0) {
      		throw new DialectException("Cannot match the precision '" + precision + "' to a jdbc type");
      	}
      	if (precisionMatchers.size() == 1) {
      		return jdbcTypes.get(precisionMatchers.get(0).getColumnType());
      	}
  
      	List<ColumnTypeMatcher> scaleMatchers = matchScale(scale, typeMatchers);
      	if (scaleMatchers.size() == 0) {
      		throw new DialectException("Cannot match the scale '" + scale + "' to a jdbc type");
      	}
      	if (scaleMatchers.size() == 1) {
      		return jdbcTypes.get(scaleMatchers.get(0).getColumnType());
      	}
      	
      	return jdbcTypes.get(chooseOne(scaleMatchers).getColumnType());
      }
docs: Get <tt>java.sql.Types</tt> typecode of the column database associated
  with the given sql type, precision and scale.
  
  @param type      sql type
  @param precision the precision of the column
  @param scale the scale of the column
  
  @return the column typecode
  @throws DialectException