mirror of
https://github.com/apache/impala.git
synced 2025-12-30 03:01:44 -05:00
This now gives a clean RAT check with bin/check-rat-report.py, which is one way for the Impala community to check compliance with ASF rules on intellectual property. Change-Id: I2ad06435f84a65ba126759e42a18fdaf52cd7036 Reviewed-on: http://gerrit.cloudera.org:8080/5232 Reviewed-by: Jim Apple <jbapple-impala@apache.org> Tested-by: Impala Public Jenkins Reviewed-by: John Russell <jrussell@cloudera.com>
173 lines
7.1 KiB
XML
173 lines
7.1 KiB
XML
<?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="boolean">
|
|
|
|
<title>BOOLEAN Data Type</title>
|
|
<titlealts audience="PDF"><navtitle>BOOLEAN</navtitle></titlealts>
|
|
<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="Schemas"/>
|
|
</metadata>
|
|
</prolog>
|
|
|
|
<conbody>
|
|
|
|
<p>
|
|
A data type used in <codeph>CREATE TABLE</codeph> and <codeph>ALTER TABLE</codeph> statements, representing a
|
|
single true/false choice.
|
|
</p>
|
|
|
|
<p conref="../shared/impala_common.xml#common/syntax_blurb"/>
|
|
|
|
<p>
|
|
In the column definition of a <codeph>CREATE TABLE</codeph> statement:
|
|
</p>
|
|
|
|
<codeblock><varname>column_name</varname> BOOLEAN</codeblock>
|
|
|
|
<p>
|
|
<b>Range:</b> <codeph>TRUE</codeph> or <codeph>FALSE</codeph>. Do not use quotation marks around the
|
|
<codeph>TRUE</codeph> and <codeph>FALSE</codeph> literal values. You can write the literal values in
|
|
uppercase, lowercase, or mixed case. The values queried from a table are always returned in lowercase,
|
|
<codeph>true</codeph> or <codeph>false</codeph>.
|
|
</p>
|
|
|
|
<p>
|
|
<b>Conversions:</b> Impala does not automatically convert any other type to <codeph>BOOLEAN</codeph>. All
|
|
conversions must use an explicit call to the <codeph>CAST()</codeph> function.
|
|
</p>
|
|
|
|
<p>
|
|
You can use <codeph>CAST()</codeph> to convert
|
|
<!--
|
|
<codeph>TINYINT</codeph>, <codeph>SMALLINT</codeph>,
|
|
<codeph>INT</codeph>, <codeph>BIGINT</codeph>, <codeph>FLOAT</codeph>, or <codeph>DOUBLE</codeph>
|
|
-->
|
|
any integer or floating-point type to
|
|
<codeph>BOOLEAN</codeph>: a value of 0 represents <codeph>false</codeph>, and any non-zero value is converted
|
|
to <codeph>true</codeph>.
|
|
</p>
|
|
|
|
<codeblock>SELECT CAST(42 AS BOOLEAN) AS nonzero_int, CAST(99.44 AS BOOLEAN) AS nonzero_decimal,
|
|
CAST(000 AS BOOLEAN) AS zero_int, CAST(0.0 AS BOOLEAN) AS zero_decimal;
|
|
+-------------+-----------------+----------+--------------+
|
|
| nonzero_int | nonzero_decimal | zero_int | zero_decimal |
|
|
+-------------+-----------------+----------+--------------+
|
|
| true | true | false | false |
|
|
+-------------+-----------------+----------+--------------+
|
|
</codeblock>
|
|
|
|
<p>
|
|
When you cast the opposite way, from <codeph>BOOLEAN</codeph> to a numeric type,
|
|
the result becomes either 1 or 0:
|
|
</p>
|
|
|
|
<codeblock>SELECT CAST(true AS INT) AS true_int, CAST(true AS DOUBLE) AS true_double,
|
|
CAST(false AS INT) AS false_int, CAST(false AS DOUBLE) AS false_double;
|
|
+----------+-------------+-----------+--------------+
|
|
| true_int | true_double | false_int | false_double |
|
|
+----------+-------------+-----------+--------------+
|
|
| 1 | 1 | 0 | 0 |
|
|
+----------+-------------+-----------+--------------+
|
|
</codeblock>
|
|
|
|
<p rev="1.4.0">
|
|
<!-- BOOLEAN-to-DECIMAL casting requested in IMPALA-991. As of Sept. 2014, designated "won't fix". -->
|
|
You can cast <codeph>DECIMAL</codeph> values to <codeph>BOOLEAN</codeph>, with the same treatment of zero and
|
|
non-zero values as the other numeric types. You cannot cast a <codeph>BOOLEAN</codeph> to a
|
|
<codeph>DECIMAL</codeph>.
|
|
</p>
|
|
|
|
<p>
|
|
You cannot cast a <codeph>STRING</codeph> value to <codeph>BOOLEAN</codeph>, although you can cast a
|
|
<codeph>BOOLEAN</codeph> value to <codeph>STRING</codeph>, returning <codeph>'1'</codeph> for
|
|
<codeph>true</codeph> values and <codeph>'0'</codeph> for <codeph>false</codeph> values.
|
|
</p>
|
|
|
|
<p>
|
|
Although you can cast a <codeph>TIMESTAMP</codeph> to a <codeph>BOOLEAN</codeph> or a
|
|
<codeph>BOOLEAN</codeph> to a <codeph>TIMESTAMP</codeph>, the results are unlikely to be useful. Any non-zero
|
|
<codeph>TIMESTAMP</codeph> (that is, any value other than <codeph>1970-01-01 00:00:00</codeph>) becomes
|
|
<codeph>TRUE</codeph> when converted to <codeph>BOOLEAN</codeph>, while <codeph>1970-01-01 00:00:00</codeph>
|
|
becomes <codeph>FALSE</codeph>. A value of <codeph>FALSE</codeph> becomes <codeph>1970-01-01
|
|
00:00:00</codeph> when converted to <codeph>BOOLEAN</codeph>, and <codeph>TRUE</codeph> becomes one second
|
|
past this epoch date, that is, <codeph>1970-01-01 00:00:01</codeph>.
|
|
</p>
|
|
|
|
<p conref="../shared/impala_common.xml#common/null_null_arguments"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/partitioning_blurb"/>
|
|
|
|
<p>
|
|
Do not use a <codeph>BOOLEAN</codeph> column as a partition key. Although you can create such a table,
|
|
subsequent operations produce errors:
|
|
</p>
|
|
|
|
<codeblock>[localhost:21000] > create table truth_table (assertion string) partitioned by (truth boolean);
|
|
[localhost:21000] > insert into truth_table values ('Pigs can fly',false);
|
|
ERROR: AnalysisException: INSERT into table with BOOLEAN partition column (truth) is not supported: partitioning.truth_table
|
|
</codeblock>
|
|
|
|
<p conref="../shared/impala_common.xml#common/example_blurb"/>
|
|
|
|
<codeblock>SELECT 1 < 2;
|
|
SELECT 2 = 5;
|
|
SELECT 100 < NULL, 100 > NULL;
|
|
CREATE TABLE assertions (claim STRING, really BOOLEAN);
|
|
INSERT INTO assertions VALUES
|
|
("1 is less than 2", 1 < 2),
|
|
("2 is the same as 5", 2 = 5),
|
|
("Grass is green", true),
|
|
("The moon is made of green cheese", false);
|
|
SELECT claim FROM assertions WHERE really = TRUE;
|
|
</codeblock>
|
|
|
|
<p conref="../shared/impala_common.xml#common/hbase_ok"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/parquet_ok"/>
|
|
|
|
<p conref="../shared/impala_common.xml#common/text_bulky"/>
|
|
|
|
<!-- <p conref="../shared/impala_common.xml#common/compatibility_blurb"/> -->
|
|
|
|
<!-- <p conref="../shared/impala_common.xml#common/internals_blurb"/> -->
|
|
|
|
<!-- <p conref="../shared/impala_common.xml#common/added_in_20"/> -->
|
|
|
|
<p conref="../shared/impala_common.xml#common/column_stats_constant"/>
|
|
|
|
<!-- <p conref="../shared/impala_common.xml#common/restrictions_blurb"/> -->
|
|
|
|
<!-- <p conref="../shared/impala_common.xml#common/related_info"/> -->
|
|
|
|
<p>
|
|
<b>Related information:</b> <xref href="impala_literals.xml#boolean_literals"/>,
|
|
<xref href="impala_operators.xml#operators"/>,
|
|
<xref href="impala_conditional_functions.xml#conditional_functions"/>
|
|
</p>
|
|
</conbody>
|
|
</concept>
|