/** * Throw a TajoRuntimeException. It is usually used for unexpected exceptions. * * @param state ReturnState * @return True if no error. */ public static boolean ensureOk(ReturnState state) { if (isError(state)) { throw new TajoRuntimeException(state); } return true; }
@Override public boolean existIndexesByTable(final String databaseName, final String tableName) { try { final BlockingInterface stub = getStub(); return isSuccess( stub.existIndexesByTable(null, CatalogUtil.buildTableIdentifier(databaseName, tableName))); } catch (ServiceException e) { throw new RuntimeException(e); } }
@Override public ReturnState existIndexesByTable(RpcController controller, TableIdentifierProto request) throws ServiceException { String databaseName = request.getDatabaseName(); String tableName = request.getTableName(); try { // linked meta data do not support index. The request will be failed. if (linkedMetadataManager.existsDatabase(databaseName)) { return errUndefinedIndex(tableName); } } catch (Throwable t) { printStackTraceIfError(LOG, t); return returnError(t); } rlock.lock(); try { return store.existIndexesByTable(databaseName, tableName) ? OK : errUndefinedIndex(tableName); } catch (Throwable t) { printStackTraceIfError(LOG, t); return returnError(t); } finally { rlock.unlock(); } }
@Override public final boolean existDatabase(final String databaseName) { try { final BlockingInterface stub = getStub(); final ReturnState state = stub.existDatabase(null, ProtoUtil.convertString(databaseName)); if (isThisError(state, UNDEFINED_DATABASE)) { return false; } ensureOk(state); return true; } catch (ServiceException e) { throw new RuntimeException(e); } }
@Override public ReturnState existIndexByName(RpcController controller, IndexNameProto request) { String dbName = request.getDatabaseName(); String indexName = request.getIndexName(); try { // linked meta data do not support index. The request will be failed. if (linkedMetadataManager.existsDatabase(dbName)) { return errUndefinedIndexName(indexName); } } catch (Throwable t) { printStackTraceIfError(LOG, t); return returnError(t); } rlock.lock(); try { return store.existIndexByName(dbName, indexName) ? OK : errUndefinedIndexName(indexName); } catch (Throwable t) { printStackTraceIfError(LOG, t); return returnError(t); } finally { rlock.unlock(); } }
@Override public ReturnState existDatabase(RpcController controller, StringProto request) { String dbName = request.getValue(); if (linkedMetadataManager.existsDatabase(dbName)) { return OK; } if (metaDictionary.isSystemDatabase(dbName)) { return OK; } rlock.lock(); try { if (store.existDatabase(dbName)) { return OK; } else { return errUndefinedDatabase(dbName); } } catch (Throwable t) { printStackTraceIfError(LOG, t); return returnError(t); } finally { rlock.unlock(); } }
@Override public ReturnState existsTable(RpcController controller, TableIdentifierProto request) { String dbName = request.getDatabaseName(); String tbName = request.getTableName(); if (linkedMetadataManager.existsDatabase(dbName)) { return linkedMetadataManager.existsTable(dbName, "", tbName) ? OK : errUndefinedTable(tbName); } if (metaDictionary.isSystemDatabase(dbName)) { return metaDictionary.existTable(tbName) ? OK : errUndefinedTable(tbName); } else { rlock.lock(); try { if (store.existTable(dbName, tbName)) { return OK; } else { return errUndefinedTable(tbName); } } catch (Throwable t) { printStackTraceIfError(LOG, t); return returnError(t); } finally { rlock.unlock(); } } }
public static ReturnState errUndefinedDatabase(String dbName) { return returnError(ResultCode.UNDEFINED_DATABASE, dbName); }
.setState(errInvalidRpcCall("Table name is required")) .build(); } else { return TableResponse.newBuilder() .setState(errUndefinedTable(request.getValue())) .build(); printStackTraceIfError(LOG, t); return TableResponse.newBuilder() .setState(returnError(t)) .build();
@Override public List<TableDescriptorProto> getAllTables() { try { final BlockingInterface stub = getStub(); final GetTablesResponse response = stub.getAllTables(null, ProtoUtil.NULL_PROTO); ensureOk(response.getState()); return response.getTableList(); } catch (ServiceException e) { throw new RuntimeException(e); } }
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 boolean existSessionVariable(final String varname) { ReturnState state; try { final BlockingInterface stub = getTMStub(); state = stub.existSessionVariable(null, getSessionedString(varname)); } catch (ServiceException e) { throw new RuntimeException(e); } if (isThisError(state, NO_SUCH_SESSION_VARIABLE)) { return false; } ensureOk(state); return true; }
@Override public ReturnState existDatabase(RpcController controller, StringProto request) { String dbName = request.getValue(); if (linkedMetadataManager.existsDatabase(dbName)) { return OK; } if (metaDictionary.isSystemDatabase(dbName)) { return OK; } rlock.lock(); try { if (store.existDatabase(dbName)) { return OK; } else { return errUndefinedDatabase(dbName); } } catch (Throwable t) { printStackTraceIfError(LOG, t); return returnError(t); } finally { rlock.unlock(); } }
@Override public ReturnState existIndexByName(RpcController controller, IndexNameProto request) { String dbName = request.getDatabaseName(); String indexName = request.getIndexName(); try { // linked meta data do not support index. The request will be failed. if (linkedMetadataManager.existsDatabase(dbName)) { return errUndefinedIndexName(indexName); } } catch (Throwable t) { printStackTraceIfError(LOG, t); return returnError(t); } rlock.lock(); try { return store.existIndexByName(dbName, indexName) ? OK : errUndefinedIndexName(indexName); } catch (Throwable t) { printStackTraceIfError(LOG, t); return returnError(t); } finally { rlock.unlock(); } }
@Override public ReturnState existsTable(RpcController controller, TableIdentifierProto request) { String dbName = request.getDatabaseName(); String tbName = request.getTableName(); if (linkedMetadataManager.existsDatabase(dbName)) { return linkedMetadataManager.existsTable(dbName, "", tbName) ? OK : errUndefinedTable(tbName); } if (metaDictionary.isSystemDatabase(dbName)) { return metaDictionary.existTable(tbName) ? OK : errUndefinedTable(tbName); } else { rlock.lock(); try { if (store.existTable(dbName, tbName)) { return OK; } else { return errUndefinedTable(tbName); } } catch (Throwable t) { printStackTraceIfError(LOG, t); return returnError(t); } finally { rlock.unlock(); } } }
public static ReturnState errDuplicateIndex(String indexName) { return returnError(ResultCode.DUPLICATE_INDEX, indexName); }
.setState(errInvalidRpcCall("Table name is required")) .build(); } else { return TableResponse.newBuilder() .setState(errUndefinedTable(request.getValue())) .build(); printStackTraceIfError(LOG, t); return TableResponse.newBuilder() .setState(returnError(t)) .build();
@Override public List<TableStatsProto> getAllTableStats() { try { final BlockingInterface stub = getStub(); final GetTableStatsResponse response = stub.getAllTableStats(null, ProtoUtil.NULL_PROTO); ensureOk(response.getState()); return response.getStatsList(); } catch (ServiceException e) { throw new RuntimeException(e); } }
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 ReturnState existIndexesByTable(RpcController controller, TableIdentifierProto request) throws ServiceException { String databaseName = request.getDatabaseName(); String tableName = request.getTableName(); try { // linked meta data do not support index. The request will be failed. if (linkedMetadataManager.existsDatabase(databaseName)) { return errUndefinedIndex(tableName); } } catch (Throwable t) { printStackTraceIfError(LOG, t); return returnError(t); } rlock.lock(); try { return store.existIndexesByTable(databaseName, tableName) ? OK : errUndefinedIndex(tableName); } catch (Throwable t) { printStackTraceIfError(LOG, t); return returnError(t); } finally { rlock.unlock(); } }