fix(iris): return column descriptions

Closes #6912
This commit is contained in:
t8y2 committed 2026-08-22 02:00:21 +00:00
1 parent 621074beca
commit 5ca99c632b
2 files changed
+40 -3

No files matched your search

@@ -62,7 +62,7 @@ public final class IrisAgent extends ConfiguredJdbcAgent {
stringOrNull(rs, "COLUMN_DEFAULT"), stringOrNull(rs, "COLUMN_DEFAULT"),
"YES".equalsIgnoreCase(stringOrNull(rs, "PRIMARY_KEY")), "YES".equalsIgnoreCase(stringOrNull(rs, "PRIMARY_KEY")),
null, null,
null, stringOrNull(rs, "DESCRIPTION"),
intOrNull(rs, "NUMERIC_PRECISION"), intOrNull(rs, "NUMERIC_PRECISION"),
intOrNull(rs, "NUMERIC_SCALE"), intOrNull(rs, "NUMERIC_SCALE"),
intOrNull(rs, "CHARACTER_MAXIMUM_LENGTH") intOrNull(rs, "CHARACTER_MAXIMUM_LENGTH")
@@ -126,7 +126,7 @@ public final class IrisAgent extends ConfiguredJdbcAgent {
private static String columnSql(String schema) { private static String columnSql(String schema) {
StringBuilder sql = new StringBuilder( StringBuilder sql = new StringBuilder(
"SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, " "SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, "
+ "PRIMARY_KEY, NUMERIC_PRECISION, NUMERIC_SCALE, CHARACTER_MAXIMUM_LENGTH " + "PRIMARY_KEY, DESCRIPTION, NUMERIC_PRECISION, NUMERIC_SCALE, CHARACTER_MAXIMUM_LENGTH "
+ "FROM INFORMATION_SCHEMA.COLUMNS WHERE " + "FROM INFORMATION_SCHEMA.COLUMNS WHERE "
); );
if (!isBlank(schema)) { if (!isBlank(schema)) {
@@ -19,6 +19,7 @@ import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;
class IrisAgentTest { class IrisAgentTest {
@@ -63,12 +64,45 @@ class IrisAgentTest {
assertEquals("INTEGER", columns.get(0).getData_type()); assertEquals("INTEGER", columns.get(0).getData_type());
assertFalse(columns.get(0).getIs_nullable()); assertFalse(columns.get(0).getIs_nullable());
assertTrue(columns.get(0).getIs_primary_key()); assertTrue(columns.get(0).getIs_primary_key());
assertEquals("42", columns.get(0).getColumn_default());
assertEquals("identifier", columns.get(0).getComment());
assertEquals(Integer.valueOf(10), columns.get(0).getNumeric_precision());
assertEquals(Integer.valueOf(0), columns.get(0).getNumeric_scale());
assertNull(columns.get(0).getCharacter_maximum_length());
assertEquals("NAME", columns.get(1).getName()); assertEquals("NAME", columns.get(1).getName());
assertEquals("VARCHAR", columns.get(1).getData_type());
assertTrue(columns.get(1).getIs_nullable());
assertNull(columns.get(1).getColumn_default());
assertNull(columns.get(1).getComment());
assertNull(columns.get(1).getNumeric_precision());
assertNull(columns.get(1).getNumeric_scale());
assertEquals(Integer.valueOf(64), columns.get(1).getCharacter_maximum_length()); assertEquals(Integer.valueOf(64), columns.get(1).getCharacter_maximum_length());
assertEquals(1, calls.size()); assertEquals(1, calls.size());
assertFalse(calls.get(0).contains("LIMIT")); assertFalse(calls.get(0).contains("LIMIT"));
assertTrue(calls.get(0).contains("PRIMARY_KEY")); assertTrue(calls.get(0).contains("PRIMARY_KEY"));
assertTrue(calls.get(0).contains("DESCRIPTION"));
assertTrue(calls.get(0).contains("INFORMATION_SCHEMA.COLUMNS")); assertTrue(calls.get(0).contains("INFORMATION_SCHEMA.COLUMNS"));
assertTrue(calls.get(0).contains("UPPER(TABLE_SCHEMA) = UPPER(?)"));
}
@Test
void readsDescriptionsWithoutSchemaFilter() {
List<String> calls = new ArrayList<>();
Connection conn = fakeConnection(
calls,
true,
Collections.emptyList(),
null,
Collections.emptyList()
);
List<ColumnInfo> columns = IrisAgent.irisColumns(conn, null, "People");
assertEquals("identifier", columns.get(0).getComment());
assertNull(columns.get(1).getComment());
assertEquals(1, calls.size());
assertTrue(calls.get(0).contains("DESCRIPTION"));
assertFalse(calls.get(0).contains("TABLE_SCHEMA"));
} }
@Test @Test
@@ -185,8 +219,11 @@ class IrisAgentTest {
"COLUMN_NAME", "ID", "COLUMN_NAME", "ID",
"DATA_TYPE", "INTEGER", "DATA_TYPE", "INTEGER",
"IS_NULLABLE", "NO", "IS_NULLABLE", "NO",
"COLUMN_DEFAULT", "42",
"PRIMARY_KEY", inlinePrimaryKey ? "YES" : "NO", "PRIMARY_KEY", inlinePrimaryKey ? "YES" : "NO",
"NUMERIC_PRECISION", 10 "DESCRIPTION", "identifier",
"NUMERIC_PRECISION", 10,
"NUMERIC_SCALE", 0
), ),
Map.of( Map.of(
"COLUMN_NAME", "NAME", "COLUMN_NAME", "NAME",