blob: 9056731a8a3d8d9ffa9e808d43b06bb6de493648 [file]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="copyright" content="(C) Copyright 2025" />
<meta name="DC.rights.owner" content="(C) Copyright 2025" />
<meta name="DC.Type" content="concept" />
<meta name="DC.Title" content="Incompatible Changes and Limitations in Apache Impala" />
<meta name="DC.Relation" scheme="URI" content="../topics/impala_release_notes.html" />
<meta name="prodname" content="Impala" />
<meta name="prodname" content="Impala" />
<meta name="version" content="Impala 3.4.x" />
<meta name="version" content="Impala 3.4.x" />
<meta name="DC.Format" content="XHTML" />
<meta name="DC.Identifier" content="incompatible_changes" />
<link rel="stylesheet" type="text/css" href="../commonltr.css" />
<title>Incompatible Changes and Limitations in Apache Impala</title>
</head>
<body id="incompatible_changes">
<h1 class="title topictitle1" id="ariaid-title1"><span class="ph">Incompatible Changes and Limitations in
Apache Impala</span></h1>
<div class="body conbody">
<p class="p"> The Impala version covered by this documentation library contains the
following incompatible changes. These are things such as file format
changes, removed features, or changes to implementation, default
configuration, dependencies, or prerequisites that could cause issues
during or after an Impala upgrade. </p>
<p class="p"> Even added SQL statements or clauses can produce incompatibilities, if
you have databases, tables, or columns whose names conflict with the new
keywords. <span class="ph">See <a class="xref" href="impala_reserved_words.html#reserved_words">Impala Reserved Words</a> for the set of
reserved words for the current release, and the quoting techniques to
avoid name conflicts.</span>
</p>
<p class="p toc inpage"></p>
</div>
<div class="related-links">
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a class="link" href="../topics/impala_release_notes.html">Impala Release Notes</a></div>
</div>
</div><div class="topic concept nested1" aria-labelledby="ariaid-title2" id="incompatible_changes_400x">
<h2 class="title topictitle2" id="ariaid-title2">Incompatible Changes Introduced in Impala 4.0.x</h2>
<div class="body conbody">
<p class="p"> For the full list of incompatible changes introduced in this release,
see the <a class="xref" href="https://impala.apache.org/docs/release-notes-4.0.html" target="_blank">release notes for <span class="keyword">Impala 4.0</span></a>.
</p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title3" id="incompatible_changes_340x">
<h2 class="title topictitle2" id="ariaid-title3">Incompatible Changes Introduced in Impala 3.4.x</h2>
<div class="body conbody">
<div class="p"> For the full list of issues closed in this release, including any that
introduce behavior changes or incompatibilities, see the <a class="xref" href="https://impala.apache.org/docs/changelog-3.4.html" target="_blank">changelog for <span class="keyword">Impala 3.4</span></a>. <ul class="ul">
<li class="li">To optimize query performance, Impala planner uses the value of
the <code class="ph codeph">fs.s3a.block.size</code> startup flag when calculating
the split size on non-block based stores, e.g. S3, ADLS, etc.
Starting in this release, Impala planner uses the
<code class="ph codeph">PARQUET_OBJECT_STORE_SPLIT_SIZE</code> query option to
get the Parquet file format specific split size.<p class="p">For Parquet
files, the <code class="ph codeph">fs.s3a.block.size</code> startup flag is no
longer used.</p>
<p class="p">The default value of the
<code class="ph codeph">PARQUET_OBJECT_STORE_SPLIT_SIZE</code> query option is
256 MB.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title4" id="incompatible_changes_330x">
<h2 class="title topictitle2" id="ariaid-title4">Incompatible Changes Introduced in Impala 3.3.x</h2>
<div class="body conbody">
<div class="p"> For the full list of issues closed in this release, including any that
introduce behavior changes or incompatibilities, see the <a class="xref" href="https://impala.apache.org/docs/changelog-3.3.html" target="_blank">changelog for <span class="keyword">Impala 3.3</span></a>. <ul class="ul">
<li class="li">Default file format changed to Parquet<p class="p">When you create a table,
the default format for that table data is now Parquet.</p>
<p class="p">For
backward compatibility, you can use the DEFAULT_FILE_FORMAT query
option to set the default file format to the previous default,
text, or other formats.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title5" id="incompatible_changes_320x">
<h2 class="title topictitle2" id="ariaid-title5">Incompatible Changes Introduced in Impala 3.2.x</h2>
<div class="body conbody">
<p class="p"> For the full list of issues closed in this release, including any that
introduce behavior changes or incompatibilities, see the <a class="xref" href="https://impala.apache.org/docs/changelog-3.2.html" target="_blank">changelog for <span class="keyword">Impala 3.2</span></a>. </p>
<ul class="ul">
<li class="li">The Port change for the <code class="ph codeph">SHUTDOWN</code> command<p class="p">The
<code class="ph codeph">SHUTDOWN</code> command for shutting down a remote
server used the backend port in Impala 3.1. Starting in Impala 3.2,
the command uses the KRPC port, e.g.<code class="ph codeph">
:shutdown('host100:27000')</code>.</p>
</li>
</ul>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title6" id="incompatible_changes_310x">
<h2 class="title topictitle2" id="ariaid-title6">Incompatible Changes Introduced in Impala 3.1.x</h2>
<div class="body conbody">
<p class="p"> For the full list of issues closed in this release, including any that
introduce behavior changes or incompatibilities, see the <a class="xref" href="https://impala.apache.org/docs/changelog-3.1.html" target="_blank">changelog for <span class="keyword">Impala 3.1</span></a>. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title7" id="incompatible_changes_300x">
<h2 class="title topictitle2" id="ariaid-title7">Incompatible Changes Introduced in Impala 3.0.x</h2>
<div class="body conbody">
<p class="p"> For the full list of issues closed in this release, including any that
introduce behavior changes or incompatibilities, see the <a class="xref" href="https://impala.apache.org/docs/changelog-3.0.html" target="_blank">changelog for <span class="keyword">Impala 3.0</span></a>. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title8" id="incompatible_changes_212x">
<h2 class="title topictitle2" id="ariaid-title8">Incompatible Changes Introduced in Impala 2.12.x</h2>
<div class="body conbody">
<p class="p"> For the full list of issues closed in this release, including any that
introduce behavior changes or incompatibilities, see the <a class="xref" href="https://impala.apache.org/docs/changelog-2.12.html" target="_blank">changelog for <span class="keyword">Impala 2.12</span></a>. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title9" id="incompatible_changes_211x">
<h2 class="title topictitle2" id="ariaid-title9">Incompatible Changes Introduced in Impala 2.11.x</h2>
<div class="body conbody">
<p class="p"> For the full list of issues closed in this release, including any that
introduce behavior changes or incompatibilities, see the <a class="xref" href="https://impala.apache.org/docs/changelog-2.11.html" target="_blank">changelog for <span class="keyword">Impala 2.11</span></a>. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title10" id="incompatible_changes_210x">
<h2 class="title topictitle2" id="ariaid-title10">Incompatible Changes Introduced in Impala 2.10.x</h2>
<div class="body conbody">
<p class="p"> For the full list of issues closed in this release, including any that
introduce behavior changes or incompatibilities, see the <a class="xref" href="https://impala.apache.org/docs/changelog-2.10.html" target="_blank">changelog for <span class="keyword">Impala 2.10</span></a>. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title11" id="incompatible_changes_29x">
<h2 class="title topictitle2" id="ariaid-title11">Incompatible Changes Introduced in Impala 2.9.x</h2>
<div class="body conbody">
<p class="p"> For the full list of issues closed in this release, including any that
introduce behavior changes or incompatibilities, see the <a class="xref" href="https://impala.apache.org/docs/changelog-2.9.html" target="_blank">changelog for <span class="keyword">Impala 2.9</span></a>. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title12" id="incompatible_changes_28x">
<h2 class="title topictitle2" id="ariaid-title12">Incompatible Changes Introduced in Impala 2.8.x</h2>
<div class="body conbody">
<ul class="ul">
<li class="li">
<p class="p"> Llama support is removed completely from Impala.
Related flags (<code class="ph codeph">--enable_rm</code>) and query options (such
as <code class="ph codeph">V_CPU_CORES</code>) remain but do not have any effect. </p>
<p class="p"> If <code class="ph codeph">--enable_rm</code> is passed to
Impala, a warning is printed to the log on startup. </p>
</li>
<li class="li">
<p class="p"> The syntax related to Kudu tables includes a number of
new reserved words, such as <code class="ph codeph">COMPRESSION</code>,
<code class="ph codeph">DEFAULT</code>, and <code class="ph codeph">ENCODING</code>, that
might conflict with names of existing tables, columns, or other
identifiers from older Impala versions. See <a class="xref" href="impala_reserved_words.html#reserved_words">Impala Reserved Words</a> for the full
list of reserved words. </p>
</li>
<li class="li">
<p class="p"> The DDL syntax for Kudu tables, particularly in the
<code class="ph codeph">CREATE TABLE</code> statement, is different from the
special <code class="ph codeph">impala_next</code> fork that was previously used
for accessing Kudu tables from Impala: </p>
<ul class="ul">
<li class="li">
<p class="p"> The <code class="ph codeph">DISTRIBUTE BY</code> clause is now
<code class="ph codeph">PARTITIONED BY</code>. </p>
</li>
<li class="li">
<p class="p"> The <code class="ph codeph">INTO <var class="keyword varname">N</var> BUCKETS</code> clause
is now <code class="ph codeph">PARTITIONS <var class="keyword varname">N</var></code>. </p>
</li>
<li class="li">
<p class="p"> The <code class="ph codeph">SPLIT ROWS</code> clause is replaced by
different syntax for specifying the ranges covered by each
partition. </p>
</li>
</ul>
</li>
<li class="li">
<p class="p"> The <code class="ph codeph">DESCRIBE</code> output for Kudu tables includes
several extra columns. </p>
</li>
<li class="li">
<p class="p"> Non-primary-key columns can contain
<code class="ph codeph">NULL</code> values by default. The <code class="ph codeph">SHOW CREATE
TABLE</code> output for these columns displays the
<code class="ph codeph">NULL</code> attribute. There was a period during early
experimental versions of Impala + Kudu where non-primary-key columns
had the <code class="ph codeph">NOT NULL</code> attribute by default. </p>
</li>
<li class="li">
<p class="p"> The <code class="ph codeph">IGNORE</code> keyword that
was present in early experimental versions of Impala + Kudu is no
longer present. The behavior of the <code class="ph codeph">IGNORE</code> keyword
is now the default: DML statements continue with warnings, instead
of failing with errors, if they encounter conditions such as
<span class="q">"primary key already exists"</span> for an <code class="ph codeph">INSERT</code>
statement or <span class="q">"primary key already deleted"</span> for a
<code class="ph codeph">DELETE</code> statement. </p>
</li>
<li class="li">
<p class="p"> The replication factor for Kudu tables must be
an odd number. </p>
</li>
<li class="li">
<p class="p"> A UDF compiled into an LLVM IR bitcode module
(<code class="ph codeph">.bc</code>) might encounter a runtime error when native
code generation is turned off by setting the query option
<code class="ph codeph">DISABLE_CODEGEN=1</code>. This issue also applies when
running a built-in or native UDF with more than 20 arguments. See
<a class="xref" href="https://issues.apache.org/jira/browse/IMPALA-4432" target="_blank">IMPALA-4432</a> for details. As a
workaround, either turn native code generation back on with the
query option <code class="ph codeph">DISABLE_CODEGEN=0</code>, or use the regular
UDF compilation path that does not produce an IR module. </p>
</li>
</ul>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title13" id="incompatible_changes_27x">
<h2 class="title topictitle2" id="ariaid-title13">Incompatible Changes Introduced in Impala 2.7.x</h2>
<div class="body conbody">
<ul class="ul">
<li class="li">
<p class="p"> Bug fixes related to parsing of
floating-point values (IMPALA-1731 and IMPALA-3868) can change the
results of casting strings that represent invalid floating-point
values. For example, formerly a string value beginning or ending
with <code class="ph codeph">inf</code>, such as <code class="ph codeph">1.23inf</code> or
<code class="ph codeph">infinite</code>, now are converted to
<code class="ph codeph">NULL</code> when interpreted as a floating-point value.
Formerly, they were interpreted as the special <span class="q">"infinity"</span> value
when converting from string to floating-point. Similarly, now only
the string <code class="ph codeph">NaN</code> (case-sensitive) is interpreted as
the special <span class="q">"not a number"</span> value. String values containing
multiple dots, such as <code class="ph codeph">3..141</code> or
<code class="ph codeph">3.1.4.1</code>, are now interpreted as
<code class="ph codeph">NULL</code> rather than being converted to valid
floating-point values. </p>
</li>
</ul>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title14" id="incompatible_changes_26x">
<h2 class="title topictitle2" id="ariaid-title14">Incompatible Changes Introduced in Impala 2.6.x</h2>
<div class="body conbody">
<ul class="ul">
<li class="li">
<p class="p"> The default for the <code class="ph codeph">RUNTIME_FILTER_MODE</code>
query option is changed to <code class="ph codeph">GLOBAL</code> (the highest
setting). </p>
</li>
<li class="li">
<p class="p"> The <code class="ph codeph">RUNTIME_BLOOM_FILTER_SIZE</code> setting is now only
used as a fallback if statistics are not available; otherwise,
Impala uses the statistics to estimate the appropriate size to use
for each filter. </p>
</li>
<li class="li">
<p class="p"> Admission control and dynamic resource pools are
enabled by default. When upgrading from an earlier release, you must
turn on these settings yourself if they are not already enabled. See
<a class="xref" href="impala_admission.html#admission_control">Admission Control and Query Queuing</a> for details
about admission control. </p>
</li>
<li class="li">
<p class="p"> Impala reserves some new keywords, in preparation for support for
Kudu syntax: <code class="ph codeph">buckets</code>, <code class="ph codeph">delete</code>,
<code class="ph codeph">distribute</code>, <code class="ph codeph">hash</code>,
<code class="ph codeph">ignore</code>, <code class="ph codeph">split</code>, and
<code class="ph codeph">update</code>. </p>
</li>
<li class="li">
<p class="p"> For Kerberized clusters, the Catalog service now
uses the Kerberos principal instead of the operating sytem user that
runs the <span class="keyword cmdname">catalogd</span> daemon. This eliminates the
requirement to configure a
<code class="ph codeph">hadoop.user.group.static.mapping.overrides</code>
setting to put the OS user into the Sentry administrative group, on
clusters where the principal and the OS user name for this user are
different. </p>
</li>
<li class="li">
<p class="p"> The mechanism for interpreting <code class="ph codeph">DECIMAL</code> literals
is improved, no longer going through an intermediate conversion step
to <code class="ph codeph">DOUBLE</code>: </p>
<ul class="ul">
<li class="li">
<p class="p"> Casting a <code class="ph codeph">DECIMAL</code> value to
<code class="ph codeph">TIMESTAMP</code>
<code class="ph codeph">DOUBLE</code> produces a more precise value for the
<code class="ph codeph">TIMESTAMP</code> than formerly. </p>
</li>
<li class="li">
<p class="p"> Certain function calls involving
<code class="ph codeph">DECIMAL</code> literals now succeed, when formerly
they failed due to lack of a function signature with a
<code class="ph codeph">DOUBLE</code> argument. </p>
</li>
</ul>
</li>
<li class="li">
<p class="p"> Improved type accuracy for <code class="ph codeph">CASE</code>
return values. If all <code class="ph codeph">WHEN</code> clauses of the
<code class="ph codeph">CASE</code> expression are of <code class="ph codeph">CHAR</code>
type, the final result is also <code class="ph codeph">CHAR</code> instead of
being converted to <code class="ph codeph">STRING</code>. </p>
</li>
<li class="li">
<div class="p">
The initial release of <span class="keyword">Impala 2.5</span> sometimes has a higher peak
memory usage than in previous releases while reading Parquet files. The following query
options might help to reduce memory consumption in the Parquet scanner:
<ul class="ul">
<li class="li">
Reduce the number of scanner threads, for example: <code class="ph codeph">set
num_scanner_threads=30</code>
</li>
<li class="li">
Reduce the batch size, for example: <code class="ph codeph">set batch_size=512</code>
</li>
<li class="li">
Increase the memory limit, for example: <code class="ph codeph">set mem_limit=64g</code>
</li>
</ul>
You can track the status of the fix for this issue at
<a class="xref" href="https://issues.apache.org/jira/browse/IMPALA-3662" target="_blank">IMPALA-3662</a>.
</div>
</li>
<li class="li">
<p class="p"> The <code class="ph codeph">S3_SKIP_INSERT_STAGING</code> query option, which is
enabled by default, increases the speed of <code class="ph codeph">INSERT</code>
operations for S3 tables. The speedup applies to regular
<code class="ph codeph">INSERT</code>, but not <code class="ph codeph">INSERT
OVERWRITE</code>. The tradeoff is the possibility of inconsistent
output files left behind if a node fails during
<code class="ph codeph">INSERT</code> execution. See <a class="xref" href="impala_s3_skip_insert_staging.html#s3_skip_insert_staging">S3_SKIP_INSERT_STAGING Query Option (Impala 2.6 or higher only)</a>
for details. </p>
</li>
</ul>
<p class="p"> Certain features are turned off by default, to avoid regressions or
unexpected behavior following an upgrade. Consider turning on these
features after suitable testing: </p>
<ul class="ul">
<li class="li">
<p class="p"> Impala now recognizes the
<code class="ph codeph">auth_to_local</code> setting, specified through the HDFS
configuration setting
<code class="ph codeph">hadoop.security.auth_to_local</code>. This feature is
disabled by default; to enable it, specify
<code class="ph codeph">--load_auth_to_local_rules=true</code> in the
<span class="keyword cmdname">impalad</span> configuration settings. </p>
</li>
<li class="li">
<p class="p"> A new query option,
<code class="ph codeph">PARQUET_ANNOTATE_STRINGS_UTF8</code>, makes Impala
include the <code class="ph codeph">UTF-8</code> annotation metadata for
<code class="ph codeph">STRING</code>, <code class="ph codeph">CHAR</code>, and
<code class="ph codeph">VARCHAR</code> columns in Parquet files created by
<code class="ph codeph">INSERT</code> or <code class="ph codeph">CREATE TABLE AS SELECT</code>
statements. </p>
</li>
<li class="li">
<p class="p"> A new query option,
<code class="ph codeph">PARQUET_FALLBACK_SCHEMA_RESOLUTION</code>, lets Impala
locate columns within Parquet files based on column name rather than
ordinal position. This enhancement improves interoperability with
applications that write Parquet files with a different order or
subset of columns than are used in the Impala table. </p>
</li>
</ul>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title15" id="incompatible_changes_25x">
<h2 class="title topictitle2" id="ariaid-title15">Incompatible Changes Introduced in Impala 2.5.x</h2>
<div class="body conbody">
<ul class="ul">
<li class="li">
<p class="p"> The admission control default limit for concurrent queries (the
<span class="ph uicontrol">max requests</span> setting) is now unlimited
instead of 200. </p>
</li>
<li class="li">
<p class="p"> Multiplying a mixture of
<code class="ph codeph">DECIMAL</code> and <code class="ph codeph">FLOAT</code> or
<code class="ph codeph">DOUBLE</code> values now returns <code class="ph codeph">DOUBLE</code>
rather than <code class="ph codeph">DECIMAL</code>. This change avoids some cases
where an intermediate value would underflow or overflow and become
<code class="ph codeph">NULL</code> unexpectedly. The results of multiplying
<code class="ph codeph">DECIMAL</code> and <code class="ph codeph">FLOAT</code> or
<code class="ph codeph">DOUBLE</code> might now be slightly less precise than
before. Previously, the intermediate types and thus the final result
depended on the exact order of the values of different types being
multiplied, which made the final result values difficult to reason
about. </p>
</li>
<li class="li">
<p class="p"> Previously, the <code class="ph codeph">_</code> and <code class="ph codeph">%</code> wildcard
characters for the <code class="ph codeph">LIKE</code> operator would not match
characters on the second or subsequent lines of multi-line string
values. The fix for issue <a class="xref" href="https://issues.apache.org/jira/browse/IMPALA-2204" target="_blank">IMPALA-2204</a> causes the wildcard matching to apply to the
entire string for values containing embedded <code class="ph codeph">\n</code>
characters. This could cause different results than in previous
Impala releases for identical queries on identical data. </p>
</li>
<li class="li">
<p class="p"> Formerly, all Impala UDFs and UDAs required running the
<code class="ph codeph">CREATE FUNCTION</code> statements to re-create them
after each <span class="keyword cmdname">catalogd</span> restart. In <span class="keyword">Impala 2.5</span> and higher, functions written in C++ are
persisted across restarts, and the requirement to re-create
functions only applies to functions written in Java. Adapt any
function-reloading logic that you have added to your Impala
environment. </p>
</li>
<li class="li">
<p class="p">
<code class="ph codeph">CREATE TABLE LIKE</code> no longer inherits HDFS caching
settings from the source table. </p>
</li>
<li class="li">
<p class="p"> The <code class="ph codeph">SHOW DATABASES</code> statement
now returns two columns rather than one. The second column includes
the associated comment string, if any, for each database. Adjust any
application code that examines the list of databases and assumes the
result set contains only a single column. </p>
</li>
<li class="li">
<p class="p"> The output of the <code class="ph codeph">SHOW FUNCTIONS</code> statement
includes two new columns, showing the kind of the function (for
example, <code class="ph codeph">BUILTIN</code>) and whether or not the function
persists across catalog server restarts. For example, the
<code class="ph codeph">SHOW FUNCTIONS</code> output for the
<code class="ph codeph">_impala_builtins</code> database starts with: </p>
<pre class="pre codeblock"><code>
+--------------+-------------------------------------------------+-------------+---------------+
| return type | signature | binary type | is persistent |
+--------------+-------------------------------------------------+-------------+---------------+
| BIGINT | abs(BIGINT) | BUILTIN | true |
| DECIMAL(*,*) | abs(DECIMAL(*,*)) | BUILTIN | true |
| DOUBLE | abs(DOUBLE) | BUILTIN | true |
...
</code></pre>
</li>
</ul>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title16" id="incompatible_changes_24x">
<h2 class="title topictitle2" id="ariaid-title16">Incompatible Changes Introduced in Impala 2.4.x</h2>
<div class="body conbody">
<p class="p"> Other than support for DSSD storage, the Impala feature set for
<span class="keyword">Impala 2.4</span> is the same as for <span class="keyword">Impala 2.3</span>. Therefore, there are no incompatible changes for
Impala introduced in <span class="keyword">Impala 2.4</span>. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title17" id="incompatible_changes_23x">
<h2 class="title topictitle2" id="ariaid-title17">Incompatible Changes Introduced in Impala 2.3.x</h2>
<div class="body conbody">
<div class="note note"><span class="notetitle">Note:</span>
<p class="p">
The use of the Llama component for integrated resource management within YARN is no
longer supported with <span class="keyword">Impala 2.3</span> and higher. The Llama support
code is removed entirely in <span class="keyword">Impala 2.8</span> and higher.
</p>
<p class="p">
For clusters running Impala alongside other data management components, you define
static service pools to define the resources available to Impala and other components.
Then within the area allocated for Impala, you can create dynamic service pools, each
with its own settings for the Impala admission control feature.
</p>
</div>
<ul class="ul">
<li class="li">
<p class="p"> If Impala encounters a Parquet file that is invalid because of an
incorrect magic number, the query skips the file. This change is
caused by the fix for issue <a class="xref" href="https://issues.apache.org/jira/browse/IMPALA-2130" target="_blank">IMPALA-2130</a>. Previously, Impala would attempt to read the
file despite the possibility that the file was corrupted. </p>
</li>
<li class="li">
<p class="p"> Previously, calls to overloaded built-in functions could treat
parameters as <code class="ph codeph">DOUBLE</code> or <code class="ph codeph">FLOAT</code> when
no overload had a signature that matched the exact argument types.
Now Impala prefers the function signature with
<code class="ph codeph">DECIMAL</code> parameters in this case. This change
avoids a possible loss of precision in function calls such as
<code class="ph codeph">greatest(0, 99999.8888)</code>; now both parameters are
treated as <code class="ph codeph">DECIMAL</code> rather than
<code class="ph codeph">DOUBLE</code>, avoiding any loss of precision in the
fractional value. This could cause slightly different results than
in previous Impala releases for certain function calls. </p>
</li>
<li class="li">
<p class="p"> Formerly, adding or subtracting a large interval value to a
<code class="ph codeph">TIMESTAMP</code> could produce a nonsensical result. Now
when the result goes outside the range of <code class="ph codeph">TIMESTAMP</code>
values, Impala returns <code class="ph codeph">NULL</code>. </p>
</li>
<li class="li">
<p class="p"> Formerly, it was possible to accidentally create a table with
identical row and column delimiters. This could happen
unintentionally, when specifying one of the delimiters and using the
default value for the other. Now an attempt to use identical
delimiters still succeeds, but displays a warning message. </p>
</li>
<li class="li">
<p class="p"> Formerly, Impala could include snippets of table data in log files
by default, for example when reporting conversion errors for data
values. Now any such log messages are only produced at higher
logging levels that you would enable only during debugging. </p>
</li>
</ul>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title18" id="incompatible_changes_22x">
<h2 class="title topictitle2" id="ariaid-title18">Incompatible Changes Introduced in Impala 2.2.x</h2>
<div class="body conbody">
<div class="section" id="incompatible_changes_22x__files_220"><h3 class="title sectiontitle"> Changes to File Handling </h3>
<p class="p">
Impala queries ignore files with extensions commonly used for temporary work files by
Hadoop tools. Any files with extensions <code class="ph codeph">.tmp</code> or
<code class="ph codeph">.copying</code> are not considered part of the Impala table. The suffix
matching is case-insensitive, so for example Impala ignores both
<code class="ph codeph">.copying</code> and <code class="ph codeph">.COPYING</code> suffixes.
</p>
<p class="p"> The log rotation feature in Impala 2.2.0 and higher means that older
log files are now removed by default. The default is to preserve the
latest 10 log files for each severity level, for each Impala-related
daemon. If you have set up your own log rotation processes that expect
older files to be present, either adjust your procedures or change the
Impala <code class="ph codeph">-max_log_files</code> setting. <span class="ph">See
<a class="xref" href="impala_logging.html#logs_rotate">Rotating Impala Logs</a> for details.</span>
</p>
</div>
<div class="section" id="incompatible_changes_22x__prereqs_210"><h3 class="title sectiontitle"> Changes to Prerequisites </h3>
<p class="p">
The prerequisite for CPU architecture has been relaxed in Impala 2.2.0 and higher. From
this release onward, Impala works on CPUs that have the SSSE3 instruction set. The SSE4
instruction set is no longer required. This relaxed requirement simplifies the upgrade
planning from Impala 1.x releases, which also worked on SSSE3-enabled processors.
</p>
</div>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title19" id="incompatible_changes_21x">
<h2 class="title topictitle2" id="ariaid-title19">Incompatible Changes Introduced in Impala 2.1.x</h2>
<div class="body conbody">
<div class="section" id="incompatible_changes_21x__prereqs_210"><h3 class="title sectiontitle"> Changes to Prerequisites </h3>
<p class="p"> Currently, Impala 2.1.x does not function on CPUs without the
SSE4.1 instruction set. This minimum CPU requirement is higher than in
previous versions, which relied on the older SSSE3 instruction set.
Check the CPU level of the hosts in your cluster before upgrading to
<span class="keyword">Impala 2.1</span>. </p>
</div>
<div class="section" id="incompatible_changes_21x__output_format_210"><h3 class="title sectiontitle"> Changes to Output Format </h3>
<p class="p"> The <span class="q">"small query"</span> optimization feature introduces some new
information in the <code class="ph codeph">EXPLAIN</code> plan, which you might need
to account for if you parse the text of the plan output. </p>
</div>
<div class="section" id="incompatible_changes_21x__reserved_words_210"><h3 class="title sectiontitle"> New Reserved Words </h3>
<p class="p"> New SQL syntax introduces additional reserved words:
<code class="ph codeph">FOR</code>, <code class="ph codeph">GRANT</code>,
<code class="ph codeph">REVOKE</code>, <code class="ph codeph">ROLE</code>,
<code class="ph codeph">ROLES</code>, <code class="ph codeph">INCREMENTAL</code>. <span class="ph">As always, see <a class="xref" href="impala_reserved_words.html#reserved_words">Impala Reserved Words</a> for the set of
reserved words for the current release, and the quoting techniques
to avoid name conflicts.</span>
</p>
</div>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title20" id="incompatible_changes_205">
<h2 class="title topictitle2" id="ariaid-title20">Incompatible Changes Introduced in Impala 2.0.5</h2>
<div class="body conbody">
<p class="p"> No incompatible changes. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title21" id="incompatible_changes_204">
<h2 class="title topictitle2" id="ariaid-title21">Incompatible Changes Introduced in Impala 2.0.4</h2>
<div class="body conbody">
<p class="p"> No incompatible changes. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title22" id="incompatible_changes_203">
<h2 class="title topictitle2" id="ariaid-title22">Incompatible Changes Introduced in Impala 2.0.3</h2>
<div class="body conbody"> </div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title23" id="incompatible_changes_202">
<h2 class="title topictitle2" id="ariaid-title23">Incompatible Changes Introduced in Impala 2.0.2</h2>
<div class="body conbody">
<p class="p"> No incompatible changes. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title24" id="incompatible_changes_201">
<h2 class="title topictitle2" id="ariaid-title24">Incompatible Changes Introduced in Impala 2.0.1</h2>
<div class="body conbody">
<ul class="ul">
<li class="li">
<p class="p">
The <code class="ph codeph">INSERT</code> statement has always left behind a hidden work directory
inside the data directory of the table. Formerly, this hidden work directory was named
<span class="ph filepath">.impala_insert_staging</span> . In Impala 2.0.1 and later, this directory
name is changed to <span class="ph filepath">_impala_insert_staging</span> . (While HDFS tools are
expected to treat names beginning either with underscore and dot as hidden, in practice
names beginning with an underscore are more widely supported.) If you have any scripts,
cleanup jobs, and so on that rely on the name of this work directory, adjust them to use
the new name.
</p>
</li>
<li class="li">
<p class="p"> The <code class="ph codeph">abs()</code> function now takes a broader range of
numeric types as arguments, and the return type is the same as the
argument type. </p>
</li>
<li class="li">
<p class="p"> Shorthand notation for character classes in regular expressions,
such as <code class="ph codeph">\d</code> for digit, are now available again in
regular expression operators and functions such as
<code class="ph codeph">regexp_extract()</code> and
<code class="ph codeph">regexp_replace()</code>. Some other differences in
regular expression behavior remain between Impala 1.x and Impala 2.x
releases. See <a class="xref" href="impala_incompatible_changes.html#incompatible_changes_200">Incompatible Changes Introduced in Impala 2.0.0</a>
for details. </p>
</li>
</ul>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title25" id="incompatible_changes_200">
<h2 class="title topictitle2" id="ariaid-title25">Incompatible Changes Introduced in Impala 2.0.0</h2>
<div class="body conbody">
<div class="section" id="incompatible_changes_200__prereqs_200"><h3 class="title sectiontitle"> Changes to Prerequisites </h3>
<p class="p"> Currently, Impala 2.0.x does not function on CPUs without the
SSE4.1 instruction set. This minimum CPU requirement is higher than in
previous versions, which relied on the older SSSE3 instruction set.
Check the CPU level of the hosts in your cluster before upgrading to
<span class="keyword">Impala 2.0</span>. </p>
</div>
<div class="section" id="incompatible_changes_200__queries_200"><h3 class="title sectiontitle"> Changes to Query Syntax </h3>
<p class="p"> The new syntax where query hints are allowed in comments causes some
changes in the way comments are parsed in the
<span class="keyword cmdname">impala-shell</span> interpreter. Previously, you could
end a <code class="ph codeph">--</code> comment line with a semicolon and
<span class="keyword cmdname">impala-shell</span> would treat that as a no-op
statement. Now, a comment line ending with a semicolon is passed as an
empty statement to the Impala daemon, where it is flagged as an error. </p>
<p class="p"> Impala 2.0 and later uses a different support library for regular
expression parsing than in earlier Impala versions. Now, Impala uses
the <a class="xref" href="https://code.google.com/p/re2/" target="_blank">Google RE2 library</a> rather than Boost for
evaluating regular expressions. This implementation change causes some
differences in the allowed regular expression syntax, and in the way
certain regex operators are interpreted. The following are some of the
major differences (not necessarily a complete list): </p>
<ul class="ul">
<li class="li">
<p class="p">
<code class="ph codeph">.*?</code> notation for non-greedy matches is now
supported, where it was not in earlier Impala releases. </p>
</li>
<li class="li">
<p class="p"> By default, <code class="ph codeph">^</code> and <code class="ph codeph">$</code> now match
only begin/end of buffer, not begin/end of each line. This
behavior can be overridden in the regex itself using the
<code class="ph codeph">m</code> flag. </p>
</li>
<li class="li">
<p class="p"> By default, <code class="ph codeph">.</code> does not match newline. This
behavior can be overridden in the regex itself using the
<code class="ph codeph">s</code> flag. </p>
</li>
<li class="li">
<p class="p">
<code class="ph codeph">\Z</code> is not supported. </p>
</li>
<li class="li">
<p class="p">
<code class="ph codeph">&lt;</code> and <code class="ph codeph">&gt;</code> for start of word
and end of word are not supported. </p>
</li>
<li class="li">
<p class="p"> Lookahead and lookbehind are not supported. </p>
</li>
<li class="li">
<p class="p"> Shorthand notation for character classes, such as
<code class="ph codeph">\d</code> for digit, is not recognized. (This
restriction is lifted in Impala 2.0.1, which restores the
shorthand notation.) </p>
</li>
</ul>
</div>
<div class="section" id="incompatible_changes_200__output_format_210"><h3 class="title sectiontitle"> Changes to Output Format </h3>
<p class="p">
In Impala 2.0 and later, <code class="ph codeph">user()</code> returns the full Kerberos principal
string, such as <code class="ph codeph">user@example.com</code>, in a Kerberized environment.
</p>
<p class="p"> The changed format for the user name in secure environments is also
reflected where the user name is displayed in the output of the
<code class="ph codeph">PROFILE</code> command. </p>
<p class="p"> In the output from <code class="ph codeph">SHOW FUNCTIONS</code>, <code class="ph codeph">SHOW
AGGREGATE FUNCTIONS</code>, and <code class="ph codeph">SHOW ANALYTIC
FUNCTIONS</code>, arguments and return types of arbitrary
<code class="ph codeph">DECIMAL</code> scale and precision are represented as
<code class="ph codeph">DECIMAL(*,*)</code>. Formerly, these items were displayed
as <code class="ph codeph">DECIMAL(-1,-1)</code>. </p>
</div>
<div class="section" id="incompatible_changes_200__query_options_200"><h3 class="title sectiontitle"> Changes to Query Options </h3>
<p class="p"> The <code class="ph codeph">PARQUET_COMPRESSION_CODEC</code> query option has been
replaced by the <code class="ph codeph">COMPRESSION_CODEC</code> query option. <span class="ph">See <a class="xref" href="impala_compression_codec.html#compression_codec">COMPRESSION_CODEC Query Option (Impala 2.0 or higher only)</a> for
details.</span>
</p>
</div>
<div class="section" id="incompatible_changes_200__config_options_200"><h3 class="title sectiontitle"> Changes to Configuration Options </h3>
<p class="p"> The meaning of the <code class="ph codeph">--idle_query_timeout</code>
configuration option is changed, to accommodate the new
<code class="ph codeph">QUERY_TIMEOUT_S</code> query option. Rather than setting
an absolute timeout period that applies to all queries, it now sets a
maximum timeout period, which can be adjusted downward for individual
queries by specifying a value for the <code class="ph codeph">QUERY_TIMEOUT_S</code>
query option. In sessions where no <code class="ph codeph">QUERY_TIMEOUT_S</code>
query option is specified, the <code class="ph codeph">--idle_query_timeout</code>
timeout period applies the same as in earlier versions. </p>
<p class="p"> The <code class="ph codeph">--strict_unicode</code> option of
<span class="keyword cmdname">impala-shell</span> was removed. To avoid problems with
Unicode values in <span class="keyword cmdname">impala-shell</span>, define the
following locale setting before running
<span class="keyword cmdname">impala-shell</span>: </p>
<pre class="pre codeblock"><code>export LC_CTYPE=en_US.UTF-8
</code></pre>
</div>
<div class="section" id="incompatible_changes_200__reserved_words_210"><h3 class="title sectiontitle"> New Reserved Words </h3>
<p class="p"> Some new SQL syntax requires the addition of new reserved words:
<code class="ph codeph">ANTI</code>, <code class="ph codeph">ANALYTIC</code>,
<code class="ph codeph">OVER</code>, <code class="ph codeph">PRECEDING</code>,
<code class="ph codeph">UNBOUNDED</code>, <code class="ph codeph">FOLLOWING</code>,
<code class="ph codeph">CURRENT</code>, <code class="ph codeph">ROWS</code>,
<code class="ph codeph">RANGE</code>, <code class="ph codeph">CHAR</code>,
<code class="ph codeph">VARCHAR</code>. <span class="ph">As always, see <a class="xref" href="impala_reserved_words.html#reserved_words">Impala Reserved Words</a> for the set of
reserved words for the current release, and the quoting techniques
to avoid name conflicts.</span>
</p>
</div>
<div class="section" id="incompatible_changes_200__output_files_200"><h3 class="title sectiontitle"> Changes to Data Files </h3>
<p class="p" id="incompatible_changes_200__parquet_block_size"> The default Parquet block size for Impala is
changed from 1 GB to 256 MB. This change could have implications for
the sizes of Parquet files produced by <code class="ph codeph">INSERT</code> and
<code class="ph codeph">CREATE TABLE AS SELECT</code> statements. </p>
<p class="p"> Although older Impala releases typically produced files that were
smaller than the old default size of 1 GB, now the file size matches
more closely whatever value is specified for the
<code class="ph codeph">PARQUET_FILE_SIZE</code> query option. Thus, if you use a
non-default value for this setting, the output files could be larger
than before. They still might be somewhat smaller than the specified
value, because Impala makes conservative estimates about the space
needed to represent each column as it encodes the data. </p>
<p class="p"> When you do not specify an explicit value for the
<code class="ph codeph">PARQUET_FILE_SIZE</code> query option, Impala tries to
keep the file size within the 256 MB default size, but Impala might
adjust the file size to be somewhat larger if needed to accommodate
the layout for <dfn class="term">wide</dfn> tables, that is, tables with hundreds
or thousands of columns. </p>
<p class="p"> This change is unlikely to affect memory usage while writing Parquet
files, because Impala does not pre-allocate the memory needed to hold
the entire Parquet block. </p>
</div>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title26" id="incompatible_changes_144">
<h2 class="title topictitle2" id="ariaid-title26">Incompatible Changes Introduced in Impala 1.4.4</h2>
<div class="body conbody">
<p class="p"> No incompatible changes. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title27" id="incompatible_changes_143">
<h2 class="title topictitle2" id="ariaid-title27">Incompatible Changes Introduced in Impala 1.4.3</h2>
<div class="body conbody">
<p class="p"> No incompatible changes. The TLS/SSL security fix does not require any
change in the way you interact with Impala. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title28" id="incompatible_changes_142">
<h2 class="title topictitle2" id="ariaid-title28">Incompatible Changes Introduced in Impala 1.4.2</h2>
<div class="body conbody">
<p class="p"> None. Impala 1.4.2 is purely a bug-fix release. It does not include
any incompatible changes. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title29" id="incompatible_changes_141">
<h2 class="title topictitle2" id="ariaid-title29">Incompatible Changes Introduced in Impala 1.4.1</h2>
<div class="body conbody">
<p class="p"> None. Impala 1.4.1 is purely a bug-fix release. It does not include
any incompatible changes. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title30" id="incompatible_changes_140">
<h2 class="title topictitle2" id="ariaid-title30">Incompatible Changes Introduced in Impala 1.4.0</h2>
<div class="body conbody">
<ul class="ul">
<li class="li">
<p class="p"> There is a slight change to required security privileges in the
Sentry framework. To create a new object, now you need the
<code class="ph codeph">ALL</code> privilege on the parent object. For example,
to create a new table, view, or function requires having the
<code class="ph codeph">ALL</code> privilege on the database containing the new
object. See <a class="xref" href="impala_authorization.html">Impala Authorization</a> for a full list
of operations and associated privileges. </p>
</li>
<li class="li">
<p class="p"> With the ability of <code class="ph codeph">ORDER BY</code> queries to process
unlimited amounts of data with no <code class="ph codeph">LIMIT</code> clause, the
query options <code class="ph codeph">DEFAULT_ORDER_BY_LIMIT</code> and
<code class="ph codeph">ABORT_ON_DEFAULT_LIMIT_EXCEEDED</code> are now
deprecated and have no effect. <span class="ph">See <a class="xref" href="impala_order_by.html#order_by">ORDER BY Clause</a> for details about
improvements to the <code class="ph codeph">ORDER BY</code> clause.</span>
</p>
</li>
<li class="li">
<p class="p"> There are some changes to the list of reserved words. <span class="ph">See <a class="xref" href="impala_reserved_words.html#reserved_words">Impala Reserved Words</a> for the most
current list.</span> The following keywords are new: </p>
<ul class="ul">
<li class="li">
<code class="ph codeph">API_VERSION</code>
</li>
<li class="li">
<code class="ph codeph">BINARY</code>
</li>
<li class="li">
<code class="ph codeph">CACHED</code>
</li>
<li class="li">
<code class="ph codeph">CLASS</code>
</li>
<li class="li">
<code class="ph codeph">PARTITIONS</code>
</li>
<li class="li">
<code class="ph codeph">PRODUCED</code>
</li>
<li class="li">
<code class="ph codeph">UNCACHED</code>
</li>
</ul>
<p class="p"> The following were formerly reserved keywords, but are no longer
reserved: </p>
<ul class="ul">
<li class="li">
<code class="ph codeph">COUNT</code>
</li>
<li class="li">
<code class="ph codeph">GROUP_CONCAT</code>
</li>
<li class="li">
<code class="ph codeph">NDV</code>
</li>
<li class="li">
<code class="ph codeph">SUM</code>
</li>
</ul>
</li>
<li class="li">
<p class="p"> The fix for issue <a class="xref" href="https://issues.apache.org/jira/browse/IMPALA-973" target="_blank">IMPALA-973</a>
changes the behavior of the <code class="ph codeph">INVALIDATE METADATA</code>
statement regarding nonexistent tables. In Impala 1.4.0 and higher,
the statement returns an error if the specified table is not in the
metastore database at all. It completes successfully if the
specified table is in the metastore database but not yet recognized
by Impala, for example if the table was created through Hive.
Formerly, you could issue this statement for a completely
nonexistent table, with no error. </p>
</li>
</ul>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title31" id="incompatible_changes_133">
<h2 class="title topictitle2" id="ariaid-title31">Incompatible Changes Introduced in Impala 1.3.3</h2>
<div class="body conbody">
<p class="p"> No incompatible changes. The TLS/SSL security fix does not require any
change in the way you interact with Impala. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title32" id="incompatible_changes_132">
<h2 class="title topictitle2" id="ariaid-title32">Incompatible Changes Introduced in Impala 1.3.2</h2>
<div class="body conbody">
<p class="p"> With the fix for IMPALA-1019, you can use HDFS caching for files that
are accessed by Impala. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title33" id="incompatible_changes_131">
<h2 class="title topictitle2" id="ariaid-title33">Incompatible Changes Introduced in Impala 1.3.1</h2>
<div class="body conbody">
<ul class="ul">
<li class="li">
<p class="p">
In Impala 1.3.1 and higher, the <code class="ph codeph">REGEXP</code> and <code class="ph codeph">RLIKE</code>
operators now match a regular expression string that occurs anywhere inside the target
string, the same as if the regular expression was enclosed on each side by
<code class="ph codeph">.*</code>. See <a class="xref" href="../shared/../topics/impala_operators.html#regexp">REGEXP Operator</a> for
examples. Previously, these operators only succeeded when the regular expression matched
the entire target string. This change improves compatibility with the regular expression
support for popular database systems. There is no change to the behavior of the
<code class="ph codeph">regexp_extract()</code> and <code class="ph codeph">regexp_replace()</code> built-in
functions.
</p>
</li>
<li class="li">
<p class="p"> The result set for the <code class="ph codeph">SHOW FUNCTIONS</code> statement
includes a new first column, with the data type of the return value.
<span class="ph">See <a class="xref" href="impala_show.html#show">SHOW Statement</a> for
examples.</span>
</p>
</li>
</ul>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title34" id="incompatible_changes_130">
<h2 class="title topictitle2" id="ariaid-title34">Incompatible Changes Introduced in Impala 1.3.0</h2>
<div class="body conbody">
<ul class="ul">
<li class="li">
<p class="p"> The <code class="ph codeph">EXPLAIN_LEVEL</code> query option now accepts
numeric options from 0 (most concise) to 3 (most verbose), rather
than only 0 or 1. If you formerly used <code class="ph codeph">SET
EXPLAIN_LEVEL=1</code> to get detailed explain plans, switch to
<code class="ph codeph">SET EXPLAIN_LEVEL=3</code>. If you used the mnemonic
keyword (<code class="ph codeph">SET EXPLAIN_LEVEL=verbose</code>), you do not
need to change your code because now level 3 corresponds to
<code class="ph codeph">verbose</code>. <span class="ph">See <a class="xref" href="impala_explain_level.html#explain_level">EXPLAIN_LEVEL Query Option</a> for details
about the allowed explain levels, and <a class="xref" href="impala_explain_plan.html#explain_plan">Understanding Impala Query Performance - EXPLAIN Plans and Query Profiles</a> for usage
information.</span>
</p>
</li>
<li class="li">
<div class="p"> The keyword <code class="ph codeph">DECIMAL</code> is now a reserved word. If
you have any databases, tables, columns, or other objects already
named <code class="ph codeph">DECIMAL</code>, quote any references to them using
backticks (<code class="ph codeph">``</code>) to avoid name conflicts with the
keyword. <div class="note note"><span class="notetitle">Note:</span> Although the <code class="ph codeph">DECIMAL</code> keyword is a
reserved word, currently Impala does not support
<code class="ph codeph">DECIMAL</code> as a data type for columns. </div>
</div>
</li>
<li class="li">
<p class="p"> The query option formerly named <code class="ph codeph">YARN_POOL</code> is now
named <code class="ph codeph">REQUEST_POOL</code> to reflect its broader use with
the Impala admission control feature. <span class="ph">See <a class="xref" href="impala_request_pool.html#request_pool">REQUEST_POOL Query Option</a> for information
about the option, and <a class="xref" href="impala_admission.html#admission_control">Admission Control and Query Queuing</a> for details
about its use with the admission control feature.</span>
</p>
</li>
<li class="li">
<p class="p"> There are some changes to the list of reserved words. <span class="ph">See <a class="xref" href="impala_reserved_words.html#reserved_words">Impala Reserved Words</a> for the most
current list.</span>
</p>
<ul class="ul">
<li class="li">
<p class="p"> The names of aggregate functions are no longer reserved words,
so you can have databases, tables, columns, or other objects
named <code class="ph codeph">AVG</code>, <code class="ph codeph">MIN</code>, and so on
without any name conflicts. </p>
</li>
<li class="li">
<p class="p"> The internal function names <code class="ph codeph">DISTINCTPC</code> and
<code class="ph codeph">DISTINCTPCSA</code> are no longer reserved words,
although <code class="ph codeph">DISTINCT</code> is still a reserved word.
</p>
</li>
<li class="li">
<p class="p"> The keywords <code class="ph codeph">CLOSE_FN</code> and
<code class="ph codeph">PREPARE_FN</code> are now reserved words. <span class="ph">See <a class="xref" href="impala_create_function.html#create_function">CREATE FUNCTION Statement</a> for
their role in the <code class="ph codeph">CREATE FUNCTION</code> statement,
and <a class="xref" href="impala_udf.html#udf_threads">Thread-Safe Work Area for UDFs</a> for usage
information.</span>
</p>
</li>
</ul>
</li>
<li class="li">
<p class="p"> The HDFS property
<code class="ph codeph">dfs.client.file-block-storage-locations.timeout</code>
was renamed to
<code class="ph codeph">dfs.client.file-block-storage-locations.timeout.millis</code>,
to emphasize that the unit of measure is milliseconds, not seconds.
Impala requires a timeout of at least 10 seconds, making the minimum
value for this setting 10000. If you are not using cluster
management software, you might need to edit the
<span class="ph filepath">hdfs-site.xml</span> file in the Impala
configuration directory for the new name and minimum value. </p>
</li>
</ul>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title35" id="incompatible_changes_124">
<h2 class="title topictitle2" id="ariaid-title35">Incompatible Changes Introduced in Impala 1.2.4</h2>
<div class="body conbody">
<p class="p"> There are no incompatible changes introduced in Impala 1.2.4. </p>
<p class="p"> Previously, after creating a table in Hive, you had to issue the
<code class="ph codeph">INVALIDATE METADATA</code> statement with no table name, a
potentially expensive operation on clusters with many databases, tables,
and partitions. Starting in Impala 1.2.4, you can issue the statement
<code class="ph codeph">INVALIDATE METADATA <var class="keyword varname">table_name</var></code> for
a table newly created through Hive. Loading the metadata for only this
one table is faster and involves less network overhead. Therefore, you
might revisit your setup DDL scripts to add the table name to
<code class="ph codeph">INVALIDATE METADATA</code> statements, in cases where you
create and populate the tables through Hive before querying them through
Impala. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title36" id="incompatible_changes_123">
<h2 class="title topictitle2" id="ariaid-title36">Incompatible Changes Introduced in Impala 1.2.3</h2>
<div class="body conbody">
<p class="p"> Because the feature set of Impala 1.2.3 is identical to Impala 1.2.2,
there are no new incompatible changes. See <a class="xref" href="impala_incompatible_changes.html#incompatible_changes_122">Incompatible Changes Introduced in Impala 1.2.2</a> if
you are upgrading from Impala 1.2.1 or 1.1.x. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title37" id="incompatible_changes_122">
<h2 class="title topictitle2" id="ariaid-title37">Incompatible Changes Introduced in Impala 1.2.2</h2>
<div class="body conbody">
<p class="p"> The following changes to SQL syntax and semantics in Impala 1.2.2
could require updates to your SQL code, or schema objects such as tables
or views: </p>
<ul class="ul">
<li class="li">
<p class="p"> With the addition of the <code class="ph codeph">CROSS JOIN</code> keyword, you
might need to rewrite any queries that refer to a table named
<code class="ph codeph">CROSS</code> or use the name <code class="ph codeph">CROSS</code> as a
table alias: </p>
<pre class="pre codeblock"><code>-- Formerly, 'cross' in this query was an alias for t1
-- and it was a normal join query.
-- In 1.2.2 and higher, CROSS JOIN is a keyword, so 'cross'
-- is not interpreted as a table alias, and the query
-- uses the special CROSS JOIN processing rather than a
-- regular join.
select * from t1 cross join t2...
-- Now if CROSS is used in other context such as a table or column name,
-- use backticks to escape it.
create table `cross` (x int);
select * from `cross`;</code></pre>
</li>
<li class="li">
<p class="p"> Formerly, a <code class="ph codeph">DROP DATABASE</code> statement in Impala
would not remove the top-level HDFS directory for that database. The
<code class="ph codeph">DROP DATABASE</code> has been enhanced to remove that
directory. (You still need to drop all the tables inside the
database first; this change only applies to the top-level directory
for the entire database.) </p>
</li>
<li class="li"> The keyword <code class="ph codeph">PARQUET</code> is introduced as a synonym for
<code class="ph codeph">PARQUETFILE</code> in the <code class="ph codeph">CREATE TABLE</code>
and <code class="ph codeph">ALTER TABLE</code> statements, because that is the
common name for the file format. (As opposed to SequenceFile and
RCFile where the <span class="q">"File"</span> suffix is part of the name.)
Documentation examples have been changed to prefer the new shorter
keyword. The <code class="ph codeph">PARQUETFILE</code> keyword is still available
for backward compatibility with older Impala versions. </li>
<li class="li"> New overloads are available for several operators and built-in
functions, allowing you to insert their result values into smaller
numeric columns such as <code class="ph codeph">INT</code>,
<code class="ph codeph">SMALLINT</code>, <code class="ph codeph">TINYINT</code>, and
<code class="ph codeph">FLOAT</code> without using a <code class="ph codeph">CAST()</code> call.
If you remove the <code class="ph codeph">CAST()</code> calls from
<code class="ph codeph">INSERT</code> statements, those statements might not work
with earlier versions of Impala. </li>
</ul>
<p class="p"> Because many users are likely to upgrade straight from Impala 1.x to
Impala 1.2.2, also read <a class="xref" href="impala_incompatible_changes.html#incompatible_changes_121">Incompatible Changes Introduced in Impala 1.2.1</a> for
things to note about upgrading to Impala 1.2.x in general. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title38" id="incompatible_changes_121">
<h2 class="title topictitle2" id="ariaid-title38">Incompatible Changes Introduced in Impala 1.2.1</h2>
<div class="body conbody">
<p class="p"> The following changes to SQL syntax and semantics in Impala 1.2.1
could require updates to your SQL code, or schema objects such as tables
or views: </p>
<ul class="ul">
<li class="li">
<p class="p">
In Impala 1.2.1 and higher, all <code class="ph codeph">NULL</code> values come at the end of the
result set for <code class="ph codeph">ORDER BY ... ASC</code> queries, and at the beginning of the
result set for <code class="ph codeph">ORDER BY ... DESC</code> queries. In effect,
<code class="ph codeph">NULL</code> is considered greater than all other values for sorting purposes.
The original Impala behavior always put <code class="ph codeph">NULL</code> values at the end, even
for <code class="ph codeph">ORDER BY ... DESC</code> queries. The new behavior in Impala 1.2.1 makes
Impala more compatible with other popular database systems. In Impala 1.2.1 and higher,
you can override or specify the sorting behavior for <code class="ph codeph">NULL</code> by adding the
clause <code class="ph codeph">NULLS FIRST</code> or <code class="ph codeph">NULLS LAST</code> at the end of the
<code class="ph codeph">ORDER BY</code> clause.
</p>
<p class="p"> See <a class="xref" href="impala_literals.html#null">NULL</a> for
more information. </p>
</li>
</ul>
<p class="p"> The new <span class="keyword cmdname">catalogd</span> service might require changes to
any user-written scripts that stop, start, or restart Impala services,
install or upgrade Impala packages, or issue <code class="ph codeph">REFRESH</code> or
<code class="ph codeph">INVALIDATE METADATA</code> statements: </p>
<ul class="ul">
<li class="li">
<p class="p">
See <a class="xref" href="../shared/../topics/impala_install.html#install">Installing Impala</a>,
<a class="xref" href="../shared/../topics/impala_upgrading.html#upgrading">Upgrading Impala</a> and
<a class="xref" href="../shared/../topics/impala_processes.html#processes">Starting Impala</a>, for usage information for
the <span class="keyword cmdname">catalogd</span> daemon.
</p>
</li>
<li class="li">
<p class="p">
The <code class="ph codeph">REFRESH</code> and <code class="ph codeph">INVALIDATE METADATA</code> statements are
no longer needed when the <code class="ph codeph">CREATE TABLE</code>, <code class="ph codeph">INSERT</code>, or
other table-changing or data-changing operation is performed through Impala. These
statements are still needed if such operations are done through Hive or by
manipulating data files directly in HDFS, but in those cases the statements only
need to be issued on one Impala node rather than on all nodes. See
<a class="xref" href="../shared/../topics/impala_refresh.html#refresh">REFRESH Statement</a> and
<a class="xref" href="../shared/../topics/impala_invalidate_metadata.html#invalidate_metadata">INVALIDATE METADATA Statement</a> for the
latest usage information for those statements.
</p>
</li>
<li class="li">
<p class="p">
See <a class="xref" href="../shared/../topics/impala_components.html#intro_catalogd">The Impala Catalog Service</a> for background
information on the <span class="keyword cmdname">catalogd</span> service.
</p>
</li>
</ul>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title39" id="incompatible_changes_120">
<h2 class="title topictitle2" id="ariaid-title39">Incompatible Changes Introduced in Impala 1.2.0 (Beta)</h2>
<div class="body conbody">
<p class="p"> There are no incompatible changes to SQL syntax in Impala 1.2.0
(beta). </p>
<p class="p"> The new <span class="keyword cmdname">catalogd</span> service might require changes to
any user-written scripts that stop, start, or restart Impala services,
install or upgrade Impala packages, or issue <code class="ph codeph">REFRESH</code> or
<code class="ph codeph">INVALIDATE METADATA</code> statements: </p>
<ul class="ul">
<li class="li">
<p class="p">
See <a class="xref" href="../shared/../topics/impala_install.html#install">Installing Impala</a>,
<a class="xref" href="../shared/../topics/impala_upgrading.html#upgrading">Upgrading Impala</a> and
<a class="xref" href="../shared/../topics/impala_processes.html#processes">Starting Impala</a>, for usage information for
the <span class="keyword cmdname">catalogd</span> daemon.
</p>
</li>
<li class="li">
<p class="p">
The <code class="ph codeph">REFRESH</code> and <code class="ph codeph">INVALIDATE METADATA</code> statements are
no longer needed when the <code class="ph codeph">CREATE TABLE</code>, <code class="ph codeph">INSERT</code>, or
other table-changing or data-changing operation is performed through Impala. These
statements are still needed if such operations are done through Hive or by
manipulating data files directly in HDFS, but in those cases the statements only
need to be issued on one Impala node rather than on all nodes. See
<a class="xref" href="../shared/../topics/impala_refresh.html#refresh">REFRESH Statement</a> and
<a class="xref" href="../shared/../topics/impala_invalidate_metadata.html#invalidate_metadata">INVALIDATE METADATA Statement</a> for the
latest usage information for those statements.
</p>
</li>
<li class="li">
<p class="p">
See <a class="xref" href="../shared/../topics/impala_components.html#intro_catalogd">The Impala Catalog Service</a> for background
information on the <span class="keyword cmdname">catalogd</span> service.
</p>
</li>
</ul>
<p class="p"> The new resource management feature interacts with both YARN and Llama
services. <span class="ph">See <a class="xref" href="impala_resource_management.html#resource_management">Resource Management</a> for
usage information for Impala resource management.</span>
</p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title40" id="incompatible_changes_111">
<h2 class="title topictitle2" id="ariaid-title40">Incompatible Changes Introduced in Impala 1.1.1</h2>
<div class="body conbody">
<p class="p"> There are no incompatible changes in Impala 1.1.1. </p>
<p class="p"> Previously, it was not possible to create Parquet data through Impala
and reuse that table within Hive. Now that Parquet support is available
for Hive 10, reusing existing Impala Parquet data files in Hive requires
updating the table metadata. Use the following command if you are
already running Impala 1.1.1: </p>
<pre class="pre codeblock"><code>ALTER TABLE <var class="keyword varname">table_name</var> SET FILEFORMAT PARQUETFILE;
</code></pre>
<p class="p"> If you are running a level of Impala that is older than 1.1.1, do the
metadata update through Hive: </p>
<pre class="pre codeblock"><code>ALTER TABLE <var class="keyword varname">table_name</var> SET SERDE 'parquet.hive.serde.ParquetHiveSerDe';
ALTER TABLE <var class="keyword varname">table_name</var> SET FILEFORMAT
INPUTFORMAT "parquet.hive.DeprecatedParquetInputFormat"
OUTPUTFORMAT "parquet.hive.DeprecatedParquetOutputFormat";
</code></pre>
<p class="p"> Impala 1.1.1 and higher can reuse Parquet data files created by Hive,
without any action required. </p>
<p class="p"> As usual, make sure to upgrade the Impala LZO package to the latest
level at the same time as you upgrade the Impala server. </p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title41" id="incompatible_changes_11">
<h2 class="title topictitle2" id="ariaid-title41">Incompatible Change Introduced in Impala 1.1</h2>
<div class="body conbody">
<ul class="ul">
<li class="li">
<p class="p"> The <code class="ph codeph">REFRESH</code> statement now requires a table name;
in Impala 1.0, the table name was optional. This syntax change is
part of the internal rework to make <code class="ph codeph">REFRESH</code> a true
Impala SQL statement so that it can be called through the JDBC and
ODBC APIs. <code class="ph codeph">REFRESH</code> now reloads the metadata
immediately, rather than marking it for update the next time any
affected table is accessed. The previous behavior, where omitting
the table name caused a refresh of the entire Impala metadata
catalog, is available through the new <code class="ph codeph">INVALIDATE
METADATA</code> statement. <code class="ph codeph">INVALIDATE METADATA</code>
can be specified with a table name to affect a single table, or
without a table name to affect the entire metadata catalog; the
relevant metadata is reloaded the next time it is requested during
the processing for a SQL statement. See <a class="xref" href="impala_refresh.html#refresh">REFRESH Statement</a> and <a class="xref" href="impala_invalidate_metadata.html#invalidate_metadata">INVALIDATE METADATA Statement</a> for
the latest details about these statements. </p>
</li>
</ul>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title42" id="incompatible_changes_10">
<h2 class="title topictitle2" id="ariaid-title42">Incompatible Changes Introduced in Impala 1.0</h2>
<div class="body conbody">
<ul class="ul">
<li class="li"> If you use LZO-compressed text files, when you upgrade Impala to
version 1.0, also update the Impala LZO package to the latest level.
See <a class="xref" href="impala_txtfile.html#lzo">Using LZO-Compressed Text Files</a> for details. </li>
</ul>
</div>
</div>
</body>
</html>