You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Samarth Jain (JIRA)" <ji...@apache.org> on 2014/10/08 02:03:12 UTC
[jira] [Commented] (PHOENIX-1302) Query against tenant specific
view should use index
[ https://issues.apache.org/jira/browse/PHOENIX-1302?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14162824#comment-14162824 ]
Samarth Jain commented on PHOENIX-1302:
---------------------------------------
Tests added in QueryOptimizerTest with @Ignore annotation.
> Query against tenant specific view should use index
> ---------------------------------------------------
>
> Key: PHOENIX-1302
> URL: https://issues.apache.org/jira/browse/PHOENIX-1302
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 5.0.0, 4.2, 3.2
> Reporter: Samarth Jain
> Assignee: James Taylor
>
> Test that can be added in QueryOptimizerTest.java
> {code}
> @Test
> public void testAssertQueryAgainstTenantSpecificViewGoesThroughIndex() throws Exception {
> Connection conn = DriverManager.getConnection(getUrl(), new Properties());
>
> // create table
> conn.createStatement().execute("create table "
> + "XYZ.ABC"
> + " (organization_id char(15) not null, \n"
> + " entity_id char(15) not null,\n"
> + " a_string_array varchar(100) array[] not null,\n"
> + " b_string varchar(100),\n"
> + " a_integer integer,\n"
> + " a_date date,\n"
> + " CONSTRAINT pk PRIMARY KEY (organization_id, entity_id, a_string_array)\n"
> + ")" + "MULTI_TENANT=true");
>
> // create index
> conn.createStatement().execute("CREATE INDEX ABC_IDX ON XYZ.ABC (a_integer) INCLUDE (a_date)");
>
> conn.close();
>
> // switch to a tenant specific connection
> conn = DriverManager.getConnection(getUrl("tenantId"));
>
> // create a tenant specific view
> conn.createStatement().execute("CREATE VIEW ABC_VIEW AS SELECT * FROM XYZ.ABC");
>
> // query against the tenant specific view
> String sql = "SELECT a_date FROM ABC_VIEW where a_integer = ?";
> PreparedStatement stmt = conn.prepareStatement(sql);
> stmt.setInt(1, 1000);
> QueryPlan plan = stmt.unwrap(PhoenixPreparedStatement.class).optimizeQuery();
> assertEquals("Query should use index", PTableType.INDEX, plan.getTableRef().getTable().getType());
> }
> {code}
> Error:
> java.lang.AssertionError: Query should use index expected:<INDEX> but was:<VIEW>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)