<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <base href="https://hibernate.atlassian.net" />
<title>Message Title</title>
</head>
<body class="jira" style="color: #333; font-family: Arial, sans-serif; font-size: 14px; line-height: 1.429">
<table id="background-table" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #f5f5f5; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<!-- header here -->
<tr>
<td id="header-pattern-container" style="padding: 0px; border-collapse: collapse; padding: 10px 20px">
<table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<td id="header-avatar-image-container" valign="top" style="padding: 0px; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px"> <img id="header-avatar-image" class="image_fix" src="https://secure.gravatar.com/avatar/06780f50c30ffab584630481476ba6f4?d=mm&s=48" height="32" width="32" border="0" style="border-radius: 3px; vertical-align: top" />
</td>
<td id="header-text-container" valign="middle" style="padding: 0px; border-collapse: collapse; vertical-align: middle; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> <a class="user-hover" rel="marcelstoer" id="email_marcelstoer" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=marcelstoer" style="color:#6c797f;; color: #3b73af; text-decoration: none">Marcel Stör</a> <strong>updated</strong> an issue
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td id="email-content-container" style="padding: 0px; border-collapse: collapse; padding: 0 20px">
<table id="email-content-table" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-spacing: 0; border-collapse: separate">
<tr>
<!-- there needs to be content in the cell for it to render in some clients -->
<td class="email-content-rounded-top mobile-expand" style="padding: 0px; border-collapse: collapse; color: #fff; padding: 0 15px 0 16px; height: 15px; background-color: #fff; border-left: 1px solid #ccc; border-top: 1px solid #ccc; border-right: 1px solid #ccc; border-bottom: 0; border-top-right-radius: 5px; border-top-left-radius: 5px; height: 10px; line-height: 10px; padding: 0 15px 0 16px; mso-line-height-rule: exactly">
</td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff">
<table class="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<td class="page-title-pattern-first-line " style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; padding-top: 10px"> <a href="https://hibernate.atlassian.net/browse/HHH" style="color: #3b73af; text-decoration: none">Hibernate ORM</a> / <a href="https://hibernate.atlassian.net/browse/HHH-5905" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-a0c815e0-0667-4d10-a9b6-919dba414953" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom" /></a> <a href="https://hibernate.atlassian.net/browse/HHH-5905" style="color: #3b73af; text-decoration: none">HHH-5905</a>
</td>
</tr>
<tr>
<td style="vertical-align: top;; padding: 0px; border-collapse: collapse; padding-right: 5px; font-size: 20px; line-height: 30px; mso-line-height-rule: exactly" class="page-title-pattern-header-container"> <span class="page-title-pattern-header" style="font-family: Arial, sans-serif; padding: 0; font-size: 20px; line-height: 30px; mso-text-raise: 2px; mso-line-height-rule: exactly; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HHH-5905" style="color: #3b73af; text-decoration: none">HQL "where in" queries consume near 100% CPU - possibly for hours</a> </span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="email-content-main mobile-expand wrapper-special-margin" style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff; padding-top: 10px; padding-bottom: 5px">
<table class="keyvalue-table" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">
Change By:
</th>
<td style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <a class="user-hover" rel="marcelstoer" id="email_marcelstoer" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=marcelstoer" style="color:#6c797f;; color: #3b73af; text-decoration: none">Marcel Stör</a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="email-content-main mobile-expand issue-description-container" style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff; padding-top: 5px; padding-bottom: 10px">
<table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px">
<tr>
<td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0px; border-collapse: collapse; padding: 0 0 10px 0"> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">[</span> <span class="diffaddedchars" style="background-color:#ddfade;">*</span> <span class="diffcontext">Claim</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">]</span> <span class="diffaddedchars" style="background-color:#ddfade;">*</span> <span class="diffcontext"><br />The loop in ParameterParser.parse(String, ParameterParser$Recognizer) uses 100% CPU core per thread that executes it since it iterates over a string char by char and calling string operations in the loop.<br /><br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">[</span> <span class="diffaddedchars" style="background-color:#ddfade;">*</span> <span class="diffcontext">Java client</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">]</span> <span class="diffaddedchars" style="background-color:#ddfade;">*</span> <span class="diffcontext"><br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{code:java)</span> <span class="diffcontext">Query query = getEntityManager().createQuery("select articleNumber from Article where articleNumber in (:articleNumbers)");<br />query.setParameter("articleNumbers", articleNumbers);<br />List<ArticleNumber> filteredArticleNumbers = (List<ArticleNumber>) query.getResultList();<br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{code}</span> <span class="diffcontext"><br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">[</span> <span class="diffaddedchars" style="background-color:#ddfade;"><br />*</span> <span class="diffcontext">Stacktrace of involved classes/methods</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">]</span> <span class="diffaddedchars" style="background-color:#ddfade;">*</span> <span class="diffcontext"><br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{noformat}<br /></span> <span class="diffcontext">ParameterParser.parse(String, ParameterParser$Recognizer) line: 88 <br />ParamLocationRecognizer.parseLocations(String) line: 75 <br />HQLQueryPlan.buildParameterMetadata(ParameterTranslations, String) line: 290 <br />HQLQueryPlan.<init>(String, String, boolean, Map, SessionFactoryImplementor) line: 121 <br />HQLQueryPlan.<init>(String, boolean, Map, SessionFactoryImplementor) line: 80 <br />QueryPlanCache.getHQLQueryPlan(String, boolean, Map) line: 98 <br />SessionImpl(AbstractSessionImpl).getHQLQueryPlan(String, boolean) line: 156 <br />SessionImpl.list(String, QueryParameters) line: 1250 <br />QueryImpl.list() line: 102 <br />QueryImpl<X>.getResultList() line: 241<br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{noformat}</span> <span class="diffcontext"><br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">[</span> <span class="diffaddedchars" style="background-color:#ddfade;"><br />*</span> <span class="diffcontext">Observations</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">]</span> <span class="diffaddedchars" style="background-color:#ddfade;">*</span> <span class="diffcontext"><br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{{</span> <span class="diffcontext">QueryImpl#list()</span> <span class="diffaddedchars" style="background-color:#ddfade;">}}</span> <span class="diffcontext"> calls</span> <span class="diffaddedchars" style="background-color:#ddfade;"> {{</span> <span class="diffcontext"> SessionImpl#list(String, QueryParameters)</span> <span class="diffaddedchars" style="background-color:#ddfade;">}}</span> <span class="diffcontext"> passing the</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> *expanded*</span> <span class="diffaddedchars" style="background-color:#ddfade;"> _expanded_</span> <span class="diffcontext"> query:<br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{{</span> <span class="diffcontext">return getSession().list(expandParameterLists(namedParams), getQueryParameters(namedParams));</span> <span class="diffaddedchars" style="background-color:#ddfade;">}}</span> <span class="diffcontext"><br /><br />Hence, what is passed to</span> <span class="diffaddedchars" style="background-color:#ddfade;"> {{</span> <span class="diffcontext"> SessionImpl#list(String, QueryParameters)</span> <span class="diffaddedchars" style="background-color:#ddfade;">}}</span> <span class="diffcontext"> in my case is something like:<br />select articleNumber from Article where articleNumber in (:articleNumbers0_, :articleNumbers1_, :articleNumbers2_, :articleNumbers3_, :articleNumbers4_, :articleNumbers5_, :articleNumbers6_, <br /><br />Now imagine how long that query string is when the "where in" query has a few thousand article numbers. org.hibernate.engine.query.ParameterParser.parse(String, Recognizer) then iterates over each character in the query string and calls StringHelper.firstIndexOfChar() for each named parameter. Even on fast servers this operation may easily take half an hour or more (mind you it's a blocking call!) if the expanded query string has a few million characters.<br />I don't know Hibernate well enough to propose a fix but "where in" with Hibernate is an absolute no-go as it is right now.<br />We had switch all our "where in" queries to native :-(</span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff">
<table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px">
<tr>
<td id="actions-pattern-container" valign="middle" style="padding: 0px; border-collapse: collapse; padding: 10px 0 10px 24px; vertical-align: middle; padding-left: 0">
<table align="left" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<td class="actions-pattern-action-icon-container" style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0px; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HHH-5905#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none"> <img class="actions-pattern-action-icon-image" src="cid:jira-generated-image-static-comment-icon-281e69df-8361-4b7d-acb7-04c32521a752" alt="Add Comment" title="Add Comment" height="16" width="16" border="0" style="vertical-align: middle" /> </a>
</td>
<td class="actions-pattern-action-text-container" style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; padding-left: 5px"> <a href="https://hibernate.atlassian.net/browse/HHH-5905#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none">Add Comment</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<!-- there needs to be content in the cell for it to render in some clients -->
<tr>
<td class="email-content-rounded-bottom mobile-expand" style="padding: 0px; border-collapse: collapse; color: #fff; padding: 0 15px 0 16px; height: 5px; line-height: 5px; background-color: #fff; border-top: 0; border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; border-right: 1px solid #ccc; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; mso-line-height-rule: exactly">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td id="footer-pattern" style="padding: 0px; border-collapse: collapse; padding: 12px 20px">
<table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0px; border-collapse: collapse; color: #999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px">
This message was sent by Atlassian JIRA <span id="footer-build-information">(v7.0.0-OD-08-002#70107-<span title="3f098e887822d12897dbfd77339d1bc8b3ef240b" data-commit-id="3f098e887822d12897dbfd77339d1bc8b3ef240b}">sha1:3f098e8</span>)</span>
</td>
<td id="footer-pattern-logo-desktop-container" valign="top" style="padding: 0px; border-collapse: collapse; padding-left: 20px; vertical-align: top">
<table style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<td id="footer-pattern-logo-desktop-padding" style="padding: 0px; border-collapse: collapse; padding-top: 3px"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-4d090d10-e97b-4c55-8dfa-2c7fce313cf1" alt="Atlassian logo" title="Atlassian logo" width="169" height="36" class="image_fix" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>