[ https://issues.apache.org/jira/browse/HIVE-27238?focusedWorklogId=858996&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-858996 ]
ASF GitHub Bot logged work on HIVE-27238: ----------------------------------------- Author: ASF GitHub Bot Created on: 25/Apr/23 17:56 Start Date: 25/Apr/23 17:56 Worklog Time Spent: 10m Work Description: kasakrisz commented on code in PR #4212: URL: https://github.com/apache/hive/pull/4212#discussion_r1176852722 ########## ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveDefaultRelMetadataProvider.java: ########## @@ -128,4 +139,28 @@ public static void initializeMetadataProviderClass(List<Class<? extends RelNode> // This will register the classes in the default Hive implementation DEFAULT.register(nodeClasses); } + + public static synchronized HiveDefaultRelMetadataProvider get(HiveConf hiveConf, + List<Class<? extends RelNode>> nodeClasses) { + Map<HiveConf.ConfVars, Object> confKey = getConfKey(hiveConf); + if (ALL_PROVIDERS.containsKey(confKey)) { + return ALL_PROVIDERS.get(confKey); + } + + HiveDefaultRelMetadataProvider newProvider = + new HiveDefaultRelMetadataProvider(hiveConf, nodeClasses); + ALL_PROVIDERS.put(confKey, newProvider); + return newProvider; + } + + private static Map<HiveConf.ConfVars, Object> getConfKey(HiveConf conf) { + ImmutableMap.Builder<HiveConf.ConfVars, Object> bldr = new ImmutableMap.Builder<>(); + bldr.put(HiveConf.ConfVars.HIVE_EXECUTION_ENGINE, + conf.getVar(HiveConf.ConfVars.HIVE_EXECUTION_ENGINE)); + bldr.put(HiveConf.ConfVars.HIVE_CBO_EXTENDED_COST_MODEL, + conf.getBoolVar(HiveConf.ConfVars.HIVE_CBO_EXTENDED_COST_MODEL)); + bldr.put(HiveConf.ConfVars.MAPREDMAXSPLITSIZE, + conf.getLongVar(HiveConf.ConfVars.MAPREDMAXSPLITSIZE)); Review Comment: Are these settings can be changed without hs2 restart? Issue Time Tracking ------------------- Worklog Id: (was: 858996) Time Spent: 40m (was: 0.5h) > Avoid Calcite Code generation for RelMetaDataProvider on every query > -------------------------------------------------------------------- > > Key: HIVE-27238 > URL: https://issues.apache.org/jira/browse/HIVE-27238 > Project: Hive > Issue Type: Improvement > Components: HiveServer2 > Reporter: Steve Carlin > Priority: Major > Labels: pull-request-available > Time Spent: 40m > Remaining Estimate: 0h > > In CalcitePlanner, we are instantiating a new CachingRelMetadataProvider on > every query. Within the Calcite code, they keep the provider key to prevent > a new MetadataHandler class from being created. But by generating a new > provider, the cache never gets a hit so we keep instantiating new > MetadataHandlers. -- This message was sent by Atlassian Jira (v8.20.10#820010)