case STRING: if (type.isUnconstrained()) { return jdbcInfo("varchar", Types.VARCHAR); } else if (type.isClob()) { return jdbcInfo("text", Types.CLOB); } else { return jdbcInfo("varchar(%d)", type.length, Types.VARCHAR); return jdbcInfo("varchar[]", Types.ARRAY, "varchar", Types.VARCHAR); } else if (type.isClob()) { return jdbcInfo("text[]", Types.ARRAY, "text", Types.CLOB); } else { return jdbcInfo("varchar(%d)[]", type.length, Types.ARRAY, "varchar", Types.VARCHAR); return jdbcInfo("bool", Types.BIT); case ARRAY_BOOLEAN: return jdbcInfo("bool[]", Types.ARRAY, "bool", Types.BOOLEAN); case LONG: return jdbcInfo("int8", Types.BIGINT); case ARRAY_LONG: return jdbcInfo("int8[]", Types.ARRAY, "int8", Types.BIGINT); case DOUBLE: return jdbcInfo("float8", Types.DOUBLE); case ARRAY_DOUBLE: return jdbcInfo("float8[]", Types.ARRAY, "float8", Types.DOUBLE); case TIMESTAMP: return jdbcInfo("timestamp", Types.TIMESTAMP); case ARRAY_TIMESTAMP: return jdbcInfo("timestamp[]", Types.ARRAY, "timestamp", Types.TIMESTAMP);