mirror of
https://github.com/apache/impala.git
synced 2025-12-30 12:02:10 -05:00
Upgrade with details of latest syntax. Fine-tune discussion of PK and other Kudu notions. The impala_kudu diff looks larger than actual changes to the page, because subtopics got moved around and promoted/demoted (which changes the indentation). Best to review that page start-to-finish. CREATE TABLE details for Impala + Kudu. ALTER TABLE details for Impala + Kudu. Unhide the Impala partitioning + Kudu topic. Mainly a brief intro then a link to delegate details to the main Kudu page, which already has a partitioning subtopic. Include changes to reserved words. Entirely from Kudu integration work. Add Kudu considerations for misc SQL statements. Addressed Todd's and Dimitris's comments for certain files. (Up to the beginning of the "Partitioning" section in impala_kudu.xml.) Added Kudu blurbs to data type topics: - Some aren't supported. - Others are supported but can't go in the primary key. Added walkthrough of renaming internal/external tables. Split out Kudu CREATE TABLE syntax from other file formats. Correct info about CTAS for Kudu tables. Add examples of basic Kudu, external Kudu, and Kudu CTAS. Change-Id: I76dcb948dab08532fe41326b22ef78d73282db2c Reviewed-on: http://gerrit.cloudera.org:8080/5649 Reviewed-by: Matthew Jacobs <mj@cloudera.com> Tested-by: Impala Public Jenkins
176 lines
7.3 KiB
XML
176 lines
7.3 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/kudu_blurb"/>
|
|
<p conref="../shared/impala_common.xml#common/kudu_non_pk_data_type"/>
|
|
|
|
<!-- <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>
|