8080import com .facebook .presto .spi .type .UnknownTypeException ;
8181import com .facebook .presto .sql .ExpressionUtils ;
8282import com .facebook .presto .sql .MaterializedViewUtils ;
83- import com .facebook .presto .sql .SqlFormatterUtil ;
8483import com .facebook .presto .sql .analyzer .Analysis .TableArgumentAnalysis ;
8584import com .facebook .presto .sql .analyzer .Analysis .TableFunctionInvocationAnalysis ;
8685import com .facebook .presto .sql .parser .ParsingException ;
266265import static com .facebook .presto .sql .NodeUtils .mapFromProperties ;
267266import static com .facebook .presto .sql .QueryUtil .selectList ;
268267import static com .facebook .presto .sql .QueryUtil .simpleQuery ;
268+ import static com .facebook .presto .sql .SqlFormatter .formatSql ;
269+ import static com .facebook .presto .sql .SqlFormatterUtil .getFormattedSql ;
269270import static com .facebook .presto .sql .analyzer .AggregationAnalyzer .verifyOrderByAggregations ;
270271import static com .facebook .presto .sql .analyzer .AggregationAnalyzer .verifySourceAggregations ;
271272import static com .facebook .presto .sql .analyzer .Analysis .MaterializedViewAnalysisState ;
@@ -849,7 +850,7 @@ protected Scope visitRefreshMaterializedView(RefreshMaterializedView node, Optio
849850
850851 // the original refresh statement will always be one line
851852 analysis .setExpandedQuery (format ("-- Expanded Query: %s%nINSERT INTO %s %s" ,
852- SqlFormatterUtil . getFormattedSql (node , sqlParser , Optional .empty ()),
853+ getFormattedSql (node , sqlParser , Optional .empty ()),
853854 viewName .getObjectName (),
854855 view .getOriginalSql ()));
855856 analysis .addAccessControlCheckForTable (
@@ -870,7 +871,7 @@ protected Scope visitRefreshMaterializedView(RefreshMaterializedView node, Optio
870871
871872 Query viewQuery = parseView (view .getOriginalSql (), viewName , node );
872873 Query refreshQuery = tablePredicates .containsKey (toSchemaTableName (viewName )) ?
873- buildQueryWithPredicate (viewQuery , tablePredicates .get (toSchemaTableName (viewName )))
874+ buildSubqueryWithPredicate (viewQuery , tablePredicates .get (toSchemaTableName (viewName )))
874875 : viewQuery ;
875876 // Check if the owner has SELECT permission on the base tables
876877 StatementAnalyzer queryAnalyzer = new StatementAnalyzer (
@@ -938,7 +939,7 @@ private Optional<RelationType> analyzeBaseTableForRefreshMaterializedView(Table
938939
939940 SchemaTableName baseTableName = toSchemaTableName (createQualifiedObjectName (session , baseTable , baseTable .getName (), metadata ));
940941 if (tablePredicates .containsKey (baseTableName )) {
941- Query tableSubquery = buildQueryWithPredicate (baseTable , tablePredicates .get (baseTableName ));
942+ Query tableSubquery = buildTableQueryWithPredicate (baseTable , tablePredicates .get (baseTableName ));
942943 analysis .registerNamedQuery (baseTable , tableSubquery , true );
943944
944945 Scope subqueryScope = process (tableSubquery , scope );
@@ -975,17 +976,19 @@ private Map<SchemaTableName, Expression> getTablePredicatesForMaterializedViewRe
975976 }
976977 }
977978
978- private Query buildQueryWithPredicate (Table table , Expression predicate )
979+ private Query buildTableQueryWithPredicate (Table table , Expression predicate )
979980 {
980981 Query query = simpleQuery (selectList (new AllColumns ()), table , predicate );
981- return (Query ) sqlParser .createStatement (
982- SqlFormatterUtil .getFormattedSql (query , sqlParser , Optional .empty ()),
983- createParsingOptions (session , warningCollector ));
982+ String formattedSql = formatSql (query , Optional .empty ());
983+ return (Query ) sqlParser .createStatement (formattedSql , createParsingOptions (session , warningCollector ));
984984 }
985985
986- private Query buildQueryWithPredicate (Query originalQuery , Expression predicate )
986+ private Query buildSubqueryWithPredicate (Query originalQuery , Expression predicate )
987987 {
988- return simpleQuery (selectList (new AllColumns ()), new TableSubquery (originalQuery ), predicate );
988+ Query query = simpleQuery (selectList (new AllColumns ()), new TableSubquery (originalQuery ), predicate );
989+ return (Query ) sqlParser .createStatement (
990+ getFormattedSql (query , sqlParser , Optional .empty ()),
991+ createParsingOptions (session , warningCollector ));
989992 }
990993
991994 @ Override
@@ -2402,7 +2405,7 @@ else if (materializedViewStatus.isPartiallyMaterialized()) {
24022405 Query unionQuery = new Query (predicateStitchedQuery .getWith (), union , predicateStitchedQuery .getOrderBy (), predicateStitchedQuery .getOffset (), predicateStitchedQuery .getLimit ());
24032406 // can we return the above query object, instead of building a query string?
24042407 // in case of returning the query object, make sure to clone the original query object.
2405- return SqlFormatterUtil . getFormattedSql (unionQuery , sqlParser , Optional .empty ());
2408+ return getFormattedSql (unionQuery , sqlParser , Optional .empty ());
24062409 }
24072410
24082411 /**
0 commit comments