[
https://issues.apache.org/jira/browse/PHOENIX-4228?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16177726#comment-16177726
]
Ankit Singhal commented on PHOENIX-4228:
----------------------------------------
I believe following code should already be taking care of this.(and same for
multiTableResolver ).
FromCompiler#SingleTableColumnResolver
{code}
if (connection.getSchema() != null) {
schema = schema != null ? schema : connection.getSchema();
}
{code}
For me, the following unit test case passes. Am I missing something here?
{code}@Test
public void testSchema() throws Exception {
Properties props = new Properties();
String schema="S";
props.setProperty(QueryServices.IS_NAMESPACE_MAPPING_ENABLED,
Boolean.toString(true));
Connection conn = DriverManager.getConnection(getUrl(), props);
String ddl = "CREATE SCHEMA IF NOT EXISTS "+schema;
conn.createStatement().execute(ddl);
ddl = "CREATE SCHEMA IF NOT EXISTS "+schema+"1";
conn.createStatement().execute(ddl);
ddl = "create table "+schema+".TEST(id varchar primary key)";
conn.createStatement().execute(ddl);
conn.createStatement().execute("use "+schema+"1");
query = "select count(*) from "+schema+".TEST";
rs = conn.createStatement().executeQuery(query);
assertTrue(rs.next());
assertEquals(0, rs.getInt(1));
}
{code}
> Schema set by "USE SCHEMA" statement is used even when schema name is set
> explicitly
> ------------------------------------------------------------------------------------
>
> Key: PHOENIX-4228
> URL: https://issues.apache.org/jira/browse/PHOENIX-4228
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 4.12.0
> Reporter: Karan Mehta
>
> The following is the documented behavior for USE SCHEMA statement.
> {code}
> Sets a default schema for the connection and is used as a target schema for
> all statements issued from the connection that do not specify schema name
> explicitly. USE DEFAULT unset the schema for the connection so that no schema
> will be used for the statements issued from the connection.
> {code}
> However this behaviour is not honoured for certain statements. For example if
> the following SQL is executed
> {code}
> 1. USE SCHEMA SCHEMA1;
> 2. SELECT * FROM SCHEMA2.TABLE2;
> {code}
> Phoenix will try to resolve the table {{SCHEMA2.TABLE2}} to
> {{SCHEMA1.SCHEMA2.TABLE2}} and hence will fail, even though SCHEMA2.TABLE2
> table can exist. This JIRA is to track the fix for the table name resolver.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)