PA_CR_PA-3.9.0.0-RC1_redshift_08.00.0002_RedshiftJDBC-1.0.13.1313
Preface
This report covers the following products.
- Pentaho Analysis 5.3.0.0-RC ( 3.9.0.0-RC )
- Redshift 8.00.0002?
- Amazon driver for RedShift 1.0.13.1313
Feature |
Status |
Notes |
---|---|---|
Concurrency and Thread Safety |
|
Using a connection pool causes intermittent issues. |
Error Handling and Recovery |
|
If wrong credentials are used to establish a connection, the driver becomes unusable until a full JVM restart. |
Degenerate Schemas |
|
|
Star Schemas |
|
|
Snowflake Schemas |
|
|
Filters |
|
|
Top Count |
|
setMaxRows() is not implemented correctly in the JDBC driver. |
Aggregation Tables |
|
|
Null Values & Keys |
|
|
Inline Tables |
|
|
Distinct Count |
|
Not all forms of distinct counts are supported, although the minimum support it offers is sufficient for Mondrian. |
Grouping Sets |
|
Grouping sets are not supported. |
Failures
Concurrency and Thread Safety
Symptom
When a connection pool is used, the driver fails somewhat randomly. We have not been able to find a deterministic reproduction path. Below is the stack trace that we sometimes get.
Caused by: java.sql.SQLException: [Amazon](500150) Error setting/closing connection: Not Connected. at com.amazon.redshift.client.PGClient.isConnected(Unknown Source) at com.amazon.redshift.client.PGClient.directExecute(Unknown Source) at com.amazon.redshift.core.jdbc4.PGJDBC4DatabaseMetaData.setDefaultProperties(Unknown Source) at com.amazon.redshift.core.jdbc4.PGJDBC4DatabaseMetaData.<init>(Unknown Source) at com.amazon.redshift.core.jdbc4.PGJDBC4ObjectFactory.createDatabaseMetaData(Unknown Source) at com.amazon.jdbc.common.SConnection.getMetaData(Unknown Source) at org.apache.commons.dbcp.DelegatingConnection.getMetaData(DelegatingConnection.java:345) at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.getMetaData(PoolingDataSource.java:245) (snip) Caused by: com.amazon.support.exceptions.GeneralException: [Amazon](500150) Error setting/closing connection: Not Connected. ... 67 more
Top Count
Symptom
TopCount operations are not working. The JDBC driver doesn't enforce the value passed to java.sql.Statement.setMaxRows().
Failed tests
Test |
Result |
---|---|
org.pentaho.mondrian.tck.TopCountTest.testSetMaxRows |
The driver doesn't use the value passed to setMaxRows(). java.lang.AssertionError: ResultSet returned more rows than expected at org.junit.Assert.fail(Assert.java:88) at org.pentaho.mondrian.tck.SqlExpectation.validateRows(SqlExpectation.java:107) at org.pentaho.mondrian.tck.SqlExpectation.verify(SqlExpectation.java:64) at org.pentaho.mondrian.tck.SqlContext.verify(SqlContext.java:75) at org.pentaho.mondrian.tck.TopCountTest.testSetMaxRows(TopCountTest.java:53) |
Warnings
Distinct Count
Symptom
Not all forms of distinct count queries are supported. One form of distinct count for multiple columns is supported however, so mondrian can batch the queries as needed. The integration tests have also shown that the dialect is issuing the distinct count queries correctly.
Failed tests
Test |
Result |
---|---|
org.pentaho.mondrian.tck.AggregationTest.testCompoundColumnSQL |
Cannot batch multiple distinct count columns with the following syntax Caused by: java.sql.SQLException: [Amazon](500310) Invalid operation: function count(integer, integer) does not exist; at com.amazon.redshift.client.messages.inbound.ErrorResponse.toErrorException(Unknown Source) at com.amazon.redshift.client.PGMessagingContext.handleErrorResponse(Unknown Source) at com.amazon.redshift.client.PGMessagingContext.getOperationMetadata(Unknown Source) at com.amazon.redshift.client.PGMessagingContext.getOperationMetadata(Unknown Source) at com.amazon.redshift.client.PGMessagingContext.handleMessage(Unknown Source) at com.amazon.jdbc.communications.InboundMessagesPipeline.getNextMessageOfClass(Unknown Source) at com.amazon.redshift.client.PGMessagingContext.doMoveToNextClass(Unknown Source) at com.amazon.redshift.client.PGMessagingContext.getReadyForQuery(Unknown Source) at com.amazon.redshift.client.PGMessagingContext.getOperationMetadata(Unknown Source) at com.amazon.redshift.client.PGMessagingContext.getOperationMetadata(Unknown Source) at com.amazon.redshift.client.PGMessagingContext.handleMessage(Unknown Source) at com.amazon.jdbc.communications.InboundMessagesPipeline.getNextMessageOfClass(Unknown Source) at com.amazon.redshift.client.PGMessagingContext.doMoveToNextClass(Unknown Source) at com.amazon.redshift.client.PGMessagingContext.getReadyForQuery(Unknown Source) at com.amazon.redshift.client.PGMessagingContext.getOperationMetadata(Unknown Source) at com.amazon.redshift.client.PGMessagingContext.getOperationMetadata(Unknown Source) at com.amazon.redshift.client.PGMessagingContext.getBindComplete(Unknown Source) at com.amazon.redshift.client.PGClient.directExecute(Unknown Source) at com.amazon.redshift.dataengine.PGIQueryExecutor.execute(Unknown Source) at com.amazon.jdbc.common.SStatement.executeNoParams(Unknown Source) at com.amazon.jdbc.common.SStatement.execute(Unknown Source) |
Grouping sets
Symptom
Queries which use grouping sets are not supported. This is a optimization feature supported by some more advanced databases. It allows to batch cell requests and improve the overall performance.
Failed tests
Test |
Result |
---|---|
org.pentaho.mondrian.tck.GroupingSetTest.testEmptyEntry |
Grouping set queries are not supported. select customer.gender as gender, sum(sales_fact_1997.store_cost) as sum_cost from time_by_day, sales_fact_1997, customer where (sales_fact_1997.time_id = time_by_day.time_id and time_by_day.the_year = 1997 and sales_fact_1997.customer_id = customer.customer_id) group by grouping sets ((customer.gender),()) |
org.pentaho.mondrian.tck.GroupingSetTest.testPlainEntry |
Grouping set queries are not supported. select customer.gender as gender, sum(sales_fact_1997.store_cost) as sum_cost from time_by_day, sales_fact_1997, customer where (sales_fact_1997.time_id = time_by_day.time_id and time_by_day.the_year = 1997 and sales_fact_1997.customer_id = customer.customer_id) group by grouping sets ((customer.gender)) |
org.pentaho.mondrian.tck.GroupingSetTest.testComplexEntry |
Grouping set queries are not supported. select time_by_day.the_year as the_year, customer.gender as gender, sum(sales_fact_1997.store_cost) as sum_cost from time_by_day, sales_fact_1997, customer where (sales_fact_1997.time_id = time_by_day.time_id and time_by_day.the_year = 1997 and sales_fact_1997.customer_id = customer.customer_id) group by grouping sets ((time_by_day.the_year, customer.gender)) |
org.pentaho.mondrian.tck.GroupingSetTest.testMultipleEntries |
Grouping set queries are not supported. select time_by_day.the_year as the_year, customer.gender as gender, sum(sales_fact_1997.store_cost) as sum_cost from time_by_day, sales_fact_1997, customer where (sales_fact_1997.time_id = time_by_day.time_id and time_by_day.the_year = 1997 and sales_fact_1997.customer_id = customer.customer_id) group by grouping sets ((time_by_day.the_year, customer.gender), (time_by_day.the_year),()) |