@Override public ReturnState existIndexWithColumns(RpcController controller, GetIndexWithColumnsRequest request) throws ServiceException { try { context.getSessionManager().touch(request.getSessionId().getId()); Session session = context.getSessionManager().getSession(request.getSessionId().getId()); String tableName, databaseName; if (IdentifierUtil.isFQTableName(request.getTableName())) { String [] splitted = IdentifierUtil.splitFQTableName(request.getTableName()); databaseName = splitted[0]; tableName = splitted[1]; } else { databaseName = session.getCurrentDatabase(); tableName = request.getTableName(); } String[] columnNames = new String[request.getColumnNamesCount()]; columnNames = request.getColumnNamesList().toArray(columnNames); if (catalog.existIndexByColumnNames(databaseName, tableName, columnNames)) { return OK; } else { return errUndefinedIndex(tableName, request.getColumnNamesList()); } } catch (Throwable t) { return returnError(t); } }
@Override public ReturnState existIndexWithColumns(RpcController controller, GetIndexWithColumnsRequest request) throws ServiceException { try { context.getSessionManager().touch(request.getSessionId().getId()); Session session = context.getSessionManager().getSession(request.getSessionId().getId()); String tableName, databaseName; if (CatalogUtil.isFQTableName(request.getTableName())) { String [] splitted = CatalogUtil.splitFQTableName(request.getTableName()); databaseName = splitted[0]; tableName = splitted[1]; } else { databaseName = session.getCurrentDatabase(); tableName = request.getTableName(); } String[] columnNames = new String[request.getColumnNamesCount()]; columnNames = request.getColumnNamesList().toArray(columnNames); if (catalog.existIndexByColumnNames(databaseName, tableName, columnNames)) { return OK; } else { return errUndefinedIndex(tableName, request.getColumnNamesList()); } } catch (Throwable t) { return returnError(t); } }
@Test public final void testCreateIndexWithCondition() throws Exception { executeQuery(); assertTrue(catalog.existIndexByName(getCurrentDatabase(), "l_orderkey_partkey_lt10_idx")); assertTrue(catalog.existIndexByColumnNames(getCurrentDatabase(), "lineitem", new String[]{"l_orderkey", "l_partkey"})); executeString("drop index l_orderkey_partkey_lt10_idx"); assertFalse(catalog.existIndexByName(getCurrentDatabase(), "l_orderkey_partkey_lt10_idx")); assertIndexNotExist(getCurrentDatabase(), "l_orderkey_partkey_lt10_idx"); }
@Test public final void testCreateIndex() throws Exception { executeQuery(); assertTrue(catalog.existIndexByName(getCurrentDatabase(), "l_orderkey_idx")); assertTrue(catalog.existIndexByColumnNames(getCurrentDatabase(), "lineitem", new String[]{"l_orderkey"})); executeString("drop index l_orderkey_idx"); assertFalse(catalog.existIndexByName(getCurrentDatabase(), "l_orderkey_idx")); assertIndexNotExist(getCurrentDatabase(), "l_orderkey_idx"); }
@Test public final void testCreateIndexOnLocation() throws Exception { executeQuery(); assertTrue(catalog.existIndexByName(getCurrentDatabase(), "l_orderkey_idx")); assertTrue(catalog.existIndexByColumnNames(getCurrentDatabase(), "lineitem", new String[]{"l_orderkey"})); catalog.dropIndex(getCurrentDatabase(), "l_orderkey_idx"); assertFalse(catalog.existIndexByName(getCurrentDatabase(), "l_orderkey_idx")); executeString("create index l_orderkey_idx on lineitem (l_orderkey asc nulls first) location '/tajo/warehouse/default/l_orderkey_idx';"); assertTrue(catalog.existIndexByName(getCurrentDatabase(), "l_orderkey_idx")); assertTrue(catalog.existIndexByColumnNames(getCurrentDatabase(), "lineitem", new String[]{"l_orderkey"})); executeString("drop index l_orderkey_idx"); assertFalse(catalog.existIndexByName(getCurrentDatabase(), "l_orderkey_idx")); assertIndexNotExist(getCurrentDatabase(), "l_orderkey_idx"); } }
@Test public final void testCreateIndexOnMultiAttrs() throws Exception { executeQuery(); assertTrue(catalog.existIndexByName(getCurrentDatabase(), "l_orderkey_partkey_idx")); assertTrue(catalog.existIndexByColumnNames(getCurrentDatabase(), "lineitem", new String[]{"l_orderkey", "l_partkey"})); executeString("drop index l_orderkey_partkey_idx"); assertFalse(catalog.existIndexByName(getCurrentDatabase(), "l_orderkey_partkey_idx")); assertIndexNotExist(getCurrentDatabase(), "l_orderkey_partkey_idx"); }