diff --git a/agents/drivers/iris/src/main/java/com/dbx/agent/iris/IrisAgent.java b/agents/drivers/iris/src/main/java/com/dbx/agent/iris/IrisAgent.java index 548d031001..3414bcaa30 100644 --- a/agents/drivers/iris/src/main/java/com/dbx/agent/iris/IrisAgent.java +++ b/agents/drivers/iris/src/main/java/com/dbx/agent/iris/IrisAgent.java @@ -62,7 +62,7 @@ public final class IrisAgent extends ConfiguredJdbcAgent { stringOrNull(rs, "COLUMN_DEFAULT"), "YES".equalsIgnoreCase(stringOrNull(rs, "PRIMARY_KEY")), null, - null, + stringOrNull(rs, "DESCRIPTION"), intOrNull(rs, "NUMERIC_PRECISION"), intOrNull(rs, "NUMERIC_SCALE"), intOrNull(rs, "CHARACTER_MAXIMUM_LENGTH") @@ -126,7 +126,7 @@ public final class IrisAgent extends ConfiguredJdbcAgent { private static String columnSql(String schema) { StringBuilder sql = new StringBuilder( "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 " ); if (!isBlank(schema)) { diff --git a/agents/drivers/iris/src/test/java/com/dbx/agent/iris/IrisAgentTest.java b/agents/drivers/iris/src/test/java/com/dbx/agent/iris/IrisAgentTest.java index 2ce5f98f3f..81186aae74 100644 --- a/agents/drivers/iris/src/test/java/com/dbx/agent/iris/IrisAgentTest.java +++ b/agents/drivers/iris/src/test/java/com/dbx/agent/iris/IrisAgentTest.java @@ -19,6 +19,7 @@ import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; class IrisAgentTest { @@ -63,12 +64,45 @@ class IrisAgentTest { assertEquals("INTEGER", columns.get(0).getData_type()); assertFalse(columns.get(0).getIs_nullable()); 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("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(1, calls.size()); assertFalse(calls.get(0).contains("LIMIT")); 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("UPPER(TABLE_SCHEMA) = UPPER(?)")); + } + + @Test + void readsDescriptionsWithoutSchemaFilter() { + List calls = new ArrayList<>(); + Connection conn = fakeConnection( + calls, + true, + Collections.emptyList(), + null, + Collections.emptyList() + ); + + List 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 @@ -185,8 +219,11 @@ class IrisAgentTest { "COLUMN_NAME", "ID", "DATA_TYPE", "INTEGER", "IS_NULLABLE", "NO", + "COLUMN_DEFAULT", "42", "PRIMARY_KEY", inlinePrimaryKey ? "YES" : "NO", - "NUMERIC_PRECISION", 10 + "DESCRIPTION", "identifier", + "NUMERIC_PRECISION", 10, + "NUMERIC_SCALE", 0 ), Map.of( "COLUMN_NAME", "NAME",