public RequestType getRequestType(){ switch(type){ case CREATE_PREPARED_STATEMENT: return RequestType.CREATE_PREPARE; case GET_CATALOGS: return RequestType.GET_CATALOGS; case GET_COLUMNS: return RequestType.GET_COLUMNS; case GET_SCHEMAS: return RequestType.GET_SCHEMAS; case GET_TABLES: return RequestType.GET_TABLES; case GET_SERVER_META: return RequestType.GET_SERVER_META; case RUN_QUERY: RunQuery q = unwrap(RunQuery.class); if(q.getType() == QueryType.PREPARED_STATEMENT){ return RequestType.EXECUTE_PREPARE; } else { return RequestType.RUN_SQL; } default: throw new IllegalStateException("Invalid type: " + type); } }
public QueryPriority getPriority(){ switch(type){ case CREATE_PREPARED_STATEMENT: case GET_CATALOGS: case GET_COLUMNS: case GET_QUERY_PLAN_FRAGMENTS: case GET_SCHEMAS: case GET_TABLES: case GET_SERVER_META: return NRT; case RUN_QUERY: RunQuery q = unwrap(RunQuery.class); if(q.hasPriority()){ return q.getPriority(); } return GENERAL; default: throw new IllegalStateException("Invalid type: " + type); } }
public long getMaxAllocation(){ switch(type){ case CREATE_PREPARED_STATEMENT: case GET_CATALOGS: case GET_COLUMNS: case GET_SCHEMAS: case GET_TABLES: case GET_SERVER_META: return MAX_MEMORY_UTIL; case RUN_QUERY: RunQuery q = unwrap(RunQuery.class); if(q.hasMaxAllocation()){ return q.getMaxAllocation(); } return Long.MAX_VALUE; default: throw new IllegalStateException("Invalid type: " + type); } }
public String getDescription() { switch(type){ case CREATE_PREPARED_STATEMENT: return "[Prepare Statement] " + unwrap(CreatePreparedStatementReq.class).getSqlQuery(); GetCatalogsReq req = unwrap(GetCatalogsReq.class); return String.format("[Get Catalogs] Catalog Filter: %s.", req.getCatalogNameFilter()); GetColumnsReq req = unwrap(GetColumnsReq.class); return String.format("[Get Columns] Catalog Filter: %s, Schema Filter: %s, Table Filter %s, Column Filter %s.", req.getCatalogNameFilter(), req.getSchemaNameFilter(), req.getTableNameFilter(), req.getColumnNameFilter()); GetSchemasReq req = unwrap(GetSchemasReq.class); return String.format("[Get Schemas] Catalog Filter: %s, Schema Filter: %s.", req.getCatalogNameFilter(), req.getSchemaNameFilter()); GetTablesReq req = unwrap(GetTablesReq.class); return String.format("[Get Tables] Catalog Filter: %s, Schema Filter: %s, Table Filter %s.", req.getCatalogNameFilter(), req.getSchemaNameFilter(), req.getTableNameFilter()); GetServerMetaReq req = unwrap(GetServerMetaReq.class); return String.format("[Get Server Meta]"); RunQuery q = unwrap(RunQuery.class); if(q.hasDescription()){ return q.getDescription();
case GET_CATALOGS: return new MetadataProvider.CatalogsProvider(context.getQueryId(), context.getSession(), dbContext, request.unwrap(GetCatalogsReq.class)); request.unwrap(GetColumnsReq.class)); request.unwrap(GetSchemasReq.class)); request.unwrap(GetTablesReq.class)); final CreatePreparedStatementReq req = request.unwrap(CreatePreparedStatementReq.class); return getSqlCommand(req.getSqlQuery(), true); request.unwrap(GetServerMetaReq.class)); final RunQuery query = request.unwrap(RunQuery.class);