[ https://issues.apache.org/jira/browse/HIVE-21818?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jesus Camacho Rodriguez updated HIVE-21818: ------------------------------------------- Attachment: HIVE-21818.05.patch > CBO: Copying TableRelOptHiveTable has metastore traffic > ------------------------------------------------------- > > Key: HIVE-21818 > URL: https://issues.apache.org/jira/browse/HIVE-21818 > Project: Hive > Issue Type: Bug > Components: CBO > Reporter: Gopal V > Assignee: Jesus Camacho Rodriguez > Priority: Major > Labels: pull-request-available > Attachments: HIVE-21818.01.patch, HIVE-21818.02.patch, > HIVE-21818.03.patch, HIVE-21818.04.patch, HIVE-21818.04.patch, > HIVE-21818.05.patch, HIVE-21818.05.patch, HIVE-21818.05.patch, > HIVE-21818.patch > > Time Spent: 10m > Remaining Estimate: 0h > > While the optimizer is running, whenever it makes a copy of the TableScan to > perform potential rewrites, there is Hive metastore traffic from inside CBO > optimizer. > {code} > public RelOptHiveTable(RelOptSchema calciteSchema, RelDataTypeFactory > typeFactory, List<String> qualifiedTblName, > RelDataType rowType, Table hiveTblMetadata, List<ColumnInfo> > hiveNonPartitionCols, > List<ColumnInfo> hivePartitionCols, List<VirtualColumn> > hiveVirtualCols, HiveConf hconf, > Map<String, PrunedPartitionList> partitionCache, Map<String, > ColumnStatsList> colStatsCache, > AtomicInteger noColsMissingStats) { .... > Pair<List<ImmutableBitSet>, List<ImmutableBitSet>> constraintKeys = > generateKeys(); > this.keys = constraintKeys.left; > this.nonNullablekeys = constraintKeys.right; > this.referentialConstraints = generateReferentialConstraints(); > } > {code} > This is triggered from the rules as the partition pruner > {code} > protected void perform(RelOptRuleCall call, Filter filter, > HiveTableScan tScan) { > // Original table > RelOptHiveTable hiveTable = (RelOptHiveTable) tScan.getTable(); > // Copy original table scan and table > HiveTableScan tScanCopy = tScan.copyIncludingTable(tScan.getRowType()); > RelOptHiveTable hiveTableCopy = (RelOptHiveTable) tScanCopy.getTable(); > ... > if (StringUtils.equals(hiveTableCopy.getPartitionListKey(), > hiveTable.getPartitionListKey())) { > // Nothing changed, we do not need to produce a new expression > return; > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)