Non-optimal Pushdowns for Views with Virtual Schemas

Details

Detail name Value
Changelog Number 3697
Type Improvement
Status Resolved
Fix Versions Exasol 6.0.12
Resolution Date 2018-08-20

Background

The view optimization in Exasol does not take the special properties of virtual schemas into account. This can lead to non-optimal pushdown queries.

Example:

CREATE SCHEMA NATIVE;
CREATE TABLE t(a int, b int);
INSERT INTO t VALUES (1, 1), (2, 2), (3, 3), (4, 4);

CREATE OR REPLACE JAVA ADAPTER SCRIPT JDBC_ADAPTER AS
%scriptclass com.exasol.adapter.jdbc.JdbcAdapter;
%jvmoption -Xms64m -Xmx64m;
%jar /buckets/bucket1/jdbc-adapter/virtualschema-jdbc-adapter.jar;
/
CREATE VIRTUAL SCHEMA VS1 USING NATIVE.JDBC_ADAPTER WITH CONNECTION_STRING='jdbc:exa:localhost:11111' USERNAME='user' PASSWORD='pwd' SCHEMA_NAME='NATIVE' IS_LOCAL='TRUE' SQL_DIALECT='EXASOL';

CREATE or replace VIEW NATIVE.PUSHDOWN_VIEW2_VS1 AS SELECT * FROM VS1.T;

EXPLAIN VIRTUAL SELECT a FROM NATIVE.PUSHDOWN_VIEW2_VS1;

The EXPLAIN VIRTUAL shows that Exasol creates the non-optimal pushdown query:

SELECT * FROM NATIVE.T;

instead of

SELECT A FROM NATIVE.T;

Improvement

The view optimization has to take the special properties of virtual schemas (e.g., a longer time to access data) into account.

Workaround

Disable the view optimization on database level using the extra database parameter -disableViewOptimization=1.