if (sqlsubtype == 2)
if (sqlsubtype == 1)
    public  int getColumnType(int column) throws  SQLException {        int sqltype = getXsqlvar(column).sqltype & ~1;        int sqlscale = getXsqlvar(column).sqlscale;        int sqlsubtype = getXsqlvar(column).sqlsubtype;                if (sqlscale < 0) {            switch (sqltype) {                case GDS.SQL_SHORT:                 case GDS.SQL_LONG:                 case GDS.SQL_INT64:                 case GDS.SQL_DOUBLE:                     if (sqlsubtype == 2)                        return Types.DECIMAL;                    else                        return Types.NUMERIC;                default:                    break;            }        }                switch (sqltype) {            case GDS.SQL_SHORT:                 return Types.SMALLINT;            case GDS.SQL_LONG:                 return Types.INTEGER;            case GDS.SQL_DOUBLE:             case GDS.SQL_D_FLOAT:                return Types.DOUBLE;            case GDS.SQL_FLOAT:                 return Types.FLOAT;            case GDS.SQL_TEXT:                 return Types.CHAR;            case GDS.SQL_VARYING:                 return Types.VARCHAR;            case GDS.SQL_TIMESTAMP:                 return Types.TIMESTAMP;            case GDS.SQL_TYPE_TIME:                return Types.TIME;            case GDS.SQL_TYPE_DATE:                return Types.DATE;            case GDS.SQL_INT64:                if (sqlsubtype == 2)                    return Types.DECIMAL;                else                    return Types.NUMERIC;            case GDS.SQL_BLOB:                 if (sqlsubtype == 2)                    return Types.LONGVARCHAR;                else                    return Types.LONGVARBINARY;            case GDS.SQL_QUAD:                 return Types.OTHER;            default:                return Types.NULL;              }    }