github-code-scanning[bot] commented on code in PR #13627:
URL: https://github.com/apache/druid/pull/13627#discussion_r1062019970
##########
server/src/test/java/org/apache/druid/catalog/model/table/DatasourceTableTest.java:
##########
@@ -195,107 +206,172 @@
@Test
public void testColumnSpec()
{
- // Type is required
- {
- ColumnSpec spec = new ColumnSpec(null, null, null, null);
- assertThrows(IAE.class, () -> spec.validate());
- }
-
// Name is required
{
- ColumnSpec spec = new ColumnSpec(DatasourceColumnDefn.COLUMN_TYPE, null,
null, null);
+ ColumnSpec spec = new ColumnSpec(null, null, null);
assertThrows(IAE.class, () -> spec.validate());
}
{
- ColumnSpec spec = new ColumnSpec(DatasourceColumnDefn.COLUMN_TYPE,
"foo", null, null);
+ ColumnSpec spec = new ColumnSpec("foo", null, null);
spec.validate();
}
// Type is optional
{
- ColumnSpec spec = new ColumnSpec(DatasourceColumnDefn.COLUMN_TYPE,
"foo", "VARCHAR", null);
+ ColumnSpec spec = new ColumnSpec("foo", "VARCHAR", null);
spec.validate();
}
}
@Test
- public void testDetailTableColumns()
+ public void testColumns()
{
TableBuilder builder = TableBuilder.datasource("foo", "P1D");
// OK to have no columns
{
TableSpec spec = builder.copy()
.buildSpec();
- expectValidationSucceeds(spec);
+ ResolvedTable table = registry.resolve(spec);
+ table.validate();
+ DatasourceFacade facade = new
DatasourceFacade(registry.resolve(table.spec()));
+ assertFalse(facade.hasRollup());
+ assertTrue(facade.columnFacades().isEmpty());
}
// OK to have no column type
{
TableSpec spec = builder.copy()
.column("foo", null)
.buildSpec();
- expectValidationSucceeds(spec);
+ ResolvedTable table = registry.resolve(spec);
+ table.validate();
+
+ DatasourceFacade facade = new
DatasourceFacade(registry.resolve(table.spec()));
+ assertFalse(facade.hasRollup());
+ assertEquals(1, facade.columnFacades().size());
+ ColumnFacade col = facade.columnFacades().get(0);
+ assertSame(spec.columns().get(0), col.spec());
}
- // Time column can have no type
+ // Can have a legal scalar type
{
TableSpec spec = builder.copy()
- .column(Columns.TIME_COLUMN, null)
+ .column("foo", Columns.VARCHAR)
.buildSpec();
- expectValidationSucceeds(spec);
+ ResolvedTable table = registry.resolve(spec);
+ table.validate();
+ DatasourceFacade facade = new
DatasourceFacade(registry.resolve(table.spec()));
+ assertEquals(1, facade.columnFacades().size());
+ ColumnFacade col = facade.columnFacades().get(0);
+ assertSame(spec.columns().get(0), col.spec());
}
- // Time column can only have TIMESTAMP type
+ // Reject an unknown SQL type
{
TableSpec spec = builder.copy()
- .timeColumn()
+ .column("foo", "BOGUS")
.buildSpec();
- expectValidationSucceeds(spec);
+ expectValidationFails(spec);
}
+
+ // Reject duplicate columns
{
TableSpec spec = builder.copy()
- .column(Columns.TIME_COLUMN, Columns.VARCHAR)
+ .column("foo", Columns.VARCHAR)
+ .column("bar", Columns.BIGINT)
.buildSpec();
- expectValidationFails(spec);
+ expectValidationSucceeds(spec);
}
-
- // Can have a legal scalar type
{
TableSpec spec = builder.copy()
.column("foo", Columns.VARCHAR)
+ .column("foo", Columns.BIGINT)
.buildSpec();
- expectValidationSucceeds(spec);
+ expectValidationFails(spec);
}
+ }
- // Reject an unknown SQL type
+ @Test
+ public void testRollup()
+ {
+ TableMetadata table = TableBuilder.datasource("foo", "P1D")
+ .column(Columns.TIME_COLUMN, "TIMESTAMP('PT1M')")
+ .column("a", null)
+ .column("b", Columns.VARCHAR)
+ .column("c", "SUM(BIGINT)")
+ .build();
+
+ table.validate();
+ List<ColumnSpec> columns = table.spec().columns();
+
+ assertEquals(4, columns.size());
+ assertEquals(Columns.TIME_COLUMN, columns.get(0).name());
+ assertEquals("TIMESTAMP('PT1M')", columns.get(0).sqlType());
+
+ assertEquals("a", columns.get(1).name());
+ assertNull(columns.get(1).sqlType());
+
+ assertEquals("b", columns.get(2).name());
+ assertEquals(Columns.VARCHAR, columns.get(2).sqlType());
+
+ assertEquals("c", columns.get(3).name());
+ assertEquals("SUM(BIGINT)", columns.get(3).sqlType());
+
+ DatasourceFacade facade = new
DatasourceFacade(registry.resolve(table.spec()));
+ assertTrue(facade.hasRollup());
+ assertEquals(4, facade.columnFacades().size());
+ ColumnFacade col = facade.columnFacades().get(3);
Review Comment:
## Unread local variable
Variable 'ColumnFacade col' is never read.
[Show more
details](https://github.com/apache/druid/security/code-scanning/3598)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]