修改源码时遇到一个问题,就是对分区的处理,当遇到join查询时,如上篇文章presto join连接时的谓词处理所述,对于某些情况下,如果谓词带or,会吧分区字段当做普通字段处理,不会下推到表扫描处。但是hive是如何处理这种情况的呢?
1 hive处理分区时的调用栈
1.1 代码分析
HiveTableHandle hiveTableHandle = checkType(tableHandle, HiveTableHandle.class, "tableHandle");
requireNonNull(effectivePredicate, "effectivePredicate is null");
SchemaTableName tableName = hiveTableHandle.getSchemaTableName();
Table table = getTable(metastore, tableName);
Optional<HiveBucketHandle> hiveBucketHandle = getHiveBucketHandle(connectorId, table, forceIntegralToBigint);