<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="datatypes">

  <title>Data Types</title>
  <prolog>
    <metadata>
      <data name="Category" value="Impala"/>
      <data name="Category" value="Impala Data Types"/>
      <data name="Category" value="SQL"/>
      <data name="Category" value="Data Analysts"/>
      <data name="Category" value="Developers"/>
      <data name="Category" value="SQL"/>
      <data name="Category" value="Schemas"/>
    </metadata>
  </prolog>

  <conbody>
    <p>Impala supports a set of data types that you can use for table columns,
      expression values, and function arguments and return values. </p>
    <note> Currently, Impala supports only scalar types, not composite or nested
      types. Accessing a table containing any columns with unsupported types
      causes an error. </note>
    <p outputclass="toc"/>
    <p> For the notation to write literals of each of these data types, see
        <xref href="impala_literals.xml#literals"/>. </p>
    
      <p> Impala supports a limited set of implicit casts to avoid undesired
      results from unexpected casting behavior. </p>
    <ul>
      <li> Impala does not implicitly cast between string and numeric or Boolean
        types. Always use <codeph>CAST()</codeph> for these conversions. </li>
      <li> Impala does perform implicit casts among the numeric types, when
        going from a smaller or less precise type to a larger or more precise
        one. For example, Impala will implicitly convert a
          <codeph>SMALLINT</codeph> to a <codeph>BIGINT</codeph> or
          <codeph>FLOAT</codeph>, but to convert from <codeph>DOUBLE</codeph> to
          <codeph>FLOAT</codeph> or <codeph>INT</codeph> to
          <codeph>TINYINT</codeph> requires a call to <codeph>CAST()</codeph> in
        the query. </li>
      <li> Impala does perform implicit casts from <codeph>STRING</codeph> to
          <codeph>TIMESTAMP</codeph>. Impala has a restricted set of literal
        formats for the <codeph>TIMESTAMP</codeph> data type and the
          <codeph>FROM_UNIXTIME()</codeph> format string; see <xref
          href="impala_timestamp.xml#timestamp"/> for details. </li>
    </ul>
    <p>See the topics under this section for full details on implicit and
      explicit casting for each data type, and see <xref
        href="impala_conversion_functions.xml#conversion_functions"/> for
      details about the <codeph>CAST()</codeph> function.</p>
  </conbody>
</concept>
