public void dropIndex(final QueryContext queryContext, final DropIndexNode dropIndexNode) throws UndefinedIndexException, UndefinedDatabaseException { String databaseName, simpleIndexName; if (IdentifierUtil.isFQTableName(dropIndexNode.getIndexName())) { String[] splits = IdentifierUtil.splitFQTableName(dropIndexNode.getIndexName()); databaseName = splits[0]; simpleIndexName = splits[1]; } else { databaseName = queryContext.getCurrentDatabase(); simpleIndexName = dropIndexNode.getIndexName(); } if (!catalog.existIndexByName(databaseName, simpleIndexName)) { throw new UndefinedIndexException(simpleIndexName); } IndexDesc desc = catalog.getIndexByName(databaseName, simpleIndexName); catalog.dropIndex(databaseName, simpleIndexName); Path indexPath = new Path(desc.getIndexPath()); try { FileSystem fs = indexPath.getFileSystem(context.getConf()); fs.delete(indexPath, true); } catch (IOException e) { throw new InternalError(e.getMessage()); } LOG.info("Index " + simpleIndexName + " is dropped."); }
public void dropIndex(final QueryContext queryContext, final DropIndexNode dropIndexNode) throws UndefinedIndexException, UndefinedDatabaseException { String databaseName, simpleIndexName; if (CatalogUtil.isFQTableName(dropIndexNode.getIndexName())) { String[] splits = CatalogUtil.splitFQTableName(dropIndexNode.getIndexName()); databaseName = splits[0]; simpleIndexName = splits[1]; } else { databaseName = queryContext.getCurrentDatabase(); simpleIndexName = dropIndexNode.getIndexName(); } if (!catalog.existIndexByName(databaseName, simpleIndexName)) { throw new UndefinedIndexException(simpleIndexName); } IndexDesc desc = catalog.getIndexByName(databaseName, simpleIndexName); catalog.dropIndex(databaseName, simpleIndexName); Path indexPath = new Path(desc.getIndexPath()); try { FileSystem fs = indexPath.getFileSystem(context.getConf()); fs.delete(indexPath, true); } catch (IOException e) { throw new InternalError(e.getMessage()); } LOG.info("Index " + simpleIndexName + " is dropped."); }
@Override public ReturnState dropIndex(RpcController controller, SessionedStringProto request) throws ServiceException { try { context.getSessionManager().touch(request.getSessionId().getId()); Session session = context.getSessionManager().getSession(request.getSessionId().getId()); QueryContext queryContext = new QueryContext(conf, session); String indexName, databaseName; if (CatalogUtil.isFQTableName(request.getValue())) { String [] splitted = CatalogUtil.splitFQTableName(request.getValue()); databaseName = splitted[0]; indexName = splitted[1]; } else { databaseName = session.getCurrentDatabase(); indexName = request.getValue(); } catalog.dropIndex(databaseName, indexName); return OK; } catch (Throwable t) { return returnError(t); } } }
@Override public ReturnState dropIndex(RpcController controller, SessionedStringProto request) throws ServiceException { try { context.getSessionManager().touch(request.getSessionId().getId()); Session session = context.getSessionManager().getSession(request.getSessionId().getId()); QueryContext queryContext = new QueryContext(conf, session); String indexName, databaseName; if (IdentifierUtil.isFQTableName(request.getValue())) { String [] splitted = IdentifierUtil.splitFQTableName(request.getValue()); databaseName = splitted[0]; indexName = splitted[1]; } else { databaseName = session.getCurrentDatabase(); indexName = request.getValue(); } catalog.dropIndex(databaseName, indexName); return OK; } catch (Throwable t) { return returnError(t); } } }
@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"); } }