@Test public void testTenantSpecificAndParentTablesMustBeInSameSchema() throws SQLException { try { createTestTable( PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE TABLE DIFFSCHEMA.TENANT_TABLE2 ( \n" + " tenant_col VARCHAR) \n" + " BASE_TABLE='" + PARENT_TABLE_NAME + '\''); fail(); } catch (SQLException expected) { assertEquals(TABLE_UNDEFINED.getErrorCode(), expected.getErrorCode()); } finally { dropTable(PHOENIX_JDBC_TENANT_SPECIFIC_URL, "DIFFSCHEMA.TENANT_TABLE2"); } }
@Test public void testTenantSpecificAndParentTablesMayBeInDifferentSchemas() throws SQLException { createTestTable( PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW DIFFSCHEMA.TENANT_TABLE ( \n" + " tenant_col VARCHAR) AS SELECT * \n" + " FROM " + PARENT_TABLE_NAME + " WHERE tenant_type_id = 'aaa'", null, nextTimestamp()); try { createTestTable( PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW DIFFSCHEMA.TENANT_TABLE ( \n" + " tenant_col VARCHAR) AS SELECT *\n" + " FROM DIFFSCHEMA." + PARENT_TABLE_NAME + " WHERE tenant_type_id = 'aaa'", null, nextTimestamp()); fail(); } catch (SQLException expected) { assertEquals(TABLE_UNDEFINED.getErrorCode(), expected.getErrorCode()); } String newDDL = "CREATE TABLE DIFFSCHEMA." + PARENT_TABLE_NAME + " ( \n" + " user VARCHAR ,\n" + " tenant_id VARCHAR(5) NOT NULL,\n" + " tenant_type_id VARCHAR(3) NOT NULL, \n" + " id INTEGER NOT NULL\n" + " CONSTRAINT pk PRIMARY KEY (tenant_id, tenant_type_id, id)) MULTI_TENANT=true"; createTestTable(getUrl(), newDDL, null, nextTimestamp()); createTestTable( PHOENIX_JDBC_TENANT_SPECIFIC_URL, "CREATE VIEW DIFFSCHEMA.TENANT_TABLE ( \n" + " tenant_col VARCHAR) AS SELECT *\n" + " FROM DIFFSCHEMA." + PARENT_TABLE_NAME + " WHERE tenant_type_id = 'aaa'", null, nextTimestamp()); }