You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by al...@apache.org on 2023/06/29 10:16:28 UTC

[arrow-datafusion] branch main updated: Minor: add sqllogictests for binary data type (#6770)

This is an automated email from the ASF dual-hosted git repository.

alamb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new e91af991c5 Minor: add sqllogictests for binary data type (#6770)
e91af991c5 is described below

commit e91af991c5ae4a6b4afab2cb1b0c9307a69e4046
Author: Andrew Lamb <an...@nerdnetworks.org>
AuthorDate: Thu Jun 29 06:16:22 2023 -0400

    Minor: add sqllogictests for binary data type (#6770)
---
 .../core/tests/sqllogictests/test_files/binary.slt | 75 ++++++++++++++++++++++
 docs/source/user-guide/sql/data_types.md           |  3 +
 2 files changed, 78 insertions(+)

diff --git a/datafusion/core/tests/sqllogictests/test_files/binary.slt b/datafusion/core/tests/sqllogictests/test_files/binary.slt
new file mode 100644
index 0000000000..5738153a41
--- /dev/null
+++ b/datafusion/core/tests/sqllogictests/test_files/binary.slt
@@ -0,0 +1,75 @@
+# 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.
+
+#############
+## Tests for binary data types
+#############
+
+# Basic literals encoded as hex
+query ?T
+SELECT X'FF01', arrow_typeof(X'FF01');
+----
+ff01 Binary
+
+# Invaid hex values
+query error DataFusion error: Error during planning: Invalid HexStringLiteral 'Z'
+SELECT X'Z'
+
+# Insert binary data into tables
+statement ok
+CREATE TABLE t
+AS VALUES
+  ('FF01', X'FF01'),
+  ('ABC', X'ABC'),
+  ('000', X'000');
+
+query T?TT
+SELECT column1, column2, arrow_typeof(column1), arrow_typeof(column2)
+FROM t;
+----
+FF01 ff01 Utf8 Binary
+ABC 0abc Utf8 Binary
+000 0000 Utf8 Binary
+
+# predicates
+query T?
+SELECT column1, column2
+FROM t
+WHERE column2 > X'123';
+----
+FF01 ff01
+ABC 0abc
+
+# order by
+query T?
+SELECT *
+FROM t
+ORDER BY column2;
+----
+000 0000
+ABC 0abc
+FF01 ff01
+
+# group by
+query I
+SELECT count(*)
+FROM t
+GROUP BY column1;
+----
+1
+1
+1
diff --git a/docs/source/user-guide/sql/data_types.md b/docs/source/user-guide/sql/data_types.md
index 1d3455abc2..43cad4537d 100644
--- a/docs/source/user-guide/sql/data_types.md
+++ b/docs/source/user-guide/sql/data_types.md
@@ -96,6 +96,9 @@ For example, to cast the output of `now()` to a `Timestamp` with second precisio
 | ------------ | :------------- |
 | `BYTEA`      | `Binary`       |
 
+You can create binary literals using a hex string literal such as
+`X'1234` to create a `Binary` value of two bytes, `0x12` and `0x34`.
+
 ## Unsupported SQL Types
 
 | SQL Data Type | Arrow DataType      |