public VirtualDatasetState instanceExtract(SqlQuery query, QueryMetadata metadata) { RelDataType relDataType = metadata.getRowType(); VirtualDatasetState state; try { state = extract(query.getSql(), metadata.getSqlNode().get(), relDataType); } catch (RuntimeException e) { state = fallback("Error parsing", null, query.getSql(), e); } if (state.getColumnsList() == null || state.getColumnsList().isEmpty()) { populateSemanticFields(relDataType, state); } Optional<List<String>> referredTables = metadata.getReferredTables(); if (referredTables.isPresent()) { state.setReferredTablesList(referredTables.get()); } state.setContextList(query.getContext()); return state; }
@Override protected QueryMetadata getMetadata(SqlQuery query) { this.job = executor.runQueryWithListener(query, queryType, path, newVersion, collector); try { this.metadata = collector.getMetadata(); } catch (UserException e) { // If the original query fails, let the user knows about throw DatasetTool.toInvalidQueryException(e, query.getSql(), query.getContext(), null); } // If above QueryExecutor finds the query in the job store, QueryMetadata will never be set. // In this case, regenerate QueryMetadata below. if (this.metadata == null) { this.metadata = QueryParser.extract(query, context); } return metadata; }
JobInfo asJobInfo(final JobId jobId, final String inSpace) { final JobInfo jobInfo = new JobInfo(jobId, sqlQuery.getSql(), datasetVersion, queryType) .setSpace(inSpace) .setUser(username) .setStartTime(System.currentTimeMillis()) .setDatasetPathList(datasetPathComponents) .setResultMetadataList(new ArrayList<ArrowFileMetadata>()) .setContextList(sqlQuery.getContext()); if (requestType == RequestType.MATERIALIZATION) { jobInfo.setMaterializationFor(materializationSummary); } if (requestType == RequestType.DOWNLOAD) { jobInfo.setDownloadInfo(new DownloadInfo() .setDownloadId(downloadId) .setFileName(fileName)); } return jobInfo; }
private SqlConverter getNewConverter(QueryContext context, SqlQuery query, AttemptObserver observerForSubstitution) { Catalog catalog = context.getCatalog(); final List<String> sqlContext = query.getContext(); if(sqlContext != null){ NamespaceKey path = new NamespaceKey(sqlContext); try { catalog = catalog.resolveCatalog(path); } catch (Exception e) { throw UserException.validationError(e) .message("Unable to resolve schema path [%s]. Failure resolving [%s] portion of path.", sqlContext, path) .build(logger); } } return new SqlConverter( context.getPlannerSettings(), context.getOperatorTable(), context, context.getMaterializationProvider(), context.getFunctionRegistry(), context.getSession(), observerForSubstitution, catalog, context.getSubstitutionProviderFactory(), context.getConfig(), context.getScanResult()); }
.setSqlContext(jobRequest.getSqlQuery().getContext()) .setInternalSingleThreaded(queryType == UI_INITIAL_PREVIEW) .setQueryResultsStorePath(storageName)