You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by sa...@apache.org on 2016/08/26 23:16:08 UTC
[04/15] phoenix git commit: Modify phoenix IT tests to extend
BaseHBaseManagedTimeTableReuseIT (Prakul Agarwal, Samarth Jain)
http://git-wip-us.apache.org/repos/asf/phoenix/blob/14dab2f4/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
index b7537a6..8283b28 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexIT.java
@@ -43,7 +43,6 @@ import java.util.Properties;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellScanner;
import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.HTableInterface;
import org.apache.hadoop.hbase.client.Result;
@@ -51,7 +50,8 @@ import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.phoenix.compile.ColumnResolver;
import org.apache.phoenix.compile.FromCompiler;
-import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT;
+import org.apache.phoenix.end2end.BaseHBaseManagedTimeTableReuseIT;
+import org.apache.phoenix.end2end.BaseOwnClusterIT;
import org.apache.phoenix.end2end.Shadower;
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.jdbc.PhoenixConnection;
@@ -78,16 +78,13 @@ import org.junit.runners.Parameterized.Parameters;
import com.google.common.collect.Maps;
@RunWith(Parameterized.class)
-public class IndexIT extends BaseHBaseManagedTimeIT {
+public class IndexIT extends BaseOwnClusterIT {
private final boolean localIndex;
private final boolean transactional;
private final boolean mutable;
private final String tableDDLOptions;
- private final String tableName;
- private final String indexName;
- private final String fullTableName;
- private final String fullIndexName;
+
public IndexIT(boolean localIndex, boolean mutable, boolean transactional) {
this.localIndex = localIndex;
@@ -102,14 +99,10 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
optionBuilder.append(" TRANSACTIONAL=true ");
}
this.tableDDLOptions = optionBuilder.toString();
- this.tableName = TestUtil.DEFAULT_DATA_TABLE_NAME + ( transactional ? "_TXN" : "");
- this.indexName = "IDX" + ( transactional ? "_TXN" : "");
- this.fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
- this.fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
}
@BeforeClass
- @Shadower(classBeingShadowed = BaseHBaseManagedTimeIT.class)
+ @Shadower(classBeingShadowed = BaseHBaseManagedTimeTableReuseIT.class)
public static void doSetup() throws Exception {
Map<String,String> props = Maps.newHashMapWithExpectedSize(1);
props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
@@ -127,6 +120,10 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testIndexWithNullableFixedWithCols() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IND_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
String ddl ="CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
@@ -183,6 +180,10 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testDeleteFromAllPKColumnIndex() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IND_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
String ddl ="CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
@@ -237,6 +238,10 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testCreateIndexAfterUpsertStarted() throws Exception {
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IND_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
testCreateIndexAfterUpsertStarted(false, fullTableName + "1", fullIndexName + "1");
if (transactional) {
testCreateIndexAfterUpsertStarted(true, fullTableName + "2", fullIndexName + "2");
@@ -334,6 +339,11 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testDeleteFromNonPKColumnIndex() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IND_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
+
String ddl ="CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
@@ -384,6 +394,9 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testGroupByCount() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IND_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
String ddl ="CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
@@ -402,6 +415,9 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testSelectDistinctOnTableWithSecondaryImmutableIndex() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IND_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
String ddl ="CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
@@ -425,6 +441,9 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testInClauseWithIndexOnColumnOfUsignedIntType() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IND_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
String ddl ="CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
@@ -447,6 +466,10 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
@Test
public void createIndexOnTableWithSpecifiedDefaultCF() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IND_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
String query;
@@ -485,6 +508,10 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testIndexWithNullableDateCol() throws Exception {
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IND_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
@@ -541,6 +568,10 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testSelectAllAndAliasWithIndex() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IND_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
String query;
@@ -616,6 +647,10 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testSelectCF() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IND_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
String query;
@@ -673,6 +708,10 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testUpsertAfterIndexDrop() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IND_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
String query;
@@ -733,7 +772,12 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testMultipleUpdatesAcrossRegions() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- String testTable = fullTableName+"_MULTIPLE_UPDATES";
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IND_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
+
+ String testTable = fullTableName+"_MULTIPLE_UPDATES";
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
String query;
@@ -741,8 +785,8 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
// make sure that the tables are empty, but reachable
conn.createStatement().execute(
"CREATE TABLE " + testTable
- + " (k VARCHAR NOT NULL PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) " + HTableDescriptor.MAX_FILESIZE + "=1, " + HTableDescriptor.MEMSTORE_FLUSHSIZE + "=1 "
- + (!tableDDLOptions.isEmpty() ? "," + tableDDLOptions : "") + "SPLIT ON ('b')");
+ + " (k VARCHAR NOT NULL PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) "
+ + (!tableDDLOptions.isEmpty() ? tableDDLOptions : "") + "SPLIT ON ('b')");
query = "SELECT * FROM " + testTable;
rs = conn.createStatement().executeQuery(query);
assertFalse(rs.next());
@@ -821,6 +865,10 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testIndexWithCaseSensitiveCols() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IND_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
String query;
@@ -932,6 +980,9 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testInFilterOnIndexedTable() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IND_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
String query;
@@ -950,6 +1001,10 @@ public class IndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testIndexWithDecimalCol() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IND_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
String query;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/14dab2f4/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexMetadataIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexMetadataIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexMetadataIT.java
index a48cc4b..8cce14a 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexMetadataIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexMetadataIT.java
@@ -17,10 +17,7 @@
*/
package org.apache.phoenix.end2end.index;
-import static org.apache.phoenix.util.TestUtil.INDEX_DATA_SCHEMA;
-import static org.apache.phoenix.util.TestUtil.INDEX_DATA_TABLE;
-import static org.apache.phoenix.util.TestUtil.MUTABLE_INDEX_DATA_TABLE;
-import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
+import static org.apache.phoenix.util.TestUtil.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -36,8 +33,9 @@ import java.sql.SQLException;
import java.sql.Types;
import java.util.Properties;
+import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
-import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT;
+import org.apache.phoenix.end2end.BaseHBaseManagedTimeTableReuseIT;
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData;
@@ -56,7 +54,7 @@ import org.apache.phoenix.util.TestUtil;
import org.junit.Test;
-public class IndexMetadataIT extends BaseHBaseManagedTimeIT {
+public class IndexMetadataIT extends BaseHBaseManagedTimeTableReuseIT {
private enum Order {ASC, DESC};
@@ -122,167 +120,169 @@ public class IndexMetadataIT extends BaseHBaseManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
+ String indexDataTable = generateRandomString();
+ String indexName = generateRandomString();
try {
- ensureTableCreated(getUrl(), MUTABLE_INDEX_DATA_TABLE);
- String ddl = "CREATE INDEX IDX ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + MUTABLE_INDEX_DATA_TABLE
+ ensureTableCreated(getUrl(), indexDataTable, MUTABLE_INDEX_DATA_TABLE);
+ String ddl = "CREATE INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable
+ " (varchar_col1 ASC, varchar_col2 ASC, int_pk DESC)"
+ " INCLUDE (int_col1, int_col2)";
PreparedStatement stmt = conn.prepareStatement(ddl);
stmt.execute();
// Verify the metadata for index is correct.
- ResultSet rs = conn.getMetaData().getIndexInfo(null, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, false, false);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX", 1, "A:VARCHAR_COL1", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX", 2, "B:VARCHAR_COL2", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX", 3, ":INT_PK", Order.DESC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX", 4, ":VARCHAR_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX", 5, ":CHAR_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX", 6, ":LONG_PK", Order.DESC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX", 7, ":DECIMAL_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX", 8, ":DATE_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX", 9, "A:INT_COL1", null);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX", 10, "B:INT_COL2", null);
+ ResultSet rs = conn.getMetaData().getIndexInfo(null, INDEX_DATA_SCHEMA, indexDataTable, false, false);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 1, "A:VARCHAR_COL1", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 2, "B:VARCHAR_COL2", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 3, ":INT_PK", Order.DESC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 4, ":VARCHAR_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 5, ":CHAR_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 6, ":LONG_PK", Order.DESC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 7, ":DECIMAL_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 8, ":DATE_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 9, "A:INT_COL1", null);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 10, "B:INT_COL2", null);
assertFalse(rs.next());
- rs = conn.getMetaData().getTables(null, StringUtil.escapeLike(INDEX_DATA_SCHEMA), StringUtil.escapeLike("IDX"), new String[] {PTableType.INDEX.getValue().getString() });
+ rs = conn.getMetaData().getTables(null, StringUtil.escapeLike(INDEX_DATA_SCHEMA), StringUtil.escapeLike(indexName ), new String[] {PTableType.INDEX.getValue().getString() });
assertTrue(rs.next());
assertEquals(PIndexState.ACTIVE.toString(), rs.getString("INDEX_STATE"));
// Verify that there is a row inserted into the data table for the index table.
- rs = IndexTestUtil.readDataTableIndexRow(conn, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX");
+ rs = IndexTestUtil.readDataTableIndexRow(conn, INDEX_DATA_SCHEMA, indexDataTable, indexName );
assertTrue(rs.next());
- assertEquals("IDX", rs.getString(1));
+ assertEquals(indexName , rs.getString(1));
assertFalse(rs.next());
- assertActiveIndex(conn, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE);
+ assertActiveIndex(conn, INDEX_DATA_SCHEMA, indexDataTable);
- ddl = "ALTER INDEX IDX ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + MUTABLE_INDEX_DATA_TABLE + " UNUSABLE";
+ ddl = "ALTER INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable + " UNUSABLE";
conn.createStatement().execute(ddl);
// Verify the metadata for index is correct.
- rs = conn.getMetaData().getTables(null, StringUtil.escapeLike(INDEX_DATA_SCHEMA), "IDX", new String[] {PTableType.INDEX.toString()});
+ rs = conn.getMetaData().getTables(null, StringUtil.escapeLike(INDEX_DATA_SCHEMA), indexName , new String[] {PTableType.INDEX.toString()});
assertTrue(rs.next());
- assertEquals("IDX", rs.getString(3));
+ assertEquals(indexName , rs.getString(3));
assertEquals(PIndexState.INACTIVE.toString(), rs.getString("INDEX_STATE"));
assertFalse(rs.next());
- assertActiveIndex(conn, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE);
+ assertActiveIndex(conn, INDEX_DATA_SCHEMA, indexDataTable);
- ddl = "ALTER INDEX IDX ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + MUTABLE_INDEX_DATA_TABLE + " USABLE";
+ ddl = "ALTER INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable + " USABLE";
conn.createStatement().execute(ddl);
// Verify the metadata for index is correct.
- rs = conn.getMetaData().getTables(null, StringUtil.escapeLike(INDEX_DATA_SCHEMA), "IDX", new String[] {PTableType.INDEX.toString()});
+ rs = conn.getMetaData().getTables(null, StringUtil.escapeLike(INDEX_DATA_SCHEMA), indexName , new String[] {PTableType.INDEX.toString()});
assertTrue(rs.next());
- assertEquals("IDX", rs.getString(3));
+ assertEquals(indexName , rs.getString(3));
assertEquals(PIndexState.ACTIVE.toString(), rs.getString("INDEX_STATE"));
assertFalse(rs.next());
- assertActiveIndex(conn, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE);
+ assertActiveIndex(conn, INDEX_DATA_SCHEMA, indexDataTable);
- ddl = "ALTER INDEX IDX ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + MUTABLE_INDEX_DATA_TABLE + " DISABLE";
+ ddl = "ALTER INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable + " DISABLE";
conn.createStatement().execute(ddl);
// Verify the metadata for index is correct.
- rs = conn.getMetaData().getTables(null, StringUtil.escapeLike(INDEX_DATA_SCHEMA), "IDX", new String[] {PTableType.INDEX.toString()});
+ rs = conn.getMetaData().getTables(null, StringUtil.escapeLike(INDEX_DATA_SCHEMA), indexName , new String[] {PTableType.INDEX.toString()});
assertTrue(rs.next());
- assertEquals("IDX", rs.getString(3));
+ assertEquals(indexName , rs.getString(3));
assertEquals(PIndexState.DISABLE.toString(), rs.getString("INDEX_STATE"));
assertFalse(rs.next());
- assertNoActiveIndex(conn, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE);
+ assertNoActiveIndex(conn, INDEX_DATA_SCHEMA, indexDataTable);
try {
- ddl = "ALTER INDEX IDX ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + MUTABLE_INDEX_DATA_TABLE + " USABLE";
+ ddl = "ALTER INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable + " USABLE";
conn.createStatement().execute(ddl);
fail();
} catch (SQLException e) {
assertEquals(SQLExceptionCode.INVALID_INDEX_STATE_TRANSITION.getErrorCode(), e.getErrorCode());
}
try {
- ddl = "ALTER INDEX IDX ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + MUTABLE_INDEX_DATA_TABLE + " UNUSABLE";
+ ddl = "ALTER INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable + " UNUSABLE";
conn.createStatement().execute(ddl);
fail();
} catch (SQLException e) {
assertEquals(SQLExceptionCode.INVALID_INDEX_STATE_TRANSITION.getErrorCode(), e.getErrorCode());
}
- ddl = "ALTER INDEX IDX ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + MUTABLE_INDEX_DATA_TABLE + " REBUILD";
+ ddl = "ALTER INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable + " REBUILD";
conn.createStatement().execute(ddl);
// Verify the metadata for index is correct.
- rs = conn.getMetaData().getTables(null, StringUtil.escapeLike(INDEX_DATA_SCHEMA), "IDX", new String[] {PTableType.INDEX.toString()});
+ rs = conn.getMetaData().getTables(null, StringUtil.escapeLike(INDEX_DATA_SCHEMA), indexName , new String[] {PTableType.INDEX.toString()});
assertTrue(rs.next());
- assertEquals("IDX", rs.getString(3));
+ assertEquals(indexName , rs.getString(3));
assertEquals(PIndexState.ACTIVE.toString(), rs.getString("INDEX_STATE"));
assertFalse(rs.next());
- assertActiveIndex(conn, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE);
+ assertActiveIndex(conn, INDEX_DATA_SCHEMA, indexDataTable);
- ddl = "DROP INDEX IDX ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + MUTABLE_INDEX_DATA_TABLE;
+ ddl = "DROP INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable;
stmt = conn.prepareStatement(ddl);
stmt.execute();
- assertNoActiveIndex(conn, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE);
+ assertNoActiveIndex(conn, INDEX_DATA_SCHEMA, indexDataTable);
// Assert the rows for index table is completely removed.
- rs = conn.getMetaData().getIndexInfo(null, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, false, false);
+ rs = conn.getMetaData().getIndexInfo(null, INDEX_DATA_SCHEMA, indexDataTable, false, false);
assertFalse(rs.next());
// Assert the row in the original data table is removed.
// Verify that there is a row inserted into the data table for the index table.
- rs = IndexTestUtil.readDataTableIndexRow(conn, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX");
+ rs = IndexTestUtil.readDataTableIndexRow(conn, INDEX_DATA_SCHEMA, indexDataTable, indexName );
assertFalse(rs.next());
// Create another two indexes, and drops the table, verifies the indexes are dropped as well.
- ddl = "CREATE INDEX IDX1 ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + MUTABLE_INDEX_DATA_TABLE
+ ddl = "CREATE INDEX " + indexName + "1 ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable
+ " (varchar_col1 ASC, varchar_col2 ASC, int_pk DESC)"
+ " INCLUDE (int_col1, int_col2)";
stmt = conn.prepareStatement(ddl);
stmt.execute();
- ddl = "CREATE INDEX IDX2 ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + MUTABLE_INDEX_DATA_TABLE
+ ddl = "CREATE INDEX " + indexName + "2 ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable
+ " (varchar_col1 ASC, varchar_col2 ASC, int_pk DESC)"
+ " INCLUDE (long_pk, int_col2)";
stmt = conn.prepareStatement(ddl);
stmt.execute();
- rs = conn.getMetaData().getIndexInfo(null, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, false, false);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX1", 1, "A:VARCHAR_COL1", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX1", 2, "B:VARCHAR_COL2", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX1", 3, ":INT_PK", Order.DESC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX1", 4, ":VARCHAR_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX1", 5, ":CHAR_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX1", 6, ":LONG_PK", Order.DESC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX1", 7, ":DECIMAL_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX1", 8, ":DATE_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX1", 9, "A:INT_COL1", null);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX1", 10, "B:INT_COL2", null);
+ rs = conn.getMetaData().getIndexInfo(null, INDEX_DATA_SCHEMA, indexDataTable, false, false);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "1", 1, "A:VARCHAR_COL1", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "1", 2, "B:VARCHAR_COL2", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "1", 3, ":INT_PK", Order.DESC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "1", 4, ":VARCHAR_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "1", 5, ":CHAR_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "1", 6, ":LONG_PK", Order.DESC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "1", 7, ":DECIMAL_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "1", 8, ":DATE_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "1", 9, "A:INT_COL1", null);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "1", 10, "B:INT_COL2", null);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX2", 1, "A:VARCHAR_COL1", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX2", 2, "B:VARCHAR_COL2", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX2", 3, ":INT_PK", Order.DESC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX2", 4, ":VARCHAR_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX2", 5, ":CHAR_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX2", 6, ":LONG_PK", Order.DESC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX2", 7, ":DECIMAL_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX2", 8, ":DATE_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX2", 9, "B:INT_COL2", null);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "2", 1, "A:VARCHAR_COL1", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "2", 2, "B:VARCHAR_COL2", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "2", 3, ":INT_PK", Order.DESC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "2", 4, ":VARCHAR_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "2", 5, ":CHAR_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "2", 6, ":LONG_PK", Order.DESC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "2", 7, ":DECIMAL_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "2", 8, ":DATE_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName + "2", 9, "B:INT_COL2", null);
assertFalse(rs.next());
// Create another table in the same schema
- String diffTableNameInSameSchema = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + MUTABLE_INDEX_DATA_TABLE + "2";
+ String diffTableNameInSameSchema = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable + "2";
conn.createStatement().execute("CREATE TABLE " + diffTableNameInSameSchema + "(k INTEGER PRIMARY KEY)");
try {
- conn.createStatement().execute("DROP INDEX IDX1 ON " + diffTableNameInSameSchema);
- fail("Should have realized index IDX1 is not on the table");
+ conn.createStatement().execute("DROP INDEX " + indexName + "1 ON " + diffTableNameInSameSchema);
+ fail("Should have realized index " + indexName + "1 is not on the table");
} catch (TableNotFoundException ignore) {
}
- ddl = "DROP TABLE " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + MUTABLE_INDEX_DATA_TABLE;
+ ddl = "DROP TABLE " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable;
stmt = conn.prepareStatement(ddl);
stmt.execute();
- rs = conn.getMetaData().getIndexInfo(null, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, false, false);
+ rs = conn.getMetaData().getIndexInfo(null, INDEX_DATA_SCHEMA, indexDataTable, false, false);
assertFalse(rs.next());
- rs = IndexTestUtil.readDataTableIndexRow(conn, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX1");
+ rs = IndexTestUtil.readDataTableIndexRow(conn, INDEX_DATA_SCHEMA, indexDataTable, indexName + "1");
assertFalse(rs.next());
- rs = IndexTestUtil.readDataTableIndexRow(conn, INDEX_DATA_SCHEMA, MUTABLE_INDEX_DATA_TABLE, "IDX2");
+ rs = IndexTestUtil.readDataTableIndexRow(conn, INDEX_DATA_SCHEMA, indexDataTable, indexName + "2");
assertFalse(rs.next());
} finally {
conn.close();
@@ -295,54 +295,56 @@ public class IndexMetadataIT extends BaseHBaseManagedTimeIT {
// column. The definition is defined in IndexUtil.getIndexColumnDataType.
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
+ String indexDataTable = generateRandomString();
+ String indexName = generateRandomString();
conn.setAutoCommit(false);
try {
- ensureTableCreated(getUrl(), INDEX_DATA_TABLE);
- String ddl = "CREATE INDEX IDX ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + INDEX_DATA_TABLE
+ ensureTableCreated(getUrl(), indexDataTable, INDEX_DATA_TABLE);
+ String ddl = "CREATE INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable
+ " (char_col1 ASC, int_col2 ASC, long_col2 DESC)"
+ " INCLUDE (int_col1)";
PreparedStatement stmt = conn.prepareStatement(ddl);
stmt.execute();
// Verify the CHAR, INT and LONG are converted to right type.
- ResultSet rs = conn.getMetaData().getIndexInfo(null, INDEX_DATA_SCHEMA, INDEX_DATA_TABLE, false, false);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, INDEX_DATA_TABLE, "IDX", 1, "A:CHAR_COL1", Order.ASC, Types.VARCHAR);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, INDEX_DATA_TABLE, "IDX", 2, "B:INT_COL2", Order.ASC, Types.DECIMAL);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, INDEX_DATA_TABLE, "IDX", 3, "B:LONG_COL2", Order.DESC, Types.DECIMAL);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, INDEX_DATA_TABLE, "IDX", 4, ":VARCHAR_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, INDEX_DATA_TABLE, "IDX", 5, ":CHAR_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, INDEX_DATA_TABLE, "IDX", 6, ":INT_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, INDEX_DATA_TABLE, "IDX", 7, ":LONG_PK", Order.DESC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, INDEX_DATA_TABLE, "IDX", 8, ":DECIMAL_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, INDEX_DATA_TABLE, "IDX", 9, ":DATE_PK", Order.ASC);
- assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, INDEX_DATA_TABLE, "IDX", 10, "A:INT_COL1", null);
+ ResultSet rs = conn.getMetaData().getIndexInfo(null, INDEX_DATA_SCHEMA, indexDataTable, false, false);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 1, "A:CHAR_COL1", Order.ASC, Types.VARCHAR);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 2, "B:INT_COL2", Order.ASC, Types.DECIMAL);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 3, "B:LONG_COL2", Order.DESC, Types.DECIMAL);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 4, ":VARCHAR_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 5, ":CHAR_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 6, ":INT_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 7, ":LONG_PK", Order.DESC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 8, ":DECIMAL_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 9, ":DATE_PK", Order.ASC);
+ assertIndexInfoMetadata(rs, INDEX_DATA_SCHEMA, indexDataTable, indexName , 10, "A:INT_COL1", null);
assertFalse(rs.next());
- rs = IndexTestUtil.readDataTableIndexRow(conn, INDEX_DATA_SCHEMA, INDEX_DATA_TABLE, "IDX");
+ rs = IndexTestUtil.readDataTableIndexRow(conn, INDEX_DATA_SCHEMA, indexDataTable, indexName );
assertTrue(rs.next());
- assertEquals("IDX", rs.getString(1));
+ assertEquals(indexName , rs.getString(1));
assertFalse(rs.next());
- ddl = "ALTER INDEX IDX ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + INDEX_DATA_TABLE + " UNUSABLE";
+ ddl = "ALTER INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable + " UNUSABLE";
conn.createStatement().execute(ddl);
// Verify the metadata for index is correct.
- rs = conn.getMetaData().getTables(null, StringUtil.escapeLike(INDEX_DATA_SCHEMA), "IDX", new String[] {PTableType.INDEX.toString()});
+ rs = conn.getMetaData().getTables(null, StringUtil.escapeLike(INDEX_DATA_SCHEMA), indexName , new String[] {PTableType.INDEX.toString()});
assertTrue(rs.next());
- assertEquals("IDX", rs.getString(3));
+ assertEquals(indexName , rs.getString(3));
assertEquals(PIndexState.INACTIVE.toString(), rs.getString("INDEX_STATE"));
assertFalse(rs.next());
- ddl = "DROP INDEX IDX ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + INDEX_DATA_TABLE;
+ ddl = "DROP INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable;
stmt = conn.prepareStatement(ddl);
stmt.execute();
// Assert the rows for index table is completely removed.
- rs = conn.getMetaData().getIndexInfo(null, INDEX_DATA_SCHEMA, INDEX_DATA_TABLE, false, false);
+ rs = conn.getMetaData().getIndexInfo(null, INDEX_DATA_SCHEMA, indexDataTable, false, false);
assertFalse(rs.next());
// Assert the row in the original data table is removed.
// Verify that there is a row inserted into the data table for the index table.
- rs = IndexTestUtil.readDataTableIndexRow(conn, INDEX_DATA_SCHEMA, INDEX_DATA_TABLE, "IDX");
+ rs = IndexTestUtil.readDataTableIndexRow(conn, INDEX_DATA_SCHEMA, indexDataTable, indexName );
assertFalse(rs.next());
} finally {
conn.close();
@@ -355,27 +357,28 @@ public class IndexMetadataIT extends BaseHBaseManagedTimeIT {
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
String indexName = "\"lowerCaseIndex\"";
+ String indexDataTable = generateRandomString();
try {
- ensureTableCreated(getUrl(), INDEX_DATA_TABLE);
- String ddl = "CREATE INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + INDEX_DATA_TABLE
+ ensureTableCreated(getUrl(), indexDataTable, INDEX_DATA_TABLE);
+ String ddl = "CREATE INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable
+ " (char_col1 ASC, int_col2 ASC, long_col2 DESC)"
+ " INCLUDE (int_col1)";
PreparedStatement stmt = conn.prepareStatement(ddl);
stmt.execute();
- ddl = "ALTER INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + INDEX_DATA_TABLE + " UNUSABLE";
+ ddl = "ALTER INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable + " UNUSABLE";
conn.createStatement().execute(ddl);
// Verify the metadata for index is correct.
ResultSet rs = conn.getMetaData().getTables(null, StringUtil.escapeLike(INDEX_DATA_SCHEMA), "lowerCaseIndex", new String[] {PTableType.INDEX.toString()});
assertTrue(rs.next());
assertEquals("lowerCaseIndex", rs.getString(3));
- ddl = "DROP INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + INDEX_DATA_TABLE;
+ ddl = "DROP INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable;
stmt = conn.prepareStatement(ddl);
stmt.execute();
// Assert the rows for index table is completely removed.
- rs = conn.getMetaData().getIndexInfo(null, INDEX_DATA_SCHEMA, INDEX_DATA_TABLE, false, false);
+ rs = conn.getMetaData().getIndexInfo(null, INDEX_DATA_SCHEMA, indexDataTable, false, false);
assertFalse(rs.next());
} finally {
conn.close();
@@ -388,9 +391,11 @@ public class IndexMetadataIT extends BaseHBaseManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
+ String indexDataTable = generateRandomString();
+ String indexName = generateRandomString();
try {
- ensureTableCreated(getUrl(), TestUtil.INDEX_DATA_TABLE);
- String ddl = "CREATE INDEX IDX ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + INDEX_DATA_TABLE
+ ensureTableCreated(getUrl(), indexDataTable, TestUtil.INDEX_DATA_TABLE);
+ String ddl = "CREATE INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + indexDataTable
+ " (a.int_col1, a.long_col1, b.int_col2, b.long_col2)"
+ " INCLUDE(int_col1, int_col2)";
PreparedStatement stmt = conn.prepareStatement(ddl);
@@ -447,18 +452,20 @@ public class IndexMetadataIT extends BaseHBaseManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
- String ddl = "create table test_table (char_pk varchar not null,"
+ String testTable = generateRandomString();
+ String indexName = generateRandomString();
+ String ddl = "create table " + testTable + " (char_pk varchar not null,"
+ " a.int_col integer, a.long_col integer,"
+ " b.int_col integer, b.long_col integer"
+ " constraint pk primary key (char_pk))";
PreparedStatement stmt = conn.prepareStatement(ddl);
stmt.execute();
- ddl = "CREATE INDEX IDX1 ON test_table (a.int_col, b.int_col)";
+ ddl = "CREATE INDEX " + indexName + "1 ON " + testTable + " (a.int_col, b.int_col)";
stmt = conn.prepareStatement(ddl);
stmt.execute();
try {
- ddl = "CREATE INDEX IDX2 ON test_table (int_col)";
+ ddl = "CREATE INDEX " + indexName + "2 ON " + testTable + " (int_col)";
stmt = conn.prepareStatement(ddl);
stmt.execute();
fail("Should have caught exception");
@@ -472,9 +479,11 @@ public class IndexMetadataIT extends BaseHBaseManagedTimeIT {
@Test
public void testBinaryNonnullableIndex() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
+ String testTable = generateRandomString();
+ String indexName = generateRandomString();
try {
String ddl =
- "CREATE TABLE test_table ( "
+ "CREATE TABLE " + testTable + " ( "
+ "v1 BINARY(64) NOT NULL, "
+ "v2 VARCHAR, "
+ "v3 BINARY(64), "
@@ -484,68 +493,72 @@ public class IndexMetadataIT extends BaseHBaseManagedTimeIT {
conn.commit();
try {
- conn.createStatement().execute("CREATE INDEX idx ON test_table (v3) INCLUDE (v4)");
+ conn.createStatement().execute("CREATE INDEX " + indexName + " ON " + testTable + " (v3) INCLUDE (v4)");
fail("Should have seen SQLExceptionCode.VARBINARY_IN_ROW_KEY");
} catch (SQLException e) {
assertEquals(SQLExceptionCode.VARBINARY_IN_ROW_KEY.getErrorCode(), e.getErrorCode());
}
try {
- conn.createStatement().execute("CREATE INDEX idx3 ON test_table (v2, v3) INCLUDE (v4)");
+ conn.createStatement().execute("CREATE INDEX " + indexName + "3 ON " + testTable + " (v2, v3) INCLUDE (v4)");
fail("Should have seen SQLExceptionCode.VARBINARY_IN_ROW_KEY");
} catch (SQLException e) {
assertEquals(SQLExceptionCode.VARBINARY_IN_ROW_KEY.getErrorCode(), e.getErrorCode());
}
- conn.createStatement().execute("CREATE INDEX idx4 ON test_table (v4) INCLUDE (v2)");
+ conn.createStatement().execute("CREATE INDEX " + indexName + "4 ON " + testTable + " (v4) INCLUDE (v2)");
conn.commit();
- conn.createStatement().execute("CREATE INDEX varbinLastInRow ON test_table (v1, v3)");
+ conn.createStatement().execute("CREATE INDEX varbinLastInRow ON " + testTable + " (v1, v3)");
conn.commit();
- conn.createStatement().execute( "CREATE INDEX idx5 ON test_table (v2) INCLUDE (v4, v3, v1)");
+ conn.createStatement().execute( "CREATE INDEX " + indexName + "5 ON " + testTable + " (v2) INCLUDE (v4, v3, v1)");
conn.commit();
conn.createStatement().executeQuery(
- "select v1,v2,v3,v4 FROM test_table where v2 = 'abc' and v3 != 'a'");
+ "select v1,v2,v3,v4 FROM " + testTable + " where v2 = 'abc' and v3 != 'a'");
} finally {
conn.close();
}
}
-
+
@Test
public void testAsyncCreatedDate() throws Exception {
Date d0 = new Date(System.currentTimeMillis());
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
- String ddl = "create table test_table (k varchar primary key, v1 varchar, v2 varchar, v3 varchar)";
+ String testTable = generateRandomString();
+
+
+ String ddl = "create table " + testTable + " (k varchar primary key, v1 varchar, v2 varchar, v3 varchar)";
PreparedStatement stmt = conn.prepareStatement(ddl);
stmt.execute();
+ String indexName = "ASYNCIND_" + generateRandomString();
- ddl = "CREATE INDEX IDX1 ON test_table (v1) ASYNC";
+ ddl = "CREATE INDEX " + indexName + "1 ON " + testTable + " (v1) ASYNC";
stmt = conn.prepareStatement(ddl);
stmt.execute();
- ddl = "CREATE INDEX IDX2 ON test_table (v2) ASYNC";
+ ddl = "CREATE INDEX " + indexName + "2 ON " + testTable + " (v2) ASYNC";
stmt = conn.prepareStatement(ddl);
stmt.execute();
- ddl = "CREATE INDEX IDX3 ON test_table (v3)";
+ ddl = "CREATE INDEX " + indexName + "3 ON " + testTable + " (v3)";
stmt = conn.prepareStatement(ddl);
stmt.execute();
ResultSet rs = conn.createStatement().executeQuery(
"select table_name, " + PhoenixDatabaseMetaData.ASYNC_CREATED_DATE + " " +
"from system.catalog (" + PhoenixDatabaseMetaData.ASYNC_CREATED_DATE + " " + PDate.INSTANCE.getSqlTypeName() + ") " +
- "where " + PhoenixDatabaseMetaData.ASYNC_CREATED_DATE + " is not null " +
+ "where " + PhoenixDatabaseMetaData.ASYNC_CREATED_DATE + " is not null and table_name like 'ASYNCIND_%' " +
"order by " + PhoenixDatabaseMetaData.ASYNC_CREATED_DATE
);
assertTrue(rs.next());
- assertEquals("IDX1", rs.getString(1));
+ assertEquals(indexName + "1", rs.getString(1));
Date d1 = rs.getDate(2);
assertTrue(d1.after(d0));
assertTrue(rs.next());
- assertEquals("IDX2", rs.getString(1));
+ assertEquals(indexName + "2", rs.getString(1));
Date d2 = rs.getDate(2);
assertTrue(d2.after(d1));
assertFalse(rs.next());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/14dab2f4/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
index 416c452..f254c49 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
@@ -17,6 +17,8 @@
*/
package org.apache.phoenix.end2end.index;
+import static org.apache.phoenix.util.MetaDataUtil.getViewIndexSequenceName;
+import static org.apache.phoenix.util.MetaDataUtil.getViewIndexSequenceSchemaName;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -49,7 +51,7 @@ import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.Pair;
import org.apache.phoenix.compile.QueryPlan;
import org.apache.phoenix.coprocessor.BaseScannerRegionObserver;
-import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT;
+import org.apache.phoenix.end2end.BaseHBaseManagedTimeTableReuseIT;
import org.apache.phoenix.end2end.Shadower;
import org.apache.phoenix.hbase.index.IndexRegionSplitPolicy;
import org.apache.phoenix.jdbc.PhoenixConnection;
@@ -57,10 +59,8 @@ import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData;
import org.apache.phoenix.jdbc.PhoenixStatement;
import org.apache.phoenix.query.QueryConstants;
import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.schema.PTable;
+import org.apache.phoenix.schema.*;
import org.apache.phoenix.schema.PTable.IndexType;
-import org.apache.phoenix.schema.PTableKey;
-import org.apache.phoenix.schema.TableNotFoundException;
import org.apache.phoenix.util.ByteUtil;
import org.apache.phoenix.util.QueryUtil;
import org.apache.phoenix.util.ReadOnlyProps;
@@ -75,24 +75,16 @@ import org.junit.runners.Parameterized.Parameters;
import com.google.common.collect.Maps;
@RunWith(Parameterized.class)
-public class LocalIndexIT extends BaseHBaseManagedTimeIT {
-
- private String schemaName="TEST";
+public class LocalIndexIT extends BaseHBaseManagedTimeTableReuseIT {
private boolean isNamespaceMapped;
- private String tableName = schemaName + ".T";
- private String indexTableName = schemaName + ".I";
- private String indexName = "I";
- private String indexPhysicalTableName;
- private TableName physicalTableName;
+ String schemaName="TEST";
public LocalIndexIT(boolean isNamespaceMapped) {
this.isNamespaceMapped = isNamespaceMapped;
- this.physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
- this.indexPhysicalTableName = this.physicalTableName.getNameAsString();
}
@BeforeClass
- @Shadower(classBeingShadowed = BaseHBaseManagedTimeIT.class)
+ @Shadower(classBeingShadowed = BaseHBaseManagedTimeTableReuseIT.class)
public static void doSetup() throws Exception {
Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
// Drop the HBase table metadata for this test
@@ -125,6 +117,10 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testLocalIndexRoundTrip() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ String indexTableName = schemaName + "." + indexName;
+
createBaseTable(tableName, null, null);
Connection conn1 = DriverManager.getConnection(getUrl());
conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)");
@@ -145,6 +141,9 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testLocalIndexCreationWithSplitsShouldFail() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+
createBaseTable(tableName, null, null);
Connection conn1 = getConnection();
Connection conn2 = getConnection();
@@ -161,6 +160,9 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testLocalIndexCreationWithSaltingShouldFail() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+
createBaseTable(tableName, null, null);
Connection conn1 = getConnection();
Connection conn2 = getConnection();
@@ -177,6 +179,11 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testLocalIndexTableRegionSplitPolicyAndSplitKeys() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
+ String indexPhysicalTableName = physicalTableName.getNameAsString();
+
createBaseTable(tableName, null,"('e','i','o')");
Connection conn1 = getConnection();
Connection conn2 = getConnection();
@@ -202,23 +209,34 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
return DriverManager.getConnection(getUrl(),props);
}
+
@Test
public void testDropLocalIndexTable() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
createBaseTable(tableName, null, null);
+
+ String sequenceName = getViewIndexSequenceName(PNameFactory.newName(tableName), null, isNamespaceMapped);
+ String sequenceSchemaName = getViewIndexSequenceSchemaName(PNameFactory.newName(tableName), isNamespaceMapped);
+
Connection conn1 = getConnection();
Connection conn2 = getConnection();
conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)");
+ verifySequence(null, sequenceName, sequenceSchemaName, true);
conn2.createStatement().executeQuery("SELECT * FROM " + tableName).next();
conn1.createStatement().execute("DROP TABLE "+ tableName);
- ResultSet rs = conn2.createStatement().executeQuery("SELECT "
- + PhoenixDatabaseMetaData.SEQUENCE_SCHEMA + ","
- + PhoenixDatabaseMetaData.SEQUENCE_NAME
- + " FROM " + PhoenixDatabaseMetaData.SYSTEM_SEQUENCE);
- assertFalse("View index sequences should be deleted.", rs.next());
+
+ verifySequence(null, sequenceName, sequenceSchemaName, false);
}
@Test
public void testPutsToLocalIndexTable() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ String indexTableName = schemaName + "." + indexName;
+ TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
+ String indexPhysicalTableName = physicalTableName.getNameAsString();
+
createBaseTable(tableName, null, "('e','i','o')");
Connection conn1 = getConnection();
conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)");
@@ -253,6 +271,12 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testBuildIndexWhenUserTableAlreadyHasData() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ String indexTableName = schemaName + "." + indexName;
+ TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
+ String indexPhysicalTableName = physicalTableName.getNameAsString();
+
createBaseTable(tableName, null, "('e','i','o')");
Connection conn1 = DriverManager.getConnection(getUrl());
conn1.createStatement().execute("UPSERT INTO "+tableName+" values('b',1,2,4,'z')");
@@ -287,6 +311,12 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testLocalIndexScan() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ String indexTableName = schemaName + "." + indexName;
+ TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
+ String indexPhysicalTableName = physicalTableName.getNameAsString();
+
createBaseTable(tableName, null, "('e','i','o')");
Connection conn1 = DriverManager.getConnection(getUrl());
try{
@@ -419,6 +449,12 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testLocalIndexScanJoinColumnsFromDataTable() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ String indexTableName = schemaName + "." + indexName;
+ TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
+ String indexPhysicalTableName = physicalTableName.getNameAsString();
+
createBaseTable(tableName, null, "('e','i','o')");
Connection conn1 = getConnection();
try{
@@ -553,6 +589,10 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testIndexPlanSelectionIfBothGlobalAndLocalIndexesHasSameColumnsAndOrder() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ String indexTableName = schemaName + "." + indexName;
+
createBaseTable(tableName, null, "('e','i','o')");
Connection conn1 = getConnection();
conn1.createStatement().execute("UPSERT INTO "+tableName+" values('b',1,2,4,'z')");
@@ -570,8 +610,12 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
conn1.close();
}
+
@Test
public void testDropLocalIndexShouldDeleteDataFromLocalIndexTable() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+
createBaseTable(tableName, null, "('e','i','o')");
Connection conn1 = DriverManager.getConnection(getUrl());
try {
@@ -583,7 +627,7 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)");
conn1.createStatement().execute("DROP INDEX " + indexName + " ON " + tableName);
HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin();
- HTable table = new HTable(admin.getConfiguration() ,TableName.valueOf(TestUtil.DEFAULT_DATA_TABLE_NAME));
+ HTable table = new HTable(admin.getConfiguration() ,TableName.valueOf(tableName));
Pair<byte[][], byte[][]> startEndKeys = table.getStartEndKeys();
byte[][] startKeys = startEndKeys.getFirst();
byte[][] endKeys = startEndKeys.getSecond();
@@ -614,6 +658,10 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testLocalIndexRowsShouldBeDeletedWhenUserTableRowsDeleted() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ String indexTableName = schemaName + "." + indexName;
+
createBaseTable(tableName, null, "('e','i','o')");
Connection conn1 = DriverManager.getConnection(getUrl());
try {
@@ -636,6 +684,9 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testScanWhenATableHasMultipleLocalIndexes() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+
createBaseTable(tableName, null, "('e','i','o')");
Connection conn1 = DriverManager.getConnection(getUrl());
try {
@@ -658,6 +709,9 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testLocalIndexesOnTableWithImmutableRows() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+
createBaseTable(tableName, null, "('e','i','o')");
Connection conn1 = getConnection();
try {
@@ -701,6 +755,10 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testLocalIndexScanWithInList() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ String indexTableName = schemaName + "." + indexName;
+
createBaseTable(tableName, null, "('e','i','o')");
Connection conn1 = DriverManager.getConnection(getUrl());
try{
@@ -731,13 +789,15 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
Connection conn1 = DriverManager.getConnection(getUrl());
try{
Statement statement = conn1.createStatement();
- statement.execute("create table example (id integer not null,fn varchar,"
+ String tableName = generateRandomString();
+ String indexName = generateRandomString();
+ statement.execute("create table " + tableName + " (id integer not null,fn varchar,"
+ "ln varchar constraint pk primary key(id)) DEFAULT_COLUMN_FAMILY='F'");
- statement.execute("upsert into example values(1,'fn','ln')");
+ statement.execute("upsert into " + tableName + " values(1,'fn','ln')");
statement
- .execute("create local index my_idx on example (fn)");
- statement.execute("upsert into example values(2,'fn1','ln1')");
- ResultSet rs = statement.executeQuery("SELECT COUNT(*) FROM my_idx");
+ .execute("create local index " + indexName + " on " + tableName + " (fn)");
+ statement.execute("upsert into " + tableName + " values(2,'fn1','ln1')");
+ ResultSet rs = statement.executeQuery("SELECT COUNT(*) FROM " + indexName );
assertTrue(rs.next());
} finally {
conn1.close();
@@ -746,6 +806,11 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testLocalIndexScanAfterRegionSplit() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
+ String indexPhysicalTableName = physicalTableName.getNameAsString();
+
if (isNamespaceMapped) { return; }
createBaseTable(tableName, null, "('e','j','o')");
Connection conn1 = getConnection();
@@ -838,6 +903,9 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testLocalIndexScanWithSmallChunks() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+
createBaseTable(tableName, 3, null);
Properties props = new Properties();
props.setProperty(QueryServices.SCAN_RESULT_CHUNK_SIZE, "2");
@@ -881,6 +949,11 @@ public class LocalIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testLocalIndexScanAfterRegionsMerge() throws Exception {
+ String tableName = schemaName + "." + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped);
+ String indexPhysicalTableName = physicalTableName.getNameAsString();
+
if (isNamespaceMapped) { return; }
createBaseTable(tableName, null, "('e','j','o')");
Connection conn1 = getConnection();
http://git-wip-us.apache.org/repos/asf/phoenix/blob/14dab2f4/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
index 6a49076..0fde1c6 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java
@@ -44,7 +44,7 @@ import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.Threads;
-import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT;
+import org.apache.phoenix.end2end.BaseHBaseManagedTimeTableReuseIT;
import org.apache.phoenix.end2end.Shadower;
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.query.QueryServices;
@@ -66,30 +66,24 @@ import com.google.common.collect.Maps;
import com.google.common.primitives.Doubles;
@RunWith(Parameterized.class)
-public class MutableIndexIT extends BaseHBaseManagedTimeIT {
+public class MutableIndexIT extends BaseHBaseManagedTimeTableReuseIT {
protected final boolean localIndex;
private final String tableDDLOptions;
- private final String tableName;
- private final String indexName;
- private final String fullTableName;
- private final String fullIndexName;
+ private final boolean transactional;
public MutableIndexIT(boolean localIndex, boolean transactional) {
this.localIndex = localIndex;
+ this.transactional = transactional;
StringBuilder optionBuilder = new StringBuilder();
if (transactional) {
optionBuilder.append("TRANSACTIONAL=true");
}
this.tableDDLOptions = optionBuilder.toString();
- this.tableName = TestUtil.DEFAULT_DATA_TABLE_NAME + ( transactional ? "_TXN" : "");
- this.indexName = "IDX" + ( transactional ? "_TXN" : "");
- this.fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
- this.fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
}
@BeforeClass
- @Shadower(classBeingShadowed = BaseHBaseManagedTimeIT.class)
+ @Shadower(classBeingShadowed = BaseHBaseManagedTimeTableReuseIT.class)
public static void doSetup() throws Exception {
Map<String,String> props = Maps.newHashMapWithExpectedSize(1);
props.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.toString(true));
@@ -110,7 +104,12 @@ public class MutableIndexIT extends BaseHBaseManagedTimeIT {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
- createMultiCFTestTable(fullTableName, tableDDLOptions);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
+
+ createMultiCFTestTable(fullTableName, tableDDLOptions);
populateMultiCFTestTable(fullTableName);
PreparedStatement stmt = conn.prepareStatement("CREATE " + (localIndex ? " LOCAL " : "") + " INDEX " + indexName + " ON " + fullTableName
+ " (char_col1 ASC, int_col1 ASC) INCLUDE (long_col1, long_col2)");
@@ -203,7 +202,12 @@ public class MutableIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testCoveredColumns() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
+
conn.setAutoCommit(false);
String query;
ResultSet rs;
@@ -308,6 +312,10 @@ public class MutableIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testCompoundIndexKey() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
String query;
@@ -423,6 +431,10 @@ public class MutableIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testMultipleUpdatesToSingleRow() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
String query;
@@ -503,6 +515,9 @@ public class MutableIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testUpsertingNullForIndexedColumns() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName);
String testTableName = tableName + "_" + System.currentTimeMillis();
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
@@ -586,8 +601,10 @@ public class MutableIndexIT extends BaseHBaseManagedTimeIT {
public void testAlterTableWithImmutability() throws Exception {
String query;
ResultSet rs;
- String tableName = TestUtil.DEFAULT_DATA_TABLE_NAME + "_" + System.currentTimeMillis();
- String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ String tableName = "TBL_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+
+
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
@@ -623,16 +640,19 @@ public class MutableIndexIT extends BaseHBaseManagedTimeIT {
props.setProperty(QueryServices.SCAN_CACHE_SIZE_ATTRIB, Integer.toString(2));
props.put(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.toString(false));
Connection conn1 = DriverManager.getConnection(getUrl());
- HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin();
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin();
dropTable(admin, conn1);
try{
String[] strings = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
- createTableAndLoadData(conn1, strings, isReverse);
+ createTableAndLoadData(conn1, tableName, indexName, strings, isReverse);
ResultSet rs = conn1.createStatement().executeQuery("SELECT * FROM " + tableName);
assertTrue(rs.next());
- splitDuringScan(conn1, strings, admin, isReverse);
+ splitDuringScan(conn1, tableName, indexName, strings, admin, isReverse);
dropTable(admin, conn1);
+
} finally {
dropTable(admin, conn1);
if(conn1 != null) conn1.close();
@@ -641,23 +661,22 @@ public class MutableIndexIT extends BaseHBaseManagedTimeIT {
}
private void dropTable(HBaseAdmin admin, Connection conn) throws SQLException, IOException {
- try {
- conn.createStatement().execute("DROP TABLE IF EXISTS "+ tableName);
- } finally {
- if(admin.tableExists(tableName)) {
- admin.disableTable(TableName.valueOf(tableName));
- admin.deleteTable(TableName.valueOf(tableName));
- }
- if(!localIndex) {
- if(admin.tableExists(indexName)) {
- admin.disableTable(TableName.valueOf(indexName));
- admin.deleteTable(TableName.valueOf(indexName));
- }
- }
+
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ conn.createStatement().execute("DROP TABLE IF EXISTS "+ tableName);
+ if(admin.tableExists(tableName)) {
+ admin.disableTable(TableName.valueOf(tableName));
+ admin.deleteTable(TableName.valueOf(tableName));
+ }
+ if(!localIndex && admin.tableExists(indexName)) {
+ admin.disableTable(indexName);
+ admin.deleteTable(indexName);
+
}
}
- private void createTableAndLoadData(Connection conn1, String[] strings, boolean isReverse) throws SQLException {
+ private void createTableAndLoadData(Connection conn1, String tableName, String indexName, String[] strings, boolean isReverse) throws SQLException {
createBaseTable(conn1, tableName, null);
for (int i = 0; i < 26; i++) {
conn1.createStatement().execute(
@@ -673,6 +692,8 @@ public class MutableIndexIT extends BaseHBaseManagedTimeIT {
public void testIndexHalfStoreFileReader() throws Exception {
Connection conn1 = DriverManager.getConnection(getUrl());
HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin();
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
try {
dropTable(admin, conn1);
createBaseTable(conn1, tableName, "('e')");
@@ -738,9 +759,11 @@ public class MutableIndexIT extends BaseHBaseManagedTimeIT {
}
}
- private List<HRegionInfo> splitDuringScan(Connection conn1, String[] strings, HBaseAdmin admin, boolean isReverse)
+
+ private List<HRegionInfo> splitDuringScan(Connection conn1, String tableName, String indexName, String[] strings, HBaseAdmin admin, boolean isReverse)
throws SQLException, IOException, InterruptedException {
ResultSet rs;
+
String query = "SELECT t_id,k1,v1 FROM " + tableName;
rs = conn1.createStatement().executeQuery(query);
String[] tIdColumnValues = new String[26];
@@ -815,9 +838,10 @@ public class MutableIndexIT extends BaseHBaseManagedTimeIT {
@Test
public void testTenantSpecificConnection() throws Exception {
- String tableName = TestUtil.DEFAULT_DATA_TABLE_NAME + "_" + System.currentTimeMillis();
- String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+ String tableName = "TBL_" + generateRandomString();
+ String indexName = "IDX_" + generateRandomString();
+ String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName);
+ Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(false);
// create data table