Gopal V created HIVE-12169: ------------------------------ Summary: PCR: Should not fetch all the Partitions to Client always Key: HIVE-12169 URL: https://issues.apache.org/jira/browse/HIVE-12169 Project: Hive Issue Type: Bug Components: Physical Optimizer Affects Versions: 1.3.0, 2.0.0 Reporter: Gopal V Assignee: Gopal V
Even for simple queries which only have a column filter, the PCR does not check if PPR has run before & therefore pulls all partition columns down for queries which do not have a partition filter at all. {code} org.apache.hadoop.hive.metastore.MetaStoreDirectSql.ensureList(Object) MetaStoreDirectSql.java:1656 org.apache.hadoop.hive.metastore.MetaStoreDirectSql.loopJoinOrderedResult(TreeMap, String, int, MetaStoreDirectSql$ApplyFunc) MetaStoreDirectSql.java:896 org.apache.hadoop.hive.metastore.MetaStoreDirectSql.getPartitionsFromPartitionIds(String, String, Boolean, List) MetaStoreDirectSql.java:644 org.apache.hadoop.hive.metastore.MetaStoreDirectSql.getPartitionsViaSqlFilterInternal(String, String, Boolean, String, List, List, Integer) MetaStoreDirectSql.java:511 org.apache.hadoop.hive.metastore.MetaStoreDirectSql.getPartitionsViaSqlFilter(String, String, List) MetaStoreDirectSql.java:376 org.apache.hadoop.hive.metastore.ObjectStore$5.getSqlResult(ObjectStore$GetHelper) ObjectStore.java:2159 org.apache.hadoop.hive.metastore.ObjectStore$5.getSqlResult(ObjectStore$GetHelper) ObjectStore.java:2146 org.apache.hadoop.hive.metastore.ObjectStore$GetHelper.run(boolean) ObjectStore.java:2392 org.apache.hadoop.hive.metastore.ObjectStore.getPartitionsByExprInternal(String, String, byte[], String, short, List, boolean, boolean) ObjectStore.java:2146 org.apache.hadoop.hive.metastore.ObjectStore.getPartitionsByExpr(String, String, byte[], String, short, List) ObjectStore.java:2136 sun.reflect.GeneratedMethodAccessor72.invoke(Object, Object[]) sun.reflect.DelegatingMethodAccessorImpl.invoke(Object, Object[]) DelegatingMethodAccessorImpl.java:43 java.lang.reflect.Method.invoke(Object, Object[]) Method.java:497 org.apache.hadoop.hive.metastore.RawStoreProxy.invoke(Object, Method, Object[]) RawStoreProxy.java:117 com.sun.proxy.$Proxy28.getPartitionsByExpr(String, String, byte[], String, short, List) org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.get_partitions_by_expr(PartitionsByExprRequest) HiveMetaStore.java:4545 sun.reflect.GeneratedMethodAccessor71.invoke(Object, Object[]) sun.reflect.DelegatingMethodAccessorImpl.invoke(Object, Object[]) DelegatingMethodAccessorImpl.java:43 java.lang.reflect.Method.invoke(Object, Object[]) Method.java:497 org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(Object, Method, Object[]) RetryingHMSHandler.java:138 org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(Object, Method, Object[]) RetryingHMSHandler.java:99 com.sun.proxy.$Proxy30.get_partitions_by_expr(PartitionsByExprRequest) org.apache.hadoop.hive.metastore.HiveMetaStoreClient.listPartitionsByExpr(String, String, byte[], String, short, List) HiveMetaStoreClient.java:1160 sun.reflect.GeneratedMethodAccessor70.invoke(Object, Object[]) sun.reflect.DelegatingMethodAccessorImpl.invoke(Object, Object[]) DelegatingMethodAccessorImpl.java:43 java.lang.reflect.Method.invoke(Object, Object[]) Method.java:497 org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.invoke(Object, Method, Object[]) RetryingMetaStoreClient.java:156 com.sun.proxy.$Proxy31.listPartitionsByExpr(String, String, byte[], String, short, List) org.apache.hadoop.hive.ql.metadata.Hive.getPartitionsByExpr(Table, ExprNodeGenericFuncDesc, HiveConf, List) Hive.java:2361 org.apache.hadoop.hive.ql.optimizer.ppr.PartitionPruner.getPartitionsFromServer(Table, ExprNodeGenericFuncDesc, HiveConf, String, Set, boolean) PartitionPruner.java:420 org.apache.hadoop.hive.ql.optimizer.ppr.PartitionPruner.prune(Table, ExprNodeDesc, HiveConf, String, Map) PartitionPruner.java:221 org.apache.hadoop.hive.ql.optimizer.ppr.PartitionPruner.prune(TableScanOperator, ParseContext, String) PartitionPruner.java:144 org.apache.hadoop.hive.ql.parse.ParseContext.getPrunedPartitions(String, TableScanOperator) ParseContext.java:460 org.apache.hadoop.hive.ql.optimizer.pcr.PcrOpProcFactory$FilterPCR.process(Node, Stack, NodeProcessorCtx, Object[]) PcrOpProcFactory.java:110 org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(Node, Stack, Object[]) DefaultRuleDispatcher.java:90 org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(Node, Stack) DefaultGraphWalker.java:105 org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(Node, Stack) DefaultGraphWalker.java:89 org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.walk(Node) DefaultGraphWalker.java:158 org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.startWalking(Collection, HashMap) DefaultGraphWalker.java:120 org.apache.hadoop.hive.ql.optimizer.pcr.PartitionConditionRemover.transform(ParseContext) PartitionConditionRemover.java:86 org.apache.hadoop.hive.ql.optimizer.Optimizer.optimize() Optimizer.java:209 org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(ASTNode, SemanticAnalyzer$PlannerContext) SemanticAnalyzer.java:10195 org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(ASTNode) SemanticAnalyzer.java:9980 org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(ASTNode, Context) BaseSemanticAnalyzer.java:240 org.apache.hadoop.hive.ql.Driver.compile(String, boolean) Driver.java:440 org.apache.hadoop.hive.ql.Driver.compile(String) Driver.java:311 org.apache.hadoop.hive.ql.Driver.compileInternal(String) Driver.java:1162 org.apache.hadoop.hive.ql.Driver.runInternal(String, boolean) Driver.java:1215 org.apache.hadoop.hive.ql.Driver.run(String, boolean) Driver.java:1091 org.apache.hadoop.hive.ql.Driver.run(String) Driver.java:1081 org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(String, CommandProcessor, CliSessionState) CliDriver.java:225 org.apache.hadoop.hive.cli.CliDriver.processCmd(String) CliDriver.java:177 org.apache.hadoop.hive.cli.CliDriver.processLine(String, boolean) CliDriver.java:388 org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliSessionState, HiveConf, OptionsProcessor) CliDriver.java:759 org.apache.hadoop.hive.cli.CliDriver.run(String[]) CliDriver.java:704 org.apache.hadoop.hive.cli.CliDriver.main(String[]) CliDriver.java:633 sun.reflect.NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) NativeMethodAccessorImpl.java (native) sun.reflect.NativeMethodAccessorImpl.invoke(Object, Object[]) NativeMethodAccessorImpl.java:62 sun.reflect.DelegatingMethodAccessorImpl.invoke(Object, Object[]) DelegatingMethodAccessorImpl.java:43 java.lang.reflect.Method.invoke(Object, Object[]) Method.java:497 org.apache.hadoop.util.RunJar.run(String[]) RunJar.java:221 org.apache.hadoop.util.RunJar.main(String[]) RunJar.java:136 {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)