private boolean assertDatabaseExistence(VerificationState state, String name) { if (!catalog.existDatabase(name)) { state.addVerification(new UndefinedDatabaseException(name)); return false; } return true; }
private boolean assertDatabaseNoExistence(VerificationState state, String name) { if (catalog.existDatabase(name)) { state.addVerification(new DuplicateDatabaseException(name)); return false; } return true; }
private boolean assertDatabaseExistence(VerificationState state, String name) { if (!catalog.existDatabase(name)) { state.addVerification(new UndefinedDatabaseException(name)); return false; } return true; }
private boolean assertDatabaseNoExistence(VerificationState state, String name) { if (catalog.existDatabase(name)) { state.addVerification(new DuplicateDatabaseException(name)); return false; } return true; }
@Override public Response run(JerseyResourceDelegateContext context) { JerseyResourceDelegateContextKey<MasterContext> masterContextKey = JerseyResourceDelegateContextKey.valueOf(JerseyResourceDelegateUtil.MasterContextKey, MasterContext.class); MasterContext masterContext = context.get(masterContextKey); JerseyResourceDelegateContextKey<String> databaseNameKey = JerseyResourceDelegateContextKey.valueOf(databaseNameKeyName, String.class); String databaseName = context.get(databaseNameKey); CatalogService catalogService = masterContext.getCatalog(); if (!catalogService.existDatabase(databaseName)) { return Response.status(Status.NOT_FOUND).build(); } Collection<String> tableNames = catalogService.getAllTableNames(databaseName); Map<String, Collection<String>> tableNamesMap = new HashMap<String, Collection<String>>(); tableNamesMap.put(tablesKeyName, tableNames); return Response.ok(tableNamesMap).build(); }
@Override public Response run(JerseyResourceDelegateContext context) { JerseyResourceDelegateContextKey<MasterContext> masterContextKey = JerseyResourceDelegateContextKey.valueOf(JerseyResourceDelegateUtil.MasterContextKey, MasterContext.class); MasterContext masterContext = context.get(masterContextKey); JerseyResourceDelegateContextKey<String> databaseNameKey = JerseyResourceDelegateContextKey.valueOf(databaseNameKeyName, String.class); String databaseName = context.get(databaseNameKey); CatalogService catalogService = masterContext.getCatalog(); if (!catalogService.existDatabase(databaseName)) { return Response.status(Status.NOT_FOUND).build(); } Collection<String> tableNames = catalogService.getAllTableNames(databaseName); Map<String, Collection<String>> tableNamesMap = new HashMap<>(); tableNamesMap.put(tablesKeyName, tableNames); return Response.ok(tableNamesMap).build(); }
public void dropDatabase(QueryContext queryContext, String databaseName, boolean ifExists) throws UndefinedDatabaseException, InsufficientPrivilegeException, CannotDropCurrentDatabaseException { boolean exists = catalog.existDatabase(databaseName); if (!exists) { if (ifExists) { // DROP DATABASE IF EXISTS LOG.info("database \"" + databaseName + "\" does not exists."); return; } else { // Otherwise, it causes an exception. throw new UndefinedDatabaseException(databaseName); } } if (queryContext.getCurrentDatabase().equals(databaseName)) { throw new CannotDropCurrentDatabaseException(); } catalog.dropDatabase(databaseName); }
public void dropDatabase(QueryContext queryContext, String databaseName, boolean ifExists) throws UndefinedDatabaseException, InsufficientPrivilegeException, CannotDropCurrentDatabaseException { boolean exists = catalog.existDatabase(databaseName); if (!exists) { if (ifExists) { // DROP DATABASE IF EXISTS LOG.info("database \"" + databaseName + "\" does not exists."); return; } else { // Otherwise, it causes an exception. throw new UndefinedDatabaseException(databaseName); } } if (queryContext.getCurrentDatabase().equals(databaseName)) { throw new CannotDropCurrentDatabaseException(); } catalog.dropDatabase(databaseName); }
@Override public Response run(JerseyResourceDelegateContext context) { JerseyResourceDelegateContextKey<MasterContext> masterContextKey = JerseyResourceDelegateContextKey.valueOf(JerseyResourceDelegateUtil.MasterContextKey, MasterContext.class); MasterContext masterContext = context.get(masterContextKey); JerseyResourceDelegateContextKey<String> databaseNameKey = JerseyResourceDelegateContextKey.valueOf(databaseNameKeyName, String.class); String databaseName = context.get(databaseNameKey); if (databaseName.isEmpty()) { return ResourcesUtil.createBadRequestResponse(LOG, "DatabaseName is empty string."); } CatalogService catalogService = masterContext.getCatalog(); if (!catalogService.existDatabase(databaseName)) { return Response.status(Status.NOT_FOUND).build(); } try { catalogService.dropDatabase(databaseName); return Response.ok().build(); } catch (TajoException e) { return ResourcesUtil.createExceptionResponse(LOG, "Unable to drop a database " + databaseName); } } }
@Override public Response run(JerseyResourceDelegateContext context) { JerseyResourceDelegateContextKey<MasterContext> masterContextKey = JerseyResourceDelegateContextKey.valueOf(JerseyResourceDelegateUtil.MasterContextKey, MasterContext.class); MasterContext masterContext = context.get(masterContextKey); JerseyResourceDelegateContextKey<String> databaseNameKey = JerseyResourceDelegateContextKey.valueOf(databaseNameKeyName, String.class); String databaseName = context.get(databaseNameKey); if (databaseName.isEmpty()) { return ResourcesUtil.createBadRequestResponse(LOG, "DatabaseName is empty string."); } CatalogService catalogService = masterContext.getCatalog(); if (!catalogService.existDatabase(databaseName)) { return Response.status(Status.NOT_FOUND).build(); } try { catalogService.dropDatabase(databaseName); return Response.ok().build(); } catch (TajoException e) { return ResourcesUtil.createExceptionResponse(LOG, "Unable to drop a database " + databaseName); } } }
public void createDatabase(@Nullable QueryContext queryContext, String databaseName, @Nullable String tablespace, boolean ifNotExists) throws IOException, DuplicateDatabaseException { String tablespaceName; if (tablespace == null) { tablespaceName = DEFAULT_TABLESPACE_NAME; } else { tablespaceName = tablespace; } // CREATE DATABASE IF NOT EXISTS boolean exists = catalog.existDatabase(databaseName); if (exists) { if (ifNotExists) { LOG.info("database \"" + databaseName + "\" is already exists."); return; } else { throw new DuplicateDatabaseException(databaseName); } } String normalized = databaseName; Path databaseDir = StorageUtil.concatPath(context.getConf().getVar(TajoConf.ConfVars.WAREHOUSE_DIR), normalized); FileSystem fs = databaseDir.getFileSystem(context.getConf()); fs.mkdirs(databaseDir); catalog.createDatabase(databaseName, tablespaceName); LOG.info("database \"" + databaseName + "\" created."); }
@Override public Response run(JerseyResourceDelegateContext context) { JerseyResourceDelegateContextKey<String> databaseNameKey = JerseyResourceDelegateContextKey.valueOf(databaseNameKeyName, String.class); String databaseName = context.get(databaseNameKey).toLowerCase(); JerseyResourceDelegateContextKey<String> tableNameKey = JerseyResourceDelegateContextKey.valueOf(tableNameKeyName, String.class); String tableName = context.get(tableNameKey).toLowerCase(); JerseyResourceDelegateContextKey<MasterContext> masterContextKey = JerseyResourceDelegateContextKey.valueOf(JerseyResourceDelegateUtil.MasterContextKey, MasterContext.class); MasterContext masterContext = context.get(masterContextKey); if (CatalogUtil.isFQTableName(tableName)) { tableName = CatalogUtil.extractSimpleName(tableName); } CatalogService catalogService = masterContext.getCatalog(); if (!catalogService.existDatabase(databaseName) || !catalogService.existsTable(databaseName, tableName)) { return Response.status(Status.NOT_FOUND).build(); } TableDesc tableDesc = null; try { tableDesc = catalogService.getTableDesc(databaseName, tableName); return Response.ok(tableDesc).build(); } catch (TajoException e) { return ResourcesUtil.createExceptionResponse(LOG, e.getMessage()); } } }
@Override public ReturnState existDatabase(RpcController controller, SessionedStringProto request) throws ServiceException { try { context.getSessionManager().touch(request.getSessionId().getId()); if (catalog.existDatabase(request.getValue())) { return OK; } else { return errUndefinedDatabase(request.getValue()); } } catch (Throwable t) { printStackTraceIfError(LOG, t); return returnError(t); } }
@Override public ReturnState existDatabase(RpcController controller, SessionedStringProto request) throws ServiceException { try { context.getSessionManager().touch(request.getSessionId().getId()); if (catalog.existDatabase(request.getValue())) { return OK; } else { return errUndefinedDatabase(request.getValue()); } } catch (Throwable t) { printStackTraceIfError(LOG, t); return returnError(t); } }
@Override public ReturnState selectDatabase(RpcController controller, SessionedStringProto request) throws ServiceException { try { String sessionId = request.getSessionId().getId(); String databaseName = request.getValue(); if (context.getCatalog().existDatabase(databaseName)) { context.getSessionManager().getSession(sessionId).selectDatabase(databaseName); return OK; } else { return errUndefinedDatabase(databaseName); } } catch (Throwable t) { printStackTraceIfError(LOG, t); return returnError(t); } }
@Override public ReturnState selectDatabase(RpcController controller, SessionedStringProto request) throws ServiceException { try { String sessionId = request.getSessionId().getId(); String databaseName = request.getValue(); if (context.getCatalog().existDatabase(databaseName)) { context.getSessionManager().getSession(sessionId).selectDatabase(databaseName); return OK; } else { return errUndefinedDatabase(databaseName); } } catch (Throwable t) { printStackTraceIfError(LOG, t); return returnError(t); } }
public void execSetSession(Session session, LogicalPlan plan, SubmitQueryResponse.Builder response) { SetSessionNode setSessionNode = ((LogicalRootNode) plan.getRootBlock().getRoot()).getChild(); final String varName = setSessionNode.getName(); // SET CATALOG 'XXX' if (varName.equals(SessionVars.CURRENT_DATABASE.name())) { String databaseName = setSessionNode.getValue(); if (catalog.existDatabase(databaseName)) { session.selectDatabase(setSessionNode.getValue()); } else { response.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto()); response.setState(errUndefinedDatabase(databaseName)); } // others } else { if (setSessionNode.hasValue()) { session.setVariable(varName, setSessionNode.getValue()); } else { session.removeVariable(varName); } } response.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto()); response.setState(OK); }
public void execSetSession(Session session, LogicalPlan plan, SubmitQueryResponse.Builder response) { SetSessionNode setSessionNode = ((LogicalRootNode) plan.getRootBlock().getRoot()).getChild(); final String varName = setSessionNode.getName(); // SET CATALOG 'XXX' if (varName.equals(SessionVars.CURRENT_DATABASE.name())) { String databaseName = setSessionNode.getValue(); if (catalog.existDatabase(databaseName)) { session.selectDatabase(setSessionNode.getValue()); } else { response.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto()); response.setState(errUndefinedDatabase(databaseName)); } // others } else { if (setSessionNode.hasValue()) { session.setVariable(varName, setSessionNode.getValue()); } else { session.removeVariable(varName); } } response.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto()); response.setState(OK); }
@Override public CreateSessionResponse createSession(RpcController controller, CreateSessionRequest request) throws ServiceException { try { // create a new session with base database name. If no database name is give, we use default database. String databaseName = request.hasBaseDatabaseName() ? request.getBaseDatabaseName() : DEFAULT_DATABASE_NAME; if (!context.getCatalog().existDatabase(databaseName)) { LOG.info("Session creation is canceled due to absent base database \"" + databaseName + "\"."); throw new UndefinedDatabaseException(databaseName); } String sessionId = context.getSessionManager().createSession(request.getUsername(), databaseName); CreateSessionResponse.Builder builder = CreateSessionResponse.newBuilder(); builder.setState(OK); builder.setSessionId(TajoIdProtos.SessionIdProto.newBuilder().setId(sessionId).build()); builder.setSessionVars(ProtoUtil.convertFromMap(context.getSessionManager().getAllVariables(sessionId))); return builder.build(); } catch (Throwable t) { printStackTraceIfError(LOG, t); CreateSessionResponse.Builder builder = CreateSessionResponse.newBuilder(); builder.setState(returnError(t)); return builder.build(); } }
@Override public CreateSessionResponse createSession(RpcController controller, CreateSessionRequest request) throws ServiceException { try { // create a new session with base database name. If no database name is give, we use default database. String databaseName = request.hasBaseDatabaseName() ? request.getBaseDatabaseName() : DEFAULT_DATABASE_NAME; if (!context.getCatalog().existDatabase(databaseName)) { LOG.info("Session creation is canceled due to absent base database \"" + databaseName + "\"."); throw new UndefinedDatabaseException(databaseName); } String sessionId = context.getSessionManager().createSession(request.getUsername(), databaseName); CreateSessionResponse.Builder builder = CreateSessionResponse.newBuilder(); builder.setState(OK); builder.setSessionId(TajoIdProtos.SessionIdProto.newBuilder().setId(sessionId).build()); builder.setSessionVars(ProtoUtil.convertFromMap(context.getSessionManager().getAllVariables(sessionId))); return builder.build(); } catch (Throwable t) { printStackTraceIfError(LOG, t); CreateSessionResponse.Builder builder = CreateSessionResponse.newBuilder(); builder.setState(returnError(t)); return builder.build(); } }