<p dir="auto">Apache Druid 0.23.0 contains over 450 new features, bug fixes, performance enhancements, documentation improvements, and additional test coverage from 81 contributors. <a href="https://github.com/apache/druid/milestone/45?closed=1">See the complete set of changes for additional details</a>.</p>
<h1 dir="auto"><a name="user-content-0.23.0-new-features" href="#0.23.0-new-features">#</a> New Features</h1>
<h2 dir="auto"><a name="user-content-0.23.0-new-features-query-engine" href="#0.23.0-new-features-query-engine">#</a> Query engine</h2>
<h3 dir="auto"><a name="user-content-0.23.0-new-features-query-engine-grouping-on-arrays-without-exploding-the-arrays" href="#0.23.0-new-features-query-engine-grouping-on-arrays-without-exploding-the-arrays">#</a> Grouping on arrays without exploding the arrays</h3>
<p dir="auto">You can now group on a multi-value dimension as an array. For a datasource named "test":</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="{&quot;timestamp&quot;: &quot;2011-01-12T00:00:00.000Z&quot;, &quot;tags&quot;: [&quot;t1&quot;,&quot;t2&quot;,&quot;t3&quot;]}  #row1
{&quot;timestamp&quot;: &quot;2011-01-13T00:00:00.000Z&quot;, &quot;tags&quot;: [&quot;t3&quot;,&quot;t4&quot;,&quot;t5&quot;]}  #row2
{&quot;timestamp&quot;: &quot;2011-01-14T00:00:00.000Z&quot;, &quot;tags&quot;: [&quot;t5&quot;,&quot;t6&quot;,&quot;t7&quot;]}  #row3
{&quot;timestamp&quot;: &quot;2011-01-14T00:00:00.000Z&quot;, &quot;tags&quot;: []}                #row4"><pre class="notranslate"><code class="notranslate">{"timestamp": "2011-01-12T00:00:00.000Z", "tags": ["t1","t2","t3"]}  #row1
{"timestamp": "2011-01-13T00:00:00.000Z", "tags": ["t3","t4","t5"]}  #row2
{"timestamp": "2011-01-14T00:00:00.000Z", "tags": ["t5","t6","t7"]}  #row3
{"timestamp": "2011-01-14T00:00:00.000Z", "tags": []}                #row4
</code></pre></div>
<p dir="auto">The following query:</p>
<div class="highlight highlight-source-json notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="{
  &quot;queryType&quot;: &quot;groupBy&quot;,
  &quot;dataSource&quot;: &quot;test&quot;,
  &quot;intervals&quot;: [
    &quot;1970-01-01T00:00:00.000Z/3000-01-01T00:00:00.000Z&quot;
  ],
  &quot;granularity&quot;: {
    &quot;type&quot;: &quot;all&quot;
  },
  &quot;virtualColumns&quot; : [ {
    &quot;type&quot; : &quot;expression&quot;,
    &quot;name&quot; : &quot;v0&quot;,
    &quot;expression&quot; : &quot;mv_to_array(\&quot;tags\&quot;)&quot;,
    &quot;outputType&quot; : &quot;ARRAY&lt;STRING&gt;&quot;
  } ],
  &quot;dimensions&quot;: [
    {
      &quot;type&quot;: &quot;default&quot;,
      &quot;dimension&quot;: &quot;v0&quot;,
      &quot;outputName&quot;: &quot;tags&quot;
      &quot;outputType&quot;:&quot;ARRAY&lt;STRING&gt;&quot;
    }
  ],
  &quot;aggregations&quot;: [
    {
      &quot;type&quot;: &quot;count&quot;,
      &quot;name&quot;: &quot;count&quot;
    }
  ]
}"><pre class="notranslate">{
  <span class="pl-ent">"queryType"</span>: <span class="pl-s"><span class="pl-pds">"</span>groupBy<span class="pl-pds">"</span></span>,
  <span class="pl-ent">"dataSource"</span>: <span class="pl-s"><span class="pl-pds">"</span>test<span class="pl-pds">"</span></span>,
  <span class="pl-ent">"intervals"</span>: [
    <span class="pl-s"><span class="pl-pds">"</span>1970-01-01T00:00:00.000Z/3000-01-01T00:00:00.000Z<span class="pl-pds">"</span></span>
  ],
  <span class="pl-ent">"granularity"</span>: {
    <span class="pl-ent">"type"</span>: <span class="pl-s"><span class="pl-pds">"</span>all<span class="pl-pds">"</span></span>
  },
  <span class="pl-ent">"virtualColumns"</span> : [ {
    <span class="pl-ent">"type"</span> : <span class="pl-s"><span class="pl-pds">"</span>expression<span class="pl-pds">"</span></span>,
    <span class="pl-ent">"name"</span> : <span class="pl-s"><span class="pl-pds">"</span>v0<span class="pl-pds">"</span></span>,
    <span class="pl-ent">"expression"</span> : <span class="pl-s"><span class="pl-pds">"</span>mv_to_array(<span class="pl-cce">\"</span>tags<span class="pl-cce">\"</span>)<span class="pl-pds">"</span></span>,
    <span class="pl-ent">"outputType"</span> : <span class="pl-s"><span class="pl-pds">"</span>ARRAY&lt;STRING&gt;<span class="pl-pds">"</span></span>
  } ],
  <span class="pl-ent">"dimensions"</span>: [
    {
      <span class="pl-ent">"type"</span>: <span class="pl-s"><span class="pl-pds">"</span>default<span class="pl-pds">"</span></span>,
      <span class="pl-ent">"dimension"</span>: <span class="pl-s"><span class="pl-pds">"</span>v0<span class="pl-pds">"</span></span>,
      <span class="pl-ent">"outputName"</span>: <span class="pl-s"><span class="pl-pds">"</span>tags<span class="pl-pds">"</span></span>
      <span class="pl-ent">"outputType"</span>:<span class="pl-s"><span class="pl-pds">"</span>ARRAY&lt;STRING&gt;<span class="pl-pds">"</span></span>
    }
  ],
  <span class="pl-ent">"aggregations"</span>: [
    {
      <span class="pl-ent">"type"</span>: <span class="pl-s"><span class="pl-pds">"</span>count<span class="pl-pds">"</span></span>,
      <span class="pl-ent">"name"</span>: <span class="pl-s"><span class="pl-pds">"</span>count<span class="pl-pds">"</span></span>
    }
  ]
}</pre></div>
<p dir="auto">Returns the following:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="[
 {
    &quot;timestamp&quot;: &quot;1970-01-01T00:00:00.000Z&quot;,
    &quot;event&quot;: {
      &quot;count&quot;: 1,
      &quot;tags&quot;: &quot;[]&quot;
    }
  },
  {
    &quot;timestamp&quot;: &quot;1970-01-01T00:00:00.000Z&quot;,
    &quot;event&quot;: {
      &quot;count&quot;: 1,
      &quot;tags&quot;: &quot;[&quot;t1&quot;,&quot;t2&quot;,&quot;t3&quot;]&quot;
    }
  },
  {
    &quot;timestamp&quot;: &quot;1970-01-01T00:00:00.000Z&quot;,
    &quot;event&quot;: {
      &quot;count&quot;: 1,
      &quot;tags&quot;: &quot;[t3&quot;,&quot;t4&quot;,&quot;t5&quot;]&quot;
    }
  },
  {
    &quot;timestamp&quot;: &quot;1970-01-01T00:00:00.000Z&quot;,
    &quot;event&quot;: {
      &quot;count&quot;: 2,
      &quot;tags&quot;: &quot;[&quot;t5&quot;,&quot;t6&quot;,&quot;t7&quot;]&quot;
    }
  }
]"><pre class="notranslate"><code class="notranslate">[
 {
    "timestamp": "1970-01-01T00:00:00.000Z",
    "event": {
      "count": 1,
      "tags": "[]"
    }
  },
  {
    "timestamp": "1970-01-01T00:00:00.000Z",
    "event": {
      "count": 1,
      "tags": "["t1","t2","t3"]"
    }
  },
  {
    "timestamp": "1970-01-01T00:00:00.000Z",
    "event": {
      "count": 1,
      "tags": "[t3","t4","t5"]"
    }
  },
  {
    "timestamp": "1970-01-01T00:00:00.000Z",
    "event": {
      "count": 2,
      "tags": "["t5","t6","t7"]"
    }
  }
]
</code></pre></div>
<p dir="auto">(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1083157169" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12078" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12078/hovercard" href="https://github.com/apache/druid/pull/12078">#12078</a>)<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1129991931" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12253" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12253/hovercard" href="https://github.com/apache/druid/pull/12253">#12253</a>)</p>
<h3 dir="auto"><a name="user-content-0.23.0-new-features-query-engine-specify-a-column-other-than-__time-column-for-row-comparison-in-first%2flast-aggregators" href="#0.23.0-new-features-query-engine-specify-a-column-other-than-__time-column-for-row-comparison-in-first%2Flast-aggregators">#</a> Specify a column other than __time column for row comparison in first/last aggregators</h3>
<p dir="auto">You can pass time column in <code class="notranslate">*first</code>/<code class="notranslate">*last</code> aggregators by using <code class="notranslate">LATEST_BY</code> / <code class="notranslate">EARLIEST_BY</code> SQL functions. This provides support for cases where the time is stored as a part of a column different than "__time". You can also specify another logical time column.<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1057626925" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11949" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11949/hovercard" href="https://github.com/apache/druid/pull/11949">#11949</a>)<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1099756737" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12145" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12145/hovercard" href="https://github.com/apache/druid/pull/12145">#12145</a>)</p>
<h3 dir="auto"><a name="user-content-0.23.0-new-features-query-engine-improvements-to-querying-user-experience" href="#0.23.0-new-features-query-engine-improvements-to-querying-user-experience">#</a> Improvements to querying user experience</h3>
<p dir="auto">This release includes several improvements for querying:</p>
<ul dir="auto">
<li>Added the SQL query ID to response header for failed SQL query to aid in locating the error messages (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1010595114" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11756" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11756/hovercard" href="https://github.com/apache/druid/pull/11756">#11756</a>)</li>
<li>Added input type validation for DataSketches HLL (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1096051350" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12131" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12131/hovercard" href="https://github.com/apache/druid/pull/12131">#12131</a>)</li>
<li>Improved JDBC logging (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="991003347" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11676" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11676/hovercard" href="https://github.com/apache/druid/pull/11676">#11676</a>)</li>
<li>Added SQL functions MV_FILTER_ONLY and MV_FILTER_NONE to filter rows of multi-value string dimensions to include only the  supplied list of values or none of them respectively (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="984886884" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11650" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11650/hovercard" href="https://github.com/apache/druid/pull/11650">#11650</a>)</li>
<li>Added ARRAY_CONCAT_AGG to aggregate array inputs together into a single array (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1122145180" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12226" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12226/hovercard" href="https://github.com/apache/druid/pull/12226">#12226</a>)</li>
<li>Added the ability to authorize the usage of query context parameters (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1192373091" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12396" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12396/hovercard" href="https://github.com/apache/druid/pull/12396">#12396</a>)</li>
<li>Improved query IDs to make it easier to link queries and sub-queries for end-to-end query visibility (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1029300077" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11809" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11809/hovercard" href="https://github.com/apache/druid/pull/11809">#11809</a>)</li>
<li>Added a safe divide function to protect against division by 0 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1050455040" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11904" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11904/hovercard" href="https://github.com/apache/druid/pull/11904">#11904</a>)</li>
<li>You can now add a query context to internally generated <code class="notranslate">SegmentMetadata</code> query (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="941088434" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11429" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11429/hovercard" href="https://github.com/apache/druid/pull/11429">#11429</a>)</li>
<li>Added support for Druid complex types to the native expression processing system to make all Druid data usable within expressions (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1038921621" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11853" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11853/hovercard" href="https://github.com/apache/druid/pull/11853">#11853</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1069182729" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12016" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12016/hovercard" href="https://github.com/apache/druid/pull/12016">#12016</a>)</li>
<li>You can control the size of the on-heap segment-level dictionary via <code class="notranslate">druid.query.groupBy.maxSelectorDictionarySize</code> when grouping on string or array-valued expressions that do not have pre-existing dictionaries.</li>
<li>You have better protection against filter explosion during CNF conversion (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1161810847" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12314" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12314/hovercard" href="https://github.com/apache/druid/pull/12314">#12314</a>) (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1163711538" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12324" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12324/hovercard" href="https://github.com/apache/druid/pull/12324">#12324</a>)</li>
<li>You can get the complete native query on explaining the SQL query by setting <code class="notranslate">useNativeQueryExplain</code> to true in query context (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1050658987" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11908" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11908/hovercard" href="https://github.com/apache/druid/pull/11908">#11908</a>)</li>
<li>You can have broker ignore real time nodes or specific historical tiers. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1014828047" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11766" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11766/hovercard" href="https://github.com/apache/druid/pull/11766">#11766</a>) (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1004055213" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11732" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11732/hovercard" href="https://github.com/apache/druid/pull/11732">#11732</a>)</li>
</ul>
<h2 dir="auto"><a name="user-content-0.23.0-new-features-streaming-ingestion" href="#0.23.0-new-features-streaming-ingestion">#</a> Streaming Ingestion</h2>
<h3 dir="auto"><a name="user-content-0.23.0-new-features-streaming-ingestion-kafka-input-format-for-parsing-headers-and-key" href="#0.23.0-new-features-streaming-ingestion-kafka-input-format-for-parsing-headers-and-key">#</a> Kafka input format for parsing headers and key</h3>
<p dir="auto">We've introduced a Kafka input format so you can ingest header data in addition to the message contents. For example:</p>
<ul dir="auto">
<li>the event key field</li>
<li>event headers</li>
<li>the Kafka event timestamp</li>
<li>the Kafka event value that stores the payload.</li>
</ul>
<p dir="auto">(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="978322672" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11630" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11630/hovercard" href="https://github.com/apache/druid/pull/11630">#11630</a>)</p>
<h3 dir="auto"><a name="user-content-0.23.0-new-features-streaming-ingestion-kinesis-ingestion---improvements" href="#0.23.0-new-features-streaming-ingestion-kinesis-ingestion---improvements">#</a> Kinesis ingestion - Improvements</h3>
<p dir="auto">We have made following improvements in kinesis ingestion</p>
<ul dir="auto">
<li>Re-sharding can affect and slow down ingestion as many intermediate empty shards are created. These shards get assigned to tasks causing imbalance in load assignment. You can set <code class="notranslate">skipIgnorableShards</code> to <code class="notranslate">true</code> in kinesis ingestion tuning config to ignore such shards. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1125450413" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12235" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12235/hovercard" href="https://github.com/apache/druid/pull/12235">#12235</a>)</li>
<li>Currently, kinesis ingestion uses <code class="notranslate">DescribeStream</code> to fetch the list of shards. This call is deprecated and slower. In this release, you can switch to a newer API <code class="notranslate">listShards</code> by setting <code class="notranslate">useListShards</code> to <code class="notranslate">true</code> in kinesis ingestion tuning config. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1105410630" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12161" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12161/hovercard" href="https://github.com/apache/druid/pull/12161">#12161</a>)</li>
</ul>
<h2 dir="auto"><a name="user-content-0.23.0-new-features-native-batch-ingestion" href="#0.23.0-new-features-native-batch-ingestion">#</a> Native Batch Ingestion</h2>
<h3 dir="auto"><a name="user-content-0.23.0-new-features-native-batch-ingestion-multi-dimension-range-partitioning" href="#0.23.0-new-features-native-batch-ingestion-multi-dimension-range-partitioning">#</a> Multi-dimension range partitioning</h3>
<p dir="auto">Multi-dimension range partitioning allows users to partition their data on the ranges of any number of dimensions. It develops further on the concepts behind "single-dim" partitioning and is now arguably the most preferable secondary partitioning, both for query performance and storage efficiency.<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1036887369" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11848" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11848/hovercard" href="https://github.com/apache/druid/pull/11848">#11848</a>)<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1059851880" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11973" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11973/hovercard" href="https://github.com/apache/druid/pull/11973">#11973</a>)</p>
<h3 dir="auto"><a name="user-content-0.23.0-new-features-native-batch-ingestion-improved-replace-data-behavior" href="#0.23.0-new-features-native-batch-ingestion-improved-replace-data-behavior">#</a> Improved replace data behavior</h3>
<p dir="auto">In previous versions of Druid, if ingested data with <code class="notranslate">dropExisting</code> flag to replace data, Druid would retain the existing data for a time chunk if there was no new data to replace it. Now, if you set <code class="notranslate">dropExisting</code> to <code class="notranslate">true</code> in your <code class="notranslate">ioSpec</code> and ingest data for a time range that includes a time chunk with no data, Druid uses a tombstone to overshadow the existing data in the empty time chunk.<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1098555134" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12137" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12137/hovercard" href="https://github.com/apache/druid/pull/12137">#12137</a>)</p>
<p dir="auto">This release includes several improvements for native batch ingestion:</p>
<ul dir="auto">
<li>Druid now emits a new metric when a batch task finishes waiting for segment availability. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="854883492" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11090" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11090/hovercard" href="https://github.com/apache/druid/pull/11090">#11090</a>)</li>
<li>Added <code class="notranslate">segmentAvailabilityWaitTimeMs</code>, the duration in milliseconds that a task waited for its segments to be handed off to Historical nodes, to <code class="notranslate">IngestionStatsAndErrorsTaskReportData</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="854883492" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11090" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11090/hovercard" href="https://github.com/apache/druid/pull/11090">#11090</a>)</li>
<li>Added functionality to preserve existing metrics during ingestion (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1110223413" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12185" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12185/hovercard" href="https://github.com/apache/druid/pull/12185">#12185</a>)</li>
<li>Parallel native batch task can now provide task reports for the sequential and single phase mode (e.g., used with dynamic partitioning) as well as single phase mode subtasks (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="993008582" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11688" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11688/hovercard" href="https://github.com/apache/druid/pull/11688">#11688</a>)</li>
<li>Added support for <code class="notranslate">RowStats</code> in <code class="notranslate">druid/indexer/v1/task/{task_id}/reports</code> API for multi-phase parallel indexing task (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1149140358" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12280" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12280/hovercard" href="https://github.com/apache/druid/pull/12280">#12280</a>)</li>
<li>Fixed the OOM failures in the dimension distribution phase of parallel indexing (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1168762932" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12331" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12331/hovercard" href="https://github.com/apache/druid/pull/12331">#12331</a>)</li>
<li>Added support to handle null dimension values while creating partition boundaries (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1059851880" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11973" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11973/hovercard" href="https://github.com/apache/druid/pull/11973">#11973</a>)</li>
</ul>
<h2 dir="auto"><a name="user-content-0.23.0-new-features-improvements-to-ingestion-in-general" href="#0.23.0-new-features-improvements-to-ingestion-in-general">#</a> Improvements to ingestion in general</h2>
<p dir="auto">This release includes several improvements for ingestion in general:</p>
<ul dir="auto">
<li>Removed the template modifier from <code class="notranslate">IncrementalIndex&lt;AggregatorType&gt;</code> because it is no longer required</li>
<li>You can now use <code class="notranslate">JsonPath</code> functions in <code class="notranslate">JsonPath</code> expressions during ingestion (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1000273420" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11722" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11722/hovercard" href="https://github.com/apache/druid/pull/11722">#11722</a>)</li>
<li>Druid no longer creates a materialized list of segment files and elimited looping over the files to reduce OOM issues (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1049864081" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11903" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11903/hovercard" href="https://github.com/apache/druid/pull/11903">#11903</a>)</li>
<li>Added an intermediate-persist <code class="notranslate">IndexSpec</code> to the main "merge" method in <code class="notranslate">IndexMerger</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1056372105" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11940" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11940/hovercard" href="https://github.com/apache/druid/pull/11940">#11940</a>)</li>
<li><code class="notranslate">Granularity.granularitiesFinerThan</code> now returns ALL if you pass in ALL (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1066709178" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12003" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12003/hovercard" href="https://github.com/apache/druid/pull/12003">#12003</a>)</li>
<li>Added a configuation parameter for appending tasks to allow them to use a SHARED lock (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1074390956" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12041" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12041/hovercard" href="https://github.com/apache/druid/pull/12041">#12041</a>)</li>
<li><code class="notranslate">SchemaRegistryBasedAvroBytesDecoder</code> now throws a <code class="notranslate">ParseException</code> instead of RE when it fails to retrieve a schema (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1083716471" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12080" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12080/hovercard" href="https://github.com/apache/druid/pull/12080">#12080</a>)</li>
<li>Added <code class="notranslate">includeAllDimensions</code> to <code class="notranslate">dimensionsSpec</code> to put all explicit dimensions first in <code class="notranslate">InputRow</code> and subsequently any other dimensions found in input data (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1147718396" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12276" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12276/hovercard" href="https://github.com/apache/druid/pull/12276">#12276</a>)</li>
<li>Added the ability to store null columns in segments (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1148926302" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12279" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12279/hovercard" href="https://github.com/apache/druid/pull/12279">#12279</a>)</li>
</ul>
<h2 dir="auto"><a name="user-content-0.23.0-new-features-compaction" href="#0.23.0-new-features-compaction">#</a> Compaction</h2>
<p dir="auto">This release includes several improvements for compaction:</p>
<ul dir="auto">
<li>Automatic compaction now supports complex dimensions (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1054737042" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11924" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11924/hovercard" href="https://github.com/apache/druid/pull/11924">#11924</a>)</li>
<li>Automatic compaction now supports overlapping segment intervals (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1079498135" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12062" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12062/hovercard" href="https://github.com/apache/druid/pull/12062">#12062</a>)</li>
<li>You can now configure automatic compaction to calculate the ratio of slots available for compaction tasks from maximum slots, including autoscaler maximum worker nodes (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1139210401" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12263" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12263/hovercard" href="https://github.com/apache/druid/pull/12263">#12263</a>)</li>
<li>You can now configure the Coordinator auto compaction duty period separately from other indexing duties (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1139210401" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12263" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12263/hovercard" href="https://github.com/apache/druid/pull/12263">#12263</a>)</li>
<li>Default inputSegmentSizeBytes is now changed to ~ 100 TB (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1239779215" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12534" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12534/hovercard" href="https://github.com/apache/druid/pull/12534">#12534</a>)</li>
<li>You can change query granularity, change dimension schema, filter data, add metrics through auto-compaction (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1039989192" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11856" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11856/hovercard" href="https://github.com/apache/druid/pull/11856">#11856</a>) (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1043925080" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11874" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11874/hovercard" href="https://github.com/apache/druid/pull/11874">#11874</a>) (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1054628292" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11922" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11922/hovercard" href="https://github.com/apache/druid/pull/11922">#11922</a>) (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1095009755" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12125" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12125/hovercard" href="https://github.com/apache/druid/pull/12125">#12125</a>)</li>
<li>You can control roll-up as well for auto and manual compaction (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1037928934" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11850" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11850/hovercard" href="https://github.com/apache/druid/pull/11850">#11850</a>)</li>
</ul>
<h2 dir="auto"><a name="user-content-0.23.0-new-features-sql" href="#0.23.0-new-features-sql">#</a> SQL</h2>
<h3 dir="auto"><a name="user-content-0.23.0-new-features-sql-human-readable-and-actionable-sql-error-messages" href="#0.23.0-new-features-sql-human-readable-and-actionable-sql-error-messages">#</a> Human-readable and actionable SQL error messages</h3>
<p dir="auto">Until version 0.22.1, if you issued an unsupported SQL query, Druid would throw very cryptic and unhelpful error messages. With this change, error messages include exactly the part of the SQL query that is not supported in Druid. For example, if you run a scan query that is ordered on a dimension other than the time column.</p>
<p dir="auto">(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1051221954" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11911" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11911/hovercard" href="https://github.com/apache/druid/pull/11911">#11911</a>)</p>
<h3 dir="auto"><a name="user-content-0.23.0-new-features-sql-cancel-api-for-sql-queries" href="#0.23.0-new-features-sql-cancel-api-for-sql-queries">#</a> Cancel API for SQL queries</h3>
<p dir="auto">We've added a new API to cancel SQL queries, so you can now cancel SQL queries just like you can cancel native queries. You can use the API from the web console. In previous versions, cancellation from the console only closed the client connection while the SQL query kept running on Druid.</p>
<p dir="auto">(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="983361566" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11643" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11643/hovercard" href="https://github.com/apache/druid/pull/11643">#11643</a>)<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1005544931" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11738" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11738/hovercard" href="https://github.com/apache/druid/pull/11738">#11738</a>)<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="996728106" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11710" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11710/hovercard" href="https://github.com/apache/druid/pull/11710">#11710</a>)</p>
<h3 dir="auto"><a name="user-content-0.23.0-new-features-sql-improved-sql-compatibility" href="#0.23.0-new-features-sql-improved-sql-compatibility">#</a> Improved SQL compatibility</h3>
<p dir="auto">We have made changes to expressions that make expression evaluation more SQL compliant. This new behaviour is disabled by default. It can be enabled by setting <code class="notranslate">druid.expressions.useStrictBooleans</code> to <code class="notranslate">true</code>. We recommend enabling this behaviour since it is also more performant in some cases.</p>
<p dir="auto">(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="871562074" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11184" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11184/hovercard" href="https://github.com/apache/druid/pull/11184">#11184</a>)</p>
<h3 dir="auto"><a name="user-content-0.23.0-new-features-sql-improvements-to-sql-user-experience" href="#0.23.0-new-features-sql-improvements-to-sql-user-experience">#</a> Improvements to SQL user experience</h3>
<p dir="auto">This release includes several additional improvements for SQL:</p>
<ul dir="auto">
<li>You no longer need to include a trailing slash <code class="notranslate">/</code> for JDBC connections to Druid (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1005016314" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11737" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11737/hovercard" href="https://github.com/apache/druid/pull/11737">#11737</a>)</li>
<li>You can now use scans as outer queries (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1033907746" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11831" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11831/hovercard" href="https://github.com/apache/druid/pull/11831">#11831</a>)</li>
<li>Added a class to sanitize JDBC exceptions and to log them (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1035487991" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11843" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11843/hovercard" href="https://github.com/apache/druid/pull/11843">#11843</a>)</li>
<li>Added type headers to response format to make it easier for clients to interpret the results of SQL queries (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1051433155" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11914" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11914/hovercard" href="https://github.com/apache/druid/pull/11914">#11914</a>)</li>
<li>Improved the way the <code class="notranslate">DruidRexExecutor</code> handles numeric arrays (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1059492347" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11968" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11968/hovercard" href="https://github.com/apache/druid/pull/11968">#11968</a>)</li>
<li>Druid now returns an empty result after optimizing a GROUP BY query to a time series query (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1079709691" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12065" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12065/hovercard" href="https://github.com/apache/druid/pull/12065">#12065</a>)</li>
<li>As an administrator, you can now configure the implementation for APPROX_COUNT_DISTINCT and COUNT(DISTINCT expr) in approximate mode (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="870647461" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11181" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11181/hovercard" href="https://github.com/apache/druid/pull/11181">#11181</a>)</li>
</ul>
<h2 dir="auto"><a name="user-content-0.23.0-new-features-coordinator%2foverlord" href="#0.23.0-new-features-coordinator%2Foverlord">#</a> Coordinator/Overlord</h2>
<ul dir="auto">
<li>Coordinator can be overwhelmed by the connections from other druid services, especially when TLS is enabled. You can mitigate this by setting <code class="notranslate">druid.global.http.eagerInitialization</code> to <code class="notranslate">false</code> in common runtime properties.</li>
</ul>
<h2 dir="auto"><a name="user-content-0.23.0-new-features-web-console" href="#0.23.0-new-features-web-console">#</a> Web console</h2>
<ul dir="auto">
<li>Query view can now cancel all queries issued from it (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1005544931" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11738" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11738/hovercard" href="https://github.com/apache/druid/pull/11738">#11738</a>)</li>
<li>The auto refresh functions will now run in foreground only (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1010126362" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11750" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11750/hovercard" href="https://github.com/apache/druid/pull/11750">#11750</a>) this prevents forgotten background console tabs from putting any load on the cluster.</li>
<li>Add a <code class="notranslate">Segment size</code> (in bytes) column to the Datasources view (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1025704808" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11797" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11797/hovercard" href="https://github.com/apache/druid/pull/11797">#11797</a>)</li>
</ul>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/177816/167921423-b6ca2a24-4af7-4b48-bff7-3c16e3e9c398.png"><img width="264" alt="image" src="https://user-images.githubusercontent.com/177816/167921423-b6ca2a24-4af7-4b48-bff7-3c16e3e9c398.png" style="max-width: 100%;"></a></p>
<ul dir="auto">
<li>Format numbers with commas in the query view (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1072737309" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12031" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12031/hovercard" href="https://github.com/apache/druid/pull/12031">#12031</a>)</li>
<li>Add a JSON Diff view for supervisor specs (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1085329526" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12085" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12085/hovercard" href="https://github.com/apache/druid/pull/12085">#12085</a>)</li>
</ul>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/177816/167922122-32466a67-0364-4f7e-93d0-0675abc29158.png"><img src="https://user-images.githubusercontent.com/177816/167922122-32466a67-0364-4f7e-93d0-0675abc29158.png" alt="image" style="max-width: 100%;"></a></p>
<ul dir="auto">
<li>Improve the formatting and info contents of code auto suggestion docs (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1085329526" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12085" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12085/hovercard" href="https://github.com/apache/druid/pull/12085">#12085</a>)</li>
</ul>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/177816/167922311-99c79f49-0aa1-4ae4-903d-097fae7ee3f4.png"><img src="https://user-images.githubusercontent.com/177816/167922311-99c79f49-0aa1-4ae4-903d-097fae7ee3f4.png" alt="image" style="max-width: 100%;"></a></p>
<ul dir="auto">
<li>Add shard detail column to segments view (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1117990191" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12212" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12212/hovercard" href="https://github.com/apache/druid/pull/12212">#12212</a>)</li>
</ul>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/177816/167922493-8e621a41-631c-4eae-9005-359c5aab7473.png"><img src="https://user-images.githubusercontent.com/177816/167922493-8e621a41-631c-4eae-9005-359c5aab7473.png" alt="image" style="max-width: 100%;"></a></p>
<ul dir="auto">
<li>Avoid refreshing tables if a menu is open (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1203861788" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12435" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12435/hovercard" href="https://github.com/apache/druid/pull/12435">#12435</a>)</li>
<li>Misc other bug fixes and usability improvements</li>
</ul>
<h2 dir="auto"><a name="user-content-0.23.0-new-features-metrics" href="#0.23.0-new-features-metrics">#</a> Metrics</h2>
<h3 dir="auto"><a name="user-content-0.23.0-new-features-metrics-query-metrics-now-also-set-the-%60vectorized%60-dimension-by-default.-this-can-be-helpful-in-understanding-performance-profile-of-queries." href="#0.23.0-new-features-metrics-query-metrics-now-also-set-the-%60vectorized%60-dimension-by-default.-this-can-be-helpful-in-understanding-performance-profile-of-queries.">#</a> Query metrics now also set the <code class="notranslate">vectorized</code> dimension by default. This can be helpful in understanding performance profile of queries.</h3>
<p dir="auto"><a href="https://github.com/apache/druid/pull/12464" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12464/hovercard">12464</a></p>
<h3 dir="auto"><a name="user-content-0.23.0-new-features-metrics-auto-compaction-duty-also-report-duty-metrics-now.-a-dimension-to-indicate-the-duty-group-has-also-been-added." href="#0.23.0-new-features-metrics-auto-compaction-duty-also-report-duty-metrics-now.-a-dimension-to-indicate-the-duty-group-has-also-been-added.">#</a> Auto-compaction duty also report duty metrics now. A dimension to indicate the duty group has also been added.</h3>
<p dir="auto"><a href="https://github.com/apache/druid/pull/12352" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12352/hovercard">12352</a></p>
<p dir="auto">This release includes several additional improvements for metrics:</p>
<ul dir="auto">
<li>Druid includes the Prometheus emitter by defult (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1030110741" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11812" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11812/hovercard" href="https://github.com/apache/druid/pull/11812">#11812</a>)</li>
<li>Fixed the missing <code class="notranslate">conversionFactor</code> in Prometheus emitter (12338)</li>
<li>Fixed an issue with the <code class="notranslate">ingest/events/messageGap</code> metric (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1170521480" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12337" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12337/hovercard" href="https://github.com/apache/druid/pull/12337">#12337</a>)</li>
<li>Added metrics for Shenandoah GC (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1182869481" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12369" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12369/hovercard" href="https://github.com/apache/druid/pull/12369">#12369</a>)</li>
<li>Added metrics as follows: <code class="notranslate">Cpu</code> and <code class="notranslate">CpuSet</code> to <code class="notranslate">java.util.metrics.cgroups</code>, <code class="notranslate">ProcFsUtil</code> for <code class="notranslate">procfs</code> info, and <code class="notranslate">CgroupCpuMonitor</code> and <code class="notranslate">CgroupCpuSetMonitor</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1013646035" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11763" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11763/hovercard" href="https://github.com/apache/druid/pull/11763">#11763</a>)</li>
<li>Added support to route data through an HTTP proxy (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1047871710" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11891" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11891/hovercard" href="https://github.com/apache/druid/pull/11891">#11891</a>)</li>
<li>Added more metrics for Jetty server thread pool usage (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="857299619" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11113" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11113/hovercard" href="https://github.com/apache/druid/pull/11113">#11113</a>)</li>
<li>Added worker category as a dimension TaskSlot metric of the indexing service (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="962219740" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11554" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11554/hovercard" href="https://github.com/apache/druid/pull/11554">#11554</a>)</li>
<li>Added <code class="notranslate">partitioningType</code> dimension to <code class="notranslate">segment/added/bytes</code> metric to track usage of different partitioning schemes (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1049700242" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11902" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11902/hovercard" href="https://github.com/apache/druid/pull/11902">#11902</a>)</li>
<li>Added query laning metrics to visualize lane assignment (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1092316163" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12111" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12111/hovercard" href="https://github.com/apache/druid/pull/12111">#12111</a>)</li>
</ul>
<h2 dir="auto"><a name="user-content-0.23.0-new-features-cloud-integrations" href="#0.23.0-new-features-cloud-integrations">#</a> Cloud integrations</h2>
<h3 dir="auto"><a name="user-content-0.23.0-new-features-cloud-integrations-allow-authenticating-via-shared-access-resource-for-azure-storage" href="#0.23.0-new-features-cloud-integrations-allow-authenticating-via-shared-access-resource-for-azure-storage">#</a> Allow authenticating via Shared access resource for azure storage</h3>
<p dir="auto"><a href="https://github.com/apache/druid/pull/12266" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12266/hovercard">12266</a></p>
<h2 dir="auto"><a name="user-content-0.23.0-new-features-other-changes" href="#0.23.0-new-features-other-changes">#</a> Other changes</h2>
<ul dir="auto">
<li>Druid now processes lookup load failures more quickly (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1192644845" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12397" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12397/hovercard" href="https://github.com/apache/druid/pull/12397">#12397</a>)</li>
<li><code class="notranslate">BalanceSegments#balanceServers</code> now exits early when there is no balancing work to do (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1015386262" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11768" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11768/hovercard" href="https://github.com/apache/druid/pull/11768">#11768</a>)</li>
<li><code class="notranslate">DimensionHandler</code> now allows you to define a <code class="notranslate">DimensionSpec</code> appropriate for the type of dimension to handle (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1043415744" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11873" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11873/hovercard" href="https://github.com/apache/druid/pull/11873">#11873</a>)</li>
<li>Added an interface for external schema providers to Druid SQL (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1074819348" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12043" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12043/hovercard" href="https://github.com/apache/druid/pull/12043">#12043</a>)</li>
</ul>
<h1 dir="auto"><a name="user-content-0.23.0-security-fixes" href="#0.23.0-security-fixes">#</a> Security fixes</h1>
<h2 dir="auto"><a name="user-content-0.23.0-security-fixes-support-for-access-control-on-setting-query-contexts" href="#0.23.0-security-fixes-support-for-access-control-on-setting-query-contexts">#</a> Support for access control on setting query contexts</h2>
<p dir="auto">Today, any context params are allowed to users. This can cause 1) a bad UX if the context param is not matured yet or 2) even query failure or system fault in the worst case if a sensitive param is abused, ex) maxSubqueryRows. Druid now has an ability to limit context params per user role. That means, a query will fail if you have a context param set in the query that is not allowed to you.</p>
<p dir="auto">The context parameter authorization can be enabled using Druid.<code class="notranslate">auth.authorizeQueryContextParam</code>s. This is disabled by default to enable a smoother upgrade experience.</p>
<p dir="auto">(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1192373091" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12396" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12396/hovercard" href="https://github.com/apache/druid/pull/12396">#12396</a>)</p>
<h2 dir="auto"><a name="user-content-0.23.0-security-fixes-other-security-improvements" href="#0.23.0-security-fixes-other-security-improvements">#</a> Other security improvements</h2>
<p dir="auto">This release includes several additional improvements for security:</p>
<ul dir="auto">
<li>You can now optionally enable auhorization on Druid system tables (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="999630803" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11720" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11720/hovercard" href="https://github.com/apache/druid/pull/11720">#11720</a>)</li>
<li>Log4j2 has been upgraded to 2.17.1 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1090816624" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12106" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12106/hovercard" href="https://github.com/apache/druid/pull/12106">#12106</a>)</li>
</ul>
<h1 dir="auto"><a name="user-content-0.23.0-security-fixes-performance-improvements" href="#0.23.0-security-fixes-performance-improvements">#</a> Performance improvements</h1>
<h3 dir="auto"><a name="user-content-0.23.0-security-fixes-performance-improvements-ingestion" href="#0.23.0-security-fixes-performance-improvements-ingestion">#</a> Ingestion</h3>
<ul dir="auto">
<li>More accurate memory estimations while building an on-heap incremental index. Rather than using the maximum possible aggregated row size, Druid can now use (based on a task context flag) a closer estimate of the actual heap footprint of an aggregated row. This enables the indexer to fit more rows in memory before performing an intermediate persist. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1081194905" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12073" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12073/hovercard" href="https://github.com/apache/druid/pull/12073">#12073</a>)</li>
</ul>
<h3 dir="auto"><a name="user-content-0.23.0-security-fixes-performance-improvements-sql" href="#0.23.0-security-fixes-performance-improvements-sql">#</a> SQL</h3>
<ul dir="auto">
<li>Vectorized virtual column processing is enabled by default. It will improve performance for majority of the queries. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1235604030" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12520" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12520/hovercard" href="https://github.com/apache/druid/pull/12520">#12520</a>)</li>
<li>Improved performance for SQL queries with large IN filters. You can achieve better performance by reducing <code class="notranslate">inSubQueryThreshold</code> in SQL query context. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1174436006" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12357" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12357/hovercard" href="https://github.com/apache/druid/pull/12357">#12357</a>)</li>
<li><code class="notranslate">time_shift</code> is now vectorized (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1130762749" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12254" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12254/hovercard" href="https://github.com/apache/druid/pull/12254">#12254</a>)</li>
</ul>
<h1 dir="auto"><a name="user-content-0.23.0-bug-fixes" href="#0.23.0-bug-fixes">#</a> Bug fixes</h1>
<p dir="auto">Druid 0.23.0 contains over 68 bug fixes. You can find the complete list <a href="https://github.com/apache/druid/issues?q=milestone%3A0.23.0+label%3ABug">here</a></p>
<h1 dir="auto"><a name="user-content-0.23.0-upgrading-to-0.23.0" href="#0.23.0-upgrading-to-0.23.0">#</a> Upgrading to 0.23.0</h1>
<p dir="auto">Consider the following changes and updates when upgrading from Druid 0.22.x to 0.23.0. If you're updating from an earlier version than 0.22.1, see the release notes of the relevant intermediate versions.</p>
<h2 dir="auto"><a name="user-content-0.23.0-upgrading-to-0.23.0-autokill" href="#0.23.0-upgrading-to-0.23.0-autokill">#</a> Auto-killing of segments</h2>
<p dir="auto">In <code class="notranslate">0.23.0</code>,  Auto killing of segments is now enabled by default (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1110760022" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12187" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12187/hovercard" href="https://github.com/apache/druid/pull/12187">#12187</a>). The new defaults should kill all unused segments older than 90 days. If users do not want this behavior on an upgrade, they should explicitly disable the behavior. This is a risky change since depending on the interval, segments will be killed immediately after being marked unused. this behavior will be reverted or changed in the next druid release. Please see (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1280786117" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/12693" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12693/hovercard" href="https://github.com/apache/druid/pull/12693">#12693</a>) for more details.</p>
<h2 dir="auto"><a name="user-content-0.23.0-upgrading-to-0.23.0-other-changes" href="#0.23.0-upgrading-to-0.23.0-other-changes">#</a> Other changes</h2>
<ul dir="auto">
<li>Kinesis ingestion requires <code class="notranslate">listShards</code> API access on the stream.</li>
<li>Kafka clients libraries have been upgraded to <code class="notranslate">3.0.0</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1004785283" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11735" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11735/hovercard" href="https://github.com/apache/druid/pull/11735">#11735</a>)</li>
<li>The dynamic coordinator config, percentOfSegmentsToConsiderPerMove has been deprecated and will be removed in a future release of Druid. It is being replaced by a new segment picking strategy introduced in (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="891722337" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11257" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11257/hovercard" href="https://github.com/apache/druid/pull/11257">#11257</a>). This new strategy is currently toggled off by default, but can be toggled on if you set the dynamic coordinator config useBatchedSegmentSampler to true. Setting this as such, will disable the use of the deprecated percentOfSegmentsToConsiderPerMove. In a future release, useBatchedSegmentSampler will become permanently true. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1058978336" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11960" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11960/hovercard" href="https://github.com/apache/druid/pull/11960">#11960</a>)</li>
</ul>
<h1 dir="auto"><a name="user-content-0.23.0-developer-notices" href="#0.23.0-developer-notices">#</a> Developer notices</h1>
<h2 dir="auto"><a name="user-content-0.23.0-developer-notices-updated-airline-dependency-to-2.x" href="#0.23.0-developer-notices-updated-airline-dependency-to-2.x">#</a> updated airline dependency to 2.x</h2>
<p dir="auto"><a href="https://github.com/airlift/airline">https://github.com/airlift/airline</a> is no longer maintained and so druid has upgraded to <a href="https://github.com/rvesse/airline">https://github.com/rvesse/airline</a> (Airline 2) to use an actively<br>
maintained version, while minimizing breaking changes.</p>
<p dir="auto">This is a backwards incompatible change, and custom extensions relying on the CliCommandCreator extension point will also need to be updated.</p>
<p dir="auto"><a href="https://github.com/apache/druid/pull/12270" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12270/hovercard">12270</a></p>
<h2 dir="auto"><a name="user-content-0.23.0-developer-notices-return-404-instead-of-400-for-unknown-supervisors-or-tasks" href="#0.23.0-developer-notices-return-404-instead-of-400-for-unknown-supervisors-or-tasks">#</a> Return 404 instead of 400 for unknown supervisors or tasks</h2>
<p dir="auto">Earlier supervisor/task endpoint return 400 when a supervisor or a task is not found. This status code is not friendly and confusing for the 3rd system. And according to the definition of HTTP status code, 404 is right code for such case. So we have changed the status code from 400 to 404 to eliminate the ambigiuty. Any clients of these endpoints should change the response code handling accordingly.</p>
<p dir="auto"><a href="https://github.com/apache/druid/pull/11724" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11724/hovercard">11724</a></p>
<h2 dir="auto"><a name="user-content-0.23.0-developer-notices-return-400-instead-of-500-when-sql-query-cannot-be-planned" href="#0.23.0-developer-notices-return-400-instead-of-500-when-sql-query-cannot-be-planned">#</a> Return 400 instead of 500 when SQL query cannot be planned</h2>
<p dir="auto">Any SQL query that cannot be planned by Druid is not considered a bad request. For such queries, we now return 400. Developers using SQL API should change the response code handling if needed.</p>
<p dir="auto"><a href="https://github.com/apache/druid/pull/12033" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/12033/hovercard">12033</a></p>
<h2 dir="auto"><a name="user-content-0.23.0-developer-notices-responsecontext-refactoring" href="#0.23.0-developer-notices-responsecontext-refactoring">#</a> ResponseContext refactoring</h2>
<p dir="auto"><code class="notranslate">0.23.0</code> changes the the <code class="notranslate">ResponseContext</code> and it's keys in a breaking way. The prior version of the response context suggested that keys be defined in an enum, then registered. This version suggests that keys be defined as objects, then registered. See the <code class="notranslate">ResponseContext</code> class itself for the details.</p>
<p dir="auto">(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1033060654" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11828" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11828/hovercard" href="https://github.com/apache/druid/pull/11828">#11828</a>)</p>
<h2 dir="auto"><a name="user-content-0.23.0-developer-notices-other-changes" href="#0.23.0-developer-notices-other-changes">#</a> Other changes</h2>
<ul dir="auto">
<li><code class="notranslate">SingleServerInventoryView</code> has been removed. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1015959332" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11770" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11770/hovercard" href="https://github.com/apache/druid/pull/11770">#11770</a>)</li>
<li><code class="notranslate">LocalInputSource</code> does not allow ingesting same file multiple times. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1059248438" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11965" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11965/hovercard" href="https://github.com/apache/druid/pull/11965">#11965</a>)</li>
<li><code class="notranslate">getType()</code> in <code class="notranslate">PostAggregator</code> is deprecated in favour of <code class="notranslate">getType(ColumnInspector)</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1031062062" data-permission-text="Title is private" data-url="https://github.com/apache/druid/issues/11818" data-hovercard-type="pull_request" data-hovercard-url="/apache/druid/pull/11818/hovercard" href="https://github.com/apache/druid/pull/11818">#11818</a>)</li>
</ul>
<h1 dir="auto"><a name="user-content-0.23.0-known-issues" href="#0.23.0-known-issues">#</a> Known issues</h1>
<p dir="auto">For a full list of open issues, please see <a href="https://github.com/apache/druid/labels/Bug">Bug</a> .</p>
<h1 dir="auto"><a name="user-content-0.23.0-credits" href="#0.23.0-credits">#</a> Credits</h1>
<p dir="auto">Thanks to everyone who contributed to this release!</p>
<p dir="auto"><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/2bethere/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/2bethere">@2bethere</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/317brian/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/317brian">@317brian</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/a2l007/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/a2l007">@a2l007</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/abhishekagarwal87/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/abhishekagarwal87">@abhishekagarwal87</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adarshsanjeev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adarshsanjeev">@adarshsanjeev</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aggarwalakshay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aggarwalakshay">@aggarwalakshay</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AlexanderSaydakov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AlexanderSaydakov">@AlexanderSaydakov</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AmatyaAvadhanula/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AmatyaAvadhanula">@AmatyaAvadhanula</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/andreacyc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/andreacyc">@andreacyc</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ApoorvGuptaAi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ApoorvGuptaAi">@ApoorvGuptaAi</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/arunramani/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arunramani">@arunramani</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/asdf2014/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/asdf2014">@asdf2014</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AshishKapoor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AshishKapoor">@AshishKapoor</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benkrug/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benkrug">@benkrug</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/capistrant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/capistrant">@capistrant</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Caroline1000/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Caroline1000">@Caroline1000</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cheddar/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cheddar">@cheddar</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chenhuiyeh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chenhuiyeh">@chenhuiyeh</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/churromorales/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/churromorales">@churromorales</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/clintropolis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/clintropolis">@clintropolis</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cryptoe/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cryptoe">@cryptoe</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidferlay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidferlay">@davidferlay</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dbardbar/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dbardbar">@dbardbar</a><br>
<a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot]<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/didip/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/didip">@didip</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dkoepke/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dkoepke">@dkoepke</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dungdm93/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dungdm93">@dungdm93</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ektravel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ektravel">@ektravel</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/emirot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/emirot">@emirot</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/FrankChen021/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/FrankChen021">@FrankChen021</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gianm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gianm">@gianm</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hqx871/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hqx871">@hqx871</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iMichka/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iMichka">@iMichka</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/imply-cheddar/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/imply-cheddar">@imply-cheddar</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/isandeep41/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/isandeep41">@isandeep41</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/IvanVan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/IvanVan">@IvanVan</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jacobtolar/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jacobtolar">@jacobtolar</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasonk000/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasonk000">@jasonk000</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jgoz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jgoz">@jgoz</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jihoonson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jihoonson">@jihoonson</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jon-wei/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jon-wei">@jon-wei</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/josephglanville/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/josephglanville">@josephglanville</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joyking7/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joyking7">@joyking7</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kfaraz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kfaraz">@kfaraz</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/klarose/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/klarose">@klarose</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LakshSingla/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LakshSingla">@LakshSingla</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liran-funaro/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liran-funaro">@liran-funaro</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lokesh-lingarajan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lokesh-lingarajan">@lokesh-lingarajan</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/loquisgon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/loquisgon">@loquisgon</a><br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mark-imply/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mark-imply">@mark-imply</a><br>
@maytasm<br>
@mchades<br>
@nikhil-ddu<br>
@paul-rogers<br>
@petermarshallio<br>
@pjain1<br>
@pjfanning<br>
@rohangarg<br>
@samarthjain<br>
@sergioferragut<br>
@shallada<br>
@somu-imply<br>
@sthetland<br>
@suneet-s<br>
@syacobovitz<br>
@Tassatux<br>
@techdocsmith<br>
@tejaswini-imply<br>
@themarcelor<br>
@TSFenwick<br>
@uschindler<br>
@v-vishwa<br>
@Vespira<br>
@vogievetsky<br>
@vtlim<br>
@wangxiaobaidu11<br>
@williamhyun<br>
@wjhypo<br>
@xvrl<br>
@yuanlihan<br>
@zachjsh</p>
<p dir="auto">Druid version used: 0.8.3</p>
<p dir="auto">I noticed this while restarting one of my kafka replicas.</p>
<p dir="auto">It seems the realtime node read a msg twice due to this and ended up aggregating it. We saw metrics everywhere doubled due to that.</p>
<p dir="auto">Realtime nodes should check for duplicates. if entire row is exactly the same as previous, then discard it.</p>