This is an automated email from the ASF dual-hosted git repository.
agrove pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion.git
The following commit(s) were added to refs/heads/master by this push:
new b175f9a48 Make binary operator formatting consistent between logical
and physical plans (#3331)
b175f9a48 is described below
commit b175f9a48d296ea66a07acc3825f4d6e0def2367
Author: Andy Grove <[email protected]>
AuthorDate: Sun Sep 4 08:17:10 2022 -0600
Make binary operator formatting consistent between logical and physical
plans (#3331)
---
datafusion/core/src/execution/context.rs | 10 +-
datafusion/core/src/physical_plan/planner.rs | 2 +-
datafusion/core/tests/sql/aggregates.rs | 10 +-
datafusion/core/tests/sql/decimal.rs | 304 +++++++++++-----------
datafusion/core/tests/sql/expr.rs | 16 +-
datafusion/core/tests/sql/functions.rs | 16 +-
datafusion/core/tests/sql/select.rs | 26 +-
datafusion/core/tests/sql/timestamp.rs | 369 ++++++++++++++-------------
datafusion/core/tests/sql/window.rs | 12 +-
9 files changed, 383 insertions(+), 382 deletions(-)
diff --git a/datafusion/core/src/execution/context.rs
b/datafusion/core/src/execution/context.rs
index c5dcb7a59..194699ae3 100644
--- a/datafusion/core/src/execution/context.rs
+++ b/datafusion/core/src/execution/context.rs
@@ -1872,11 +1872,11 @@ mod tests {
.await?;
let expected = vec![
-
"+----------------------+------------------------+------------------------+",
- "| @@version | @name | @integer Plus
Int64(1) |",
-
"+----------------------+------------------------+------------------------+",
- "| system-var-@@version | user-defined-var-@name | 42
|",
-
"+----------------------+------------------------+------------------------+",
+
"+----------------------+------------------------+---------------------+",
+ "| @@version | @name | @integer +
Int64(1) |",
+
"+----------------------+------------------------+---------------------+",
+ "| system-var-@@version | user-defined-var-@name | 42
|",
+
"+----------------------+------------------------+---------------------+",
];
assert_batches_eq!(expected, &results);
diff --git a/datafusion/core/src/physical_plan/planner.rs
b/datafusion/core/src/physical_plan/planner.rs
index f727306ad..8d7e0e9e4 100644
--- a/datafusion/core/src/physical_plan/planner.rs
+++ b/datafusion/core/src/physical_plan/planner.rs
@@ -108,7 +108,7 @@ fn create_physical_name(e: &Expr, is_first_expr: bool) ->
Result<String> {
Expr::BinaryExpr { left, op, right } => {
let left = create_physical_name(left, false)?;
let right = create_physical_name(right, false)?;
- Ok(format!("{} {:?} {}", left, op, right))
+ Ok(format!("{} {} {}", left, op, right))
}
Expr::Case {
expr,
diff --git a/datafusion/core/tests/sql/aggregates.rs
b/datafusion/core/tests/sql/aggregates.rs
index 9be41afa2..7e0e785da 100644
--- a/datafusion/core/tests/sql/aggregates.rs
+++ b/datafusion/core/tests/sql/aggregates.rs
@@ -1815,11 +1815,11 @@ async fn aggregate_avg_add() -> Result<()> {
assert_eq!(results.len(), 1);
let expected = vec![
-
"+--------------+----------------------------+----------------------------+----------------------------+",
- "| AVG(test.c1) | AVG(test.c1) Plus Int64(1) | AVG(test.c1) Plus
Int64(2) | Int64(1) Plus AVG(test.c1) |",
-
"+--------------+----------------------------+----------------------------+----------------------------+",
- "| 1.5 | 2.5 | 3.5
| 2.5 |",
-
"+--------------+----------------------------+----------------------------+----------------------------+",
+
"+--------------+-------------------------+-------------------------+-------------------------+",
+ "| AVG(test.c1) | AVG(test.c1) + Int64(1) | AVG(test.c1) + Int64(2) |
Int64(1) + AVG(test.c1) |",
+
"+--------------+-------------------------+-------------------------+-------------------------+",
+ "| 1.5 | 2.5 | 3.5 |
2.5 |",
+
"+--------------+-------------------------+-------------------------+-------------------------+",
];
assert_batches_sorted_eq!(expected, &results);
diff --git a/datafusion/core/tests/sql/decimal.rs
b/datafusion/core/tests/sql/decimal.rs
index 9b16ca534..8ded8752d 100644
--- a/datafusion/core/tests/sql/decimal.rs
+++ b/datafusion/core/tests/sql/decimal.rs
@@ -376,25 +376,25 @@ async fn decimal_arithmetic_op() -> Result<()> {
actual[0].schema().field(0).data_type()
);
let expected = vec![
- "+---------------------------------+",
- "| decimal_simple.c1 Plus Int64(1) |",
- "+---------------------------------+",
- "| 1.000010 |",
- "| 1.000020 |",
- "| 1.000020 |",
- "| 1.000030 |",
- "| 1.000030 |",
- "| 1.000030 |",
- "| 1.000040 |",
- "| 1.000040 |",
- "| 1.000040 |",
- "| 1.000040 |",
- "| 1.000050 |",
- "| 1.000050 |",
- "| 1.000050 |",
- "| 1.000050 |",
- "| 1.000050 |",
- "+---------------------------------+",
+ "+------------------------------+",
+ "| decimal_simple.c1 + Int64(1) |",
+ "+------------------------------+",
+ "| 1.000010 |",
+ "| 1.000020 |",
+ "| 1.000020 |",
+ "| 1.000030 |",
+ "| 1.000030 |",
+ "| 1.000030 |",
+ "| 1.000040 |",
+ "| 1.000040 |",
+ "| 1.000040 |",
+ "| 1.000040 |",
+ "| 1.000050 |",
+ "| 1.000050 |",
+ "| 1.000050 |",
+ "| 1.000050 |",
+ "| 1.000050 |",
+ "+------------------------------+",
];
assert_batches_eq!(expected, &actual);
// array decimal(10,6) + array decimal(12,7) => decimal(13,7)
@@ -405,25 +405,25 @@ async fn decimal_arithmetic_op() -> Result<()> {
actual[0].schema().field(0).data_type()
);
let expected = vec![
- "+------------------------------------------+",
- "| decimal_simple.c1 Plus decimal_simple.c5 |",
- "+------------------------------------------+",
- "| 0.0000240 |",
- "| 0.0000450 |",
- "| 0.0000390 |",
- "| 0.0000620 |",
- "| 0.0000650 |",
- "| 0.0000410 |",
- "| 0.0000840 |",
- "| 0.0000800 |",
- "| 0.0000800 |",
- "| 0.0000840 |",
- "| 0.0001020 |",
- "| 0.0001280 |",
- "| 0.0000830 |",
- "| 0.0001180 |",
- "| 0.0001500 |",
- "+------------------------------------------+",
+ "+---------------------------------------+",
+ "| decimal_simple.c1 + decimal_simple.c5 |",
+ "+---------------------------------------+",
+ "| 0.0000240 |",
+ "| 0.0000450 |",
+ "| 0.0000390 |",
+ "| 0.0000620 |",
+ "| 0.0000650 |",
+ "| 0.0000410 |",
+ "| 0.0000840 |",
+ "| 0.0000800 |",
+ "| 0.0000800 |",
+ "| 0.0000840 |",
+ "| 0.0001020 |",
+ "| 0.0001280 |",
+ "| 0.0000830 |",
+ "| 0.0001180 |",
+ "| 0.0001500 |",
+ "+---------------------------------------+",
];
assert_batches_eq!(expected, &actual);
// subtract
@@ -434,25 +434,25 @@ async fn decimal_arithmetic_op() -> Result<()> {
actual[0].schema().field(0).data_type()
);
let expected = vec![
- "+----------------------------------+",
- "| decimal_simple.c1 Minus Int64(1) |",
- "+----------------------------------+",
- "| -0.999990 |",
- "| -0.999980 |",
- "| -0.999980 |",
- "| -0.999970 |",
- "| -0.999970 |",
- "| -0.999970 |",
- "| -0.999960 |",
- "| -0.999960 |",
- "| -0.999960 |",
- "| -0.999960 |",
- "| -0.999950 |",
- "| -0.999950 |",
- "| -0.999950 |",
- "| -0.999950 |",
- "| -0.999950 |",
- "+----------------------------------+",
+ "+------------------------------+",
+ "| decimal_simple.c1 - Int64(1) |",
+ "+------------------------------+",
+ "| -0.999990 |",
+ "| -0.999980 |",
+ "| -0.999980 |",
+ "| -0.999970 |",
+ "| -0.999970 |",
+ "| -0.999970 |",
+ "| -0.999960 |",
+ "| -0.999960 |",
+ "| -0.999960 |",
+ "| -0.999960 |",
+ "| -0.999950 |",
+ "| -0.999950 |",
+ "| -0.999950 |",
+ "| -0.999950 |",
+ "| -0.999950 |",
+ "+------------------------------+",
];
assert_batches_eq!(expected, &actual);
@@ -463,25 +463,25 @@ async fn decimal_arithmetic_op() -> Result<()> {
actual[0].schema().field(0).data_type()
);
let expected = vec![
- "+-------------------------------------------+",
- "| decimal_simple.c1 Minus decimal_simple.c5 |",
- "+-------------------------------------------+",
- "| -0.0000040 |",
- "| -0.0000050 |",
- "| 0.0000010 |",
- "| -0.0000020 |",
- "| -0.0000050 |",
- "| 0.0000190 |",
- "| -0.0000040 |",
- "| 0.0000000 |",
- "| 0.0000000 |",
- "| -0.0000040 |",
- "| -0.0000020 |",
- "| -0.0000280 |",
- "| 0.0000170 |",
- "| -0.0000180 |",
- "| -0.0000500 |",
- "+-------------------------------------------+",
+ "+---------------------------------------+",
+ "| decimal_simple.c1 - decimal_simple.c5 |",
+ "+---------------------------------------+",
+ "| -0.0000040 |",
+ "| -0.0000050 |",
+ "| 0.0000010 |",
+ "| -0.0000020 |",
+ "| -0.0000050 |",
+ "| 0.0000190 |",
+ "| -0.0000040 |",
+ "| 0.0000000 |",
+ "| 0.0000000 |",
+ "| -0.0000040 |",
+ "| -0.0000020 |",
+ "| -0.0000280 |",
+ "| 0.0000170 |",
+ "| -0.0000180 |",
+ "| -0.0000500 |",
+ "+---------------------------------------+",
];
assert_batches_eq!(expected, &actual);
// multiply
@@ -492,25 +492,25 @@ async fn decimal_arithmetic_op() -> Result<()> {
actual[0].schema().field(0).data_type()
);
let expected = vec![
- "+--------------------------------------+",
- "| decimal_simple.c1 Multiply Int64(20) |",
- "+--------------------------------------+",
- "| 0.000200 |",
- "| 0.000400 |",
- "| 0.000400 |",
- "| 0.000600 |",
- "| 0.000600 |",
- "| 0.000600 |",
- "| 0.000800 |",
- "| 0.000800 |",
- "| 0.000800 |",
- "| 0.000800 |",
- "| 0.001000 |",
- "| 0.001000 |",
- "| 0.001000 |",
- "| 0.001000 |",
- "| 0.001000 |",
- "+--------------------------------------+",
+ "+-------------------------------+",
+ "| decimal_simple.c1 * Int64(20) |",
+ "+-------------------------------+",
+ "| 0.000200 |",
+ "| 0.000400 |",
+ "| 0.000400 |",
+ "| 0.000600 |",
+ "| 0.000600 |",
+ "| 0.000600 |",
+ "| 0.000800 |",
+ "| 0.000800 |",
+ "| 0.000800 |",
+ "| 0.000800 |",
+ "| 0.001000 |",
+ "| 0.001000 |",
+ "| 0.001000 |",
+ "| 0.001000 |",
+ "| 0.001000 |",
+ "+-------------------------------+",
];
assert_batches_eq!(expected, &actual);
@@ -521,25 +521,25 @@ async fn decimal_arithmetic_op() -> Result<()> {
actual[0].schema().field(0).data_type()
);
let expected = vec![
- "+----------------------------------------------+",
- "| decimal_simple.c1 Multiply decimal_simple.c5 |",
- "+----------------------------------------------+",
- "| 0.0000000001400 |",
- "| 0.0000000005000 |",
- "| 0.0000000003800 |",
- "| 0.0000000009600 |",
- "| 0.0000000010500 |",
- "| 0.0000000003300 |",
- "| 0.0000000017600 |",
- "| 0.0000000016000 |",
- "| 0.0000000016000 |",
- "| 0.0000000017600 |",
- "| 0.0000000026000 |",
- "| 0.0000000039000 |",
- "| 0.0000000016500 |",
- "| 0.0000000034000 |",
- "| 0.0000000050000 |",
- "+----------------------------------------------+",
+ "+---------------------------------------+",
+ "| decimal_simple.c1 * decimal_simple.c5 |",
+ "+---------------------------------------+",
+ "| 0.0000000001400 |",
+ "| 0.0000000005000 |",
+ "| 0.0000000003800 |",
+ "| 0.0000000009600 |",
+ "| 0.0000000010500 |",
+ "| 0.0000000003300 |",
+ "| 0.0000000017600 |",
+ "| 0.0000000016000 |",
+ "| 0.0000000016000 |",
+ "| 0.0000000017600 |",
+ "| 0.0000000026000 |",
+ "| 0.0000000039000 |",
+ "| 0.0000000016500 |",
+ "| 0.0000000034000 |",
+ "| 0.0000000050000 |",
+ "+---------------------------------------+",
];
assert_batches_eq!(expected, &actual);
// divide
@@ -579,25 +579,25 @@ async fn decimal_arithmetic_op() -> Result<()> {
actual[0].schema().field(0).data_type()
);
let expected = vec![
- "+--------------------------------------------+",
- "| decimal_simple.c1 Divide decimal_simple.c5 |",
- "+--------------------------------------------+",
- "| 0.7142857142857143296 |",
- "| 0.8000000000000000000 |",
- "| 1.0526315789473683456 |",
- "| 0.9375000000000000000 |",
- "| 0.8571428571428571136 |",
- "| 2.7272727272727269376 |",
- "| 0.9090909090909090816 |",
- "| 1.0000000000000000000 |",
- "| 1.0000000000000000000 |",
- "| 0.9090909090909090816 |",
- "| 0.9615384615384614912 |",
- "| 0.6410256410256410624 |",
- "| 1.5151515151515152384 |",
- "| 0.7352941176470588416 |",
- "| 0.5000000000000000000 |",
- "+--------------------------------------------+",
+ "+---------------------------------------+",
+ "| decimal_simple.c1 / decimal_simple.c5 |",
+ "+---------------------------------------+",
+ "| 0.7142857142857143296 |",
+ "| 0.8000000000000000000 |",
+ "| 1.0526315789473683456 |",
+ "| 0.9375000000000000000 |",
+ "| 0.8571428571428571136 |",
+ "| 2.7272727272727269376 |",
+ "| 0.9090909090909090816 |",
+ "| 1.0000000000000000000 |",
+ "| 1.0000000000000000000 |",
+ "| 0.9090909090909090816 |",
+ "| 0.9615384615384614912 |",
+ "| 0.6410256410256410624 |",
+ "| 1.5151515151515152384 |",
+ "| 0.7352941176470588416 |",
+ "| 0.5000000000000000000 |",
+ "+---------------------------------------+",
];
assert_batches_eq!(expected, &actual);
@@ -638,25 +638,25 @@ async fn decimal_arithmetic_op() -> Result<()> {
actual[0].schema().field(0).data_type()
);
let expected = vec![
- "+--------------------------------------------+",
- "| decimal_simple.c1 Modulo decimal_simple.c5 |",
- "+--------------------------------------------+",
- "| 0.0000100 |",
- "| 0.0000200 |",
- "| 0.0000010 |",
- "| 0.0000300 |",
- "| 0.0000300 |",
- "| 0.0000080 |",
- "| 0.0000400 |",
- "| 0.0000000 |",
- "| 0.0000000 |",
- "| 0.0000400 |",
- "| 0.0000500 |",
- "| 0.0000500 |",
- "| 0.0000170 |",
- "| 0.0000500 |",
- "| 0.0000500 |",
- "+--------------------------------------------+",
+ "+---------------------------------------+",
+ "| decimal_simple.c1 % decimal_simple.c5 |",
+ "+---------------------------------------+",
+ "| 0.0000100 |",
+ "| 0.0000200 |",
+ "| 0.0000010 |",
+ "| 0.0000300 |",
+ "| 0.0000300 |",
+ "| 0.0000080 |",
+ "| 0.0000400 |",
+ "| 0.0000000 |",
+ "| 0.0000000 |",
+ "| 0.0000400 |",
+ "| 0.0000500 |",
+ "| 0.0000500 |",
+ "| 0.0000170 |",
+ "| 0.0000500 |",
+ "| 0.0000500 |",
+ "+---------------------------------------+",
];
assert_batches_eq!(expected, &actual);
diff --git a/datafusion/core/tests/sql/expr.rs
b/datafusion/core/tests/sql/expr.rs
index f5dbd9661..0c59724bd 100644
--- a/datafusion/core/tests/sql/expr.rs
+++ b/datafusion/core/tests/sql/expr.rs
@@ -561,14 +561,14 @@ async fn query_scalar_minus_array() -> Result<()> {
let sql = "SELECT 4 - c1 FROM test";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
- "+------------------------+",
- "| Int64(4) Minus test.c1 |",
- "+------------------------+",
- "| 4 |",
- "| 3 |",
- "| |",
- "| 1 |",
- "+------------------------+",
+ "+--------------------+",
+ "| Int64(4) - test.c1 |",
+ "+--------------------+",
+ "| 4 |",
+ "| 3 |",
+ "| |",
+ "| 1 |",
+ "+--------------------+",
];
assert_batches_eq!(expected, &actual);
Ok(())
diff --git a/datafusion/core/tests/sql/functions.rs
b/datafusion/core/tests/sql/functions.rs
index e780e7e0f..e7bcb24c7 100644
--- a/datafusion/core/tests/sql/functions.rs
+++ b/datafusion/core/tests/sql/functions.rs
@@ -333,14 +333,14 @@ async fn coalesce_mul_with_default_value() -> Result<()> {
let sql = "SELECT COALESCE(c1 * c2, 0) FROM test";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
- "+---------------------------------------------+",
- "| coalesce(test.c1 Multiply test.c2,Int64(0)) |",
- "+---------------------------------------------+",
- "| 2 |",
- "| 0 |",
- "| 0 |",
- "| 0 |",
- "+---------------------------------------------+",
+ "+--------------------------------------+",
+ "| coalesce(test.c1 * test.c2,Int64(0)) |",
+ "+--------------------------------------+",
+ "| 2 |",
+ "| 0 |",
+ "| 0 |",
+ "| 0 |",
+ "+--------------------------------------+",
];
assert_batches_eq!(expected, &actual);
Ok(())
diff --git a/datafusion/core/tests/sql/select.rs
b/datafusion/core/tests/sql/select.rs
index fc1eee2af..41554ab3c 100644
--- a/datafusion/core/tests/sql/select.rs
+++ b/datafusion/core/tests/sql/select.rs
@@ -478,14 +478,14 @@ async fn use_between_expression_in_select_query() ->
Result<()> {
let actual = execute_to_batches(&ctx, sql).await;
// Expect field name to be correctly converted for expr, low and high.
let expected = vec![
-
"+--------------------------------------------------------------------+",
- "| abs(test.c1) BETWEEN Int64(0) AND log(test.c1 Multiply Int64(100))
|",
-
"+--------------------------------------------------------------------+",
- "| true
|",
- "| true
|",
- "| false
|",
- "| false
|",
-
"+--------------------------------------------------------------------+",
+ "+-------------------------------------------------------------+",
+ "| abs(test.c1) BETWEEN Int64(0) AND log(test.c1 * Int64(100)) |",
+ "+-------------------------------------------------------------+",
+ "| true |",
+ "| true |",
+ "| false |",
+ "| false |",
+ "+-------------------------------------------------------------+",
];
assert_batches_eq!(expected, &actual);
@@ -1204,11 +1204,11 @@ async fn unprojected_filter() {
let results = df.collect().await.unwrap();
let expected = vec![
- "+--------------------------+",
- "| ?table?.i Plus ?table?.i |",
- "+--------------------------+",
- "| 6 |",
- "+--------------------------+",
+ "+-----------------------+",
+ "| ?table?.i + ?table?.i |",
+ "+-----------------------+",
+ "| 6 |",
+ "+-----------------------+",
];
assert_batches_sorted_eq!(expected, &results);
}
diff --git a/datafusion/core/tests/sql/timestamp.rs
b/datafusion/core/tests/sql/timestamp.rs
index fab0dbf1d..82f98cf99 100644
--- a/datafusion/core/tests/sql/timestamp.rs
+++ b/datafusion/core/tests/sql/timestamp.rs
@@ -564,19 +564,19 @@ async fn timestamp_coercion() -> Result<()> {
let sql = "SELECT table_a.ts, table_b.ts, table_a.ts = table_b.ts FROM
table_a, table_b";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+---------------------+-------------------------+--------------------------+",
- "| ts | ts | table_a.ts Eq
table_b.ts |",
-
"+---------------------+-------------------------+--------------------------+",
- "| 2020-09-08 13:42:29 | 2020-09-08 13:42:29.190 | true
|",
- "| 2020-09-08 13:42:29 | 2020-09-08 12:42:29.190 | false
|",
- "| 2020-09-08 13:42:29 | 2020-09-08 11:42:29.190 | false
|",
- "| 2020-09-08 12:42:29 | 2020-09-08 13:42:29.190 | false
|",
- "| 2020-09-08 12:42:29 | 2020-09-08 12:42:29.190 | true
|",
- "| 2020-09-08 12:42:29 | 2020-09-08 11:42:29.190 | false
|",
- "| 2020-09-08 11:42:29 | 2020-09-08 13:42:29.190 | false
|",
- "| 2020-09-08 11:42:29 | 2020-09-08 12:42:29.190 | false
|",
- "| 2020-09-08 11:42:29 | 2020-09-08 11:42:29.190 | true
|",
-
"+---------------------+-------------------------+--------------------------+",
+
"+---------------------+-------------------------+-------------------------+",
+ "| ts | ts | table_a.ts =
table_b.ts |",
+
"+---------------------+-------------------------+-------------------------+",
+ "| 2020-09-08 13:42:29 | 2020-09-08 13:42:29.190 | true
|",
+ "| 2020-09-08 13:42:29 | 2020-09-08 12:42:29.190 | false
|",
+ "| 2020-09-08 13:42:29 | 2020-09-08 11:42:29.190 | false
|",
+ "| 2020-09-08 12:42:29 | 2020-09-08 13:42:29.190 | false
|",
+ "| 2020-09-08 12:42:29 | 2020-09-08 12:42:29.190 | true
|",
+ "| 2020-09-08 12:42:29 | 2020-09-08 11:42:29.190 | false
|",
+ "| 2020-09-08 11:42:29 | 2020-09-08 13:42:29.190 | false
|",
+ "| 2020-09-08 11:42:29 | 2020-09-08 12:42:29.190 | false
|",
+ "| 2020-09-08 11:42:29 | 2020-09-08 11:42:29.190 | true
|",
+
"+---------------------+-------------------------+-------------------------+",
];
assert_batches_eq!(expected, &actual);
}
@@ -591,19 +591,20 @@ async fn timestamp_coercion() -> Result<()> {
let sql = "SELECT table_a.ts, table_b.ts, table_a.ts = table_b.ts FROM
table_a, table_b";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+---------------------+----------------------------+--------------------------+",
- "| ts | ts | table_a.ts
Eq table_b.ts |",
-
"+---------------------+----------------------------+--------------------------+",
- "| 2020-09-08 13:42:29 | 2020-09-08 13:42:29.190855 | true
|",
- "| 2020-09-08 13:42:29 | 2020-09-08 12:42:29.190855 | false
|",
- "| 2020-09-08 13:42:29 | 2020-09-08 11:42:29.190855 | false
|",
- "| 2020-09-08 12:42:29 | 2020-09-08 13:42:29.190855 | false
|",
- "| 2020-09-08 12:42:29 | 2020-09-08 12:42:29.190855 | true
|",
- "| 2020-09-08 12:42:29 | 2020-09-08 11:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29 | 2020-09-08 13:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29 | 2020-09-08 12:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29 | 2020-09-08 11:42:29.190855 | true
|",
-
"+---------------------+----------------------------+--------------------------+",
+
"+---------------------+----------------------------+-------------------------+",
+ "| ts | ts | table_a.ts =
table_b.ts |",
+
"+---------------------+----------------------------+-------------------------+",
+ "| 2020-09-08 13:42:29 | 2020-09-08 13:42:29.190855 | true
|",
+ "| 2020-09-08 13:42:29 | 2020-09-08 12:42:29.190855 | false
|",
+ "| 2020-09-08 13:42:29 | 2020-09-08 11:42:29.190855 | false
|",
+ "| 2020-09-08 12:42:29 | 2020-09-08 13:42:29.190855 | false
|",
+ "| 2020-09-08 12:42:29 | 2020-09-08 12:42:29.190855 | true
|",
+ "| 2020-09-08 12:42:29 | 2020-09-08 11:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29 | 2020-09-08 13:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29 | 2020-09-08 12:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29 | 2020-09-08 11:42:29.190855 | true
|",
+
"+---------------------+----------------------------+-------------------------+",
+
];
assert_batches_eq!(expected, &actual);
}
@@ -618,19 +619,19 @@ async fn timestamp_coercion() -> Result<()> {
let sql = "SELECT table_a.ts, table_b.ts, table_a.ts = table_b.ts FROM
table_a, table_b";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+---------------------+----------------------------+--------------------------+",
- "| ts | ts | table_a.ts
Eq table_b.ts |",
-
"+---------------------+----------------------------+--------------------------+",
- "| 2020-09-08 13:42:29 | 2020-09-08 13:42:29.190855 | true
|",
- "| 2020-09-08 13:42:29 | 2020-09-08 12:42:29.190855 | false
|",
- "| 2020-09-08 13:42:29 | 2020-09-08 11:42:29.190855 | false
|",
- "| 2020-09-08 12:42:29 | 2020-09-08 13:42:29.190855 | false
|",
- "| 2020-09-08 12:42:29 | 2020-09-08 12:42:29.190855 | true
|",
- "| 2020-09-08 12:42:29 | 2020-09-08 11:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29 | 2020-09-08 13:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29 | 2020-09-08 12:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29 | 2020-09-08 11:42:29.190855 | true
|",
-
"+---------------------+----------------------------+--------------------------+",
+
"+---------------------+----------------------------+-------------------------+",
+ "| ts | ts | table_a.ts =
table_b.ts |",
+
"+---------------------+----------------------------+-------------------------+",
+ "| 2020-09-08 13:42:29 | 2020-09-08 13:42:29.190855 | true
|",
+ "| 2020-09-08 13:42:29 | 2020-09-08 12:42:29.190855 | false
|",
+ "| 2020-09-08 13:42:29 | 2020-09-08 11:42:29.190855 | false
|",
+ "| 2020-09-08 12:42:29 | 2020-09-08 13:42:29.190855 | false
|",
+ "| 2020-09-08 12:42:29 | 2020-09-08 12:42:29.190855 | true
|",
+ "| 2020-09-08 12:42:29 | 2020-09-08 11:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29 | 2020-09-08 13:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29 | 2020-09-08 12:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29 | 2020-09-08 11:42:29.190855 | true
|",
+
"+---------------------+----------------------------+-------------------------+",
];
assert_batches_eq!(expected, &actual);
}
@@ -645,19 +646,19 @@ async fn timestamp_coercion() -> Result<()> {
let sql = "SELECT table_a.ts, table_b.ts, table_a.ts = table_b.ts FROM
table_a, table_b";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+-------------------------+---------------------+--------------------------+",
- "| ts | ts | table_a.ts Eq
table_b.ts |",
-
"+-------------------------+---------------------+--------------------------+",
- "| 2020-09-08 13:42:29.190 | 2020-09-08 13:42:29 | true
|",
- "| 2020-09-08 13:42:29.190 | 2020-09-08 12:42:29 | false
|",
- "| 2020-09-08 13:42:29.190 | 2020-09-08 11:42:29 | false
|",
- "| 2020-09-08 12:42:29.190 | 2020-09-08 13:42:29 | false
|",
- "| 2020-09-08 12:42:29.190 | 2020-09-08 12:42:29 | true
|",
- "| 2020-09-08 12:42:29.190 | 2020-09-08 11:42:29 | false
|",
- "| 2020-09-08 11:42:29.190 | 2020-09-08 13:42:29 | false
|",
- "| 2020-09-08 11:42:29.190 | 2020-09-08 12:42:29 | false
|",
- "| 2020-09-08 11:42:29.190 | 2020-09-08 11:42:29 | true
|",
-
"+-------------------------+---------------------+--------------------------+",
+
"+-------------------------+---------------------+-------------------------+",
+ "| ts | ts | table_a.ts =
table_b.ts |",
+
"+-------------------------+---------------------+-------------------------+",
+ "| 2020-09-08 13:42:29.190 | 2020-09-08 13:42:29 | true
|",
+ "| 2020-09-08 13:42:29.190 | 2020-09-08 12:42:29 | false
|",
+ "| 2020-09-08 13:42:29.190 | 2020-09-08 11:42:29 | false
|",
+ "| 2020-09-08 12:42:29.190 | 2020-09-08 13:42:29 | false
|",
+ "| 2020-09-08 12:42:29.190 | 2020-09-08 12:42:29 | true
|",
+ "| 2020-09-08 12:42:29.190 | 2020-09-08 11:42:29 | false
|",
+ "| 2020-09-08 11:42:29.190 | 2020-09-08 13:42:29 | false
|",
+ "| 2020-09-08 11:42:29.190 | 2020-09-08 12:42:29 | false
|",
+ "| 2020-09-08 11:42:29.190 | 2020-09-08 11:42:29 | true
|",
+
"+-------------------------+---------------------+-------------------------+",
];
assert_batches_eq!(expected, &actual);
}
@@ -672,19 +673,19 @@ async fn timestamp_coercion() -> Result<()> {
let sql = "SELECT table_a.ts, table_b.ts, table_a.ts = table_b.ts FROM
table_a, table_b";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+-------------------------+----------------------------+--------------------------+",
- "| ts | ts |
table_a.ts Eq table_b.ts |",
-
"+-------------------------+----------------------------+--------------------------+",
- "| 2020-09-08 13:42:29.190 | 2020-09-08 13:42:29.190855 | true
|",
- "| 2020-09-08 13:42:29.190 | 2020-09-08 12:42:29.190855 | false
|",
- "| 2020-09-08 13:42:29.190 | 2020-09-08 11:42:29.190855 | false
|",
- "| 2020-09-08 12:42:29.190 | 2020-09-08 13:42:29.190855 | false
|",
- "| 2020-09-08 12:42:29.190 | 2020-09-08 12:42:29.190855 | true
|",
- "| 2020-09-08 12:42:29.190 | 2020-09-08 11:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29.190 | 2020-09-08 13:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29.190 | 2020-09-08 12:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29.190 | 2020-09-08 11:42:29.190855 | true
|",
-
"+-------------------------+----------------------------+--------------------------+",
+
"+-------------------------+----------------------------+-------------------------+",
+ "| ts | ts |
table_a.ts = table_b.ts |",
+
"+-------------------------+----------------------------+-------------------------+",
+ "| 2020-09-08 13:42:29.190 | 2020-09-08 13:42:29.190855 | true
|",
+ "| 2020-09-08 13:42:29.190 | 2020-09-08 12:42:29.190855 | false
|",
+ "| 2020-09-08 13:42:29.190 | 2020-09-08 11:42:29.190855 | false
|",
+ "| 2020-09-08 12:42:29.190 | 2020-09-08 13:42:29.190855 | false
|",
+ "| 2020-09-08 12:42:29.190 | 2020-09-08 12:42:29.190855 | true
|",
+ "| 2020-09-08 12:42:29.190 | 2020-09-08 11:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29.190 | 2020-09-08 13:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29.190 | 2020-09-08 12:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29.190 | 2020-09-08 11:42:29.190855 | true
|",
+
"+-------------------------+----------------------------+-------------------------+",
];
assert_batches_eq!(expected, &actual);
}
@@ -699,19 +700,19 @@ async fn timestamp_coercion() -> Result<()> {
let sql = "SELECT table_a.ts, table_b.ts, table_a.ts = table_b.ts FROM
table_a, table_b";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+-------------------------+----------------------------+--------------------------+",
- "| ts | ts |
table_a.ts Eq table_b.ts |",
-
"+-------------------------+----------------------------+--------------------------+",
- "| 2020-09-08 13:42:29.190 | 2020-09-08 13:42:29.190855 | true
|",
- "| 2020-09-08 13:42:29.190 | 2020-09-08 12:42:29.190855 | false
|",
- "| 2020-09-08 13:42:29.190 | 2020-09-08 11:42:29.190855 | false
|",
- "| 2020-09-08 12:42:29.190 | 2020-09-08 13:42:29.190855 | false
|",
- "| 2020-09-08 12:42:29.190 | 2020-09-08 12:42:29.190855 | true
|",
- "| 2020-09-08 12:42:29.190 | 2020-09-08 11:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29.190 | 2020-09-08 13:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29.190 | 2020-09-08 12:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29.190 | 2020-09-08 11:42:29.190855 | true
|",
-
"+-------------------------+----------------------------+--------------------------+",
+
"+-------------------------+----------------------------+-------------------------+",
+ "| ts | ts |
table_a.ts = table_b.ts |",
+
"+-------------------------+----------------------------+-------------------------+",
+ "| 2020-09-08 13:42:29.190 | 2020-09-08 13:42:29.190855 | true
|",
+ "| 2020-09-08 13:42:29.190 | 2020-09-08 12:42:29.190855 | false
|",
+ "| 2020-09-08 13:42:29.190 | 2020-09-08 11:42:29.190855 | false
|",
+ "| 2020-09-08 12:42:29.190 | 2020-09-08 13:42:29.190855 | false
|",
+ "| 2020-09-08 12:42:29.190 | 2020-09-08 12:42:29.190855 | true
|",
+ "| 2020-09-08 12:42:29.190 | 2020-09-08 11:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29.190 | 2020-09-08 13:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29.190 | 2020-09-08 12:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29.190 | 2020-09-08 11:42:29.190855 | true
|",
+
"+-------------------------+----------------------------+-------------------------+",
];
assert_batches_eq!(expected, &actual);
}
@@ -726,19 +727,19 @@ async fn timestamp_coercion() -> Result<()> {
let sql = "SELECT table_a.ts, table_b.ts, table_a.ts = table_b.ts FROM
table_a, table_b";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+----------------------------+---------------------+--------------------------+",
- "| ts | ts | table_a.ts
Eq table_b.ts |",
-
"+----------------------------+---------------------+--------------------------+",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 13:42:29 | true
|",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 12:42:29 | false
|",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 11:42:29 | false
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 13:42:29 | false
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 12:42:29 | true
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 11:42:29 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 13:42:29 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 12:42:29 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 11:42:29 | true
|",
-
"+----------------------------+---------------------+--------------------------+",
+
"+----------------------------+---------------------+-------------------------+",
+ "| ts | ts | table_a.ts =
table_b.ts |",
+
"+----------------------------+---------------------+-------------------------+",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 13:42:29 | true
|",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 12:42:29 | false
|",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 11:42:29 | false
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 13:42:29 | false
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 12:42:29 | true
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 11:42:29 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 13:42:29 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 12:42:29 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 11:42:29 | true
|",
+
"+----------------------------+---------------------+-------------------------+",
];
assert_batches_eq!(expected, &actual);
}
@@ -753,19 +754,19 @@ async fn timestamp_coercion() -> Result<()> {
let sql = "SELECT table_a.ts, table_b.ts, table_a.ts = table_b.ts FROM
table_a, table_b";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+----------------------------+-------------------------+--------------------------+",
- "| ts | ts |
table_a.ts Eq table_b.ts |",
-
"+----------------------------+-------------------------+--------------------------+",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 13:42:29.190 | true
|",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 12:42:29.190 | false
|",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 11:42:29.190 | false
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 13:42:29.190 | false
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 12:42:29.190 | true
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 11:42:29.190 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 13:42:29.190 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 12:42:29.190 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 11:42:29.190 | true
|",
-
"+----------------------------+-------------------------+--------------------------+",
+
"+----------------------------+-------------------------+-------------------------+",
+ "| ts | ts |
table_a.ts = table_b.ts |",
+
"+----------------------------+-------------------------+-------------------------+",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 13:42:29.190 | true
|",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 12:42:29.190 | false
|",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 11:42:29.190 | false
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 13:42:29.190 | false
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 12:42:29.190 | true
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 11:42:29.190 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 13:42:29.190 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 12:42:29.190 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 11:42:29.190 | true
|",
+
"+----------------------------+-------------------------+-------------------------+",
];
assert_batches_eq!(expected, &actual);
}
@@ -780,19 +781,19 @@ async fn timestamp_coercion() -> Result<()> {
let sql = "SELECT table_a.ts, table_b.ts, table_a.ts = table_b.ts FROM
table_a, table_b";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+----------------------------+----------------------------+--------------------------+",
- "| ts | ts |
table_a.ts Eq table_b.ts |",
-
"+----------------------------+----------------------------+--------------------------+",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 13:42:29.190855 | true
|",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 12:42:29.190855 | false
|",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 11:42:29.190855 | false
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 13:42:29.190855 | false
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 12:42:29.190855 | true
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 11:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 13:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 12:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 11:42:29.190855 | true
|",
-
"+----------------------------+----------------------------+--------------------------+",
+
"+----------------------------+----------------------------+-------------------------+",
+ "| ts | ts |
table_a.ts = table_b.ts |",
+
"+----------------------------+----------------------------+-------------------------+",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 13:42:29.190855 | true
|",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 12:42:29.190855 | false
|",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 11:42:29.190855 | false
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 13:42:29.190855 | false
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 12:42:29.190855 | true
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 11:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 13:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 12:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 11:42:29.190855 | true
|",
+
"+----------------------------+----------------------------+-------------------------+",
];
assert_batches_eq!(expected, &actual);
}
@@ -807,19 +808,19 @@ async fn timestamp_coercion() -> Result<()> {
let sql = "SELECT table_a.ts, table_b.ts, table_a.ts = table_b.ts FROM
table_a, table_b";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+----------------------------+---------------------+--------------------------+",
- "| ts | ts | table_a.ts
Eq table_b.ts |",
-
"+----------------------------+---------------------+--------------------------+",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 13:42:29 | true
|",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 12:42:29 | false
|",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 11:42:29 | false
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 13:42:29 | false
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 12:42:29 | true
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 11:42:29 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 13:42:29 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 12:42:29 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 11:42:29 | true
|",
-
"+----------------------------+---------------------+--------------------------+",
+
"+----------------------------+---------------------+-------------------------+",
+ "| ts | ts | table_a.ts =
table_b.ts |",
+
"+----------------------------+---------------------+-------------------------+",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 13:42:29 | true
|",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 12:42:29 | false
|",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 11:42:29 | false
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 13:42:29 | false
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 12:42:29 | true
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 11:42:29 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 13:42:29 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 12:42:29 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 11:42:29 | true
|",
+
"+----------------------------+---------------------+-------------------------+",
];
assert_batches_eq!(expected, &actual);
}
@@ -834,19 +835,19 @@ async fn timestamp_coercion() -> Result<()> {
let sql = "SELECT table_a.ts, table_b.ts, table_a.ts = table_b.ts FROM
table_a, table_b";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+----------------------------+-------------------------+--------------------------+",
- "| ts | ts |
table_a.ts Eq table_b.ts |",
-
"+----------------------------+-------------------------+--------------------------+",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 13:42:29.190 | true
|",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 12:42:29.190 | false
|",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 11:42:29.190 | false
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 13:42:29.190 | false
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 12:42:29.190 | true
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 11:42:29.190 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 13:42:29.190 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 12:42:29.190 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 11:42:29.190 | true
|",
-
"+----------------------------+-------------------------+--------------------------+",
+
"+----------------------------+-------------------------+-------------------------+",
+ "| ts | ts |
table_a.ts = table_b.ts |",
+
"+----------------------------+-------------------------+-------------------------+",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 13:42:29.190 | true
|",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 12:42:29.190 | false
|",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 11:42:29.190 | false
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 13:42:29.190 | false
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 12:42:29.190 | true
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 11:42:29.190 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 13:42:29.190 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 12:42:29.190 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 11:42:29.190 | true
|",
+
"+----------------------------+-------------------------+-------------------------+",
];
assert_batches_eq!(expected, &actual);
}
@@ -861,19 +862,19 @@ async fn timestamp_coercion() -> Result<()> {
let sql = "SELECT table_a.ts, table_b.ts, table_a.ts = table_b.ts FROM
table_a, table_b";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+----------------------------+----------------------------+--------------------------+",
- "| ts | ts |
table_a.ts Eq table_b.ts |",
-
"+----------------------------+----------------------------+--------------------------+",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 13:42:29.190855 | true
|",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 12:42:29.190855 | false
|",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 11:42:29.190855 | false
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 13:42:29.190855 | false
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 12:42:29.190855 | true
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 11:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 13:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 12:42:29.190855 | false
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 11:42:29.190855 | true
|",
-
"+----------------------------+----------------------------+--------------------------+",
+
"+----------------------------+----------------------------+-------------------------+",
+ "| ts | ts |
table_a.ts = table_b.ts |",
+
"+----------------------------+----------------------------+-------------------------+",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 13:42:29.190855 | true
|",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 12:42:29.190855 | false
|",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 11:42:29.190855 | false
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 13:42:29.190855 | false
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 12:42:29.190855 | true
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 11:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 13:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 12:42:29.190855 | false
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 11:42:29.190855 | true
|",
+
"+----------------------------+----------------------------+-------------------------+",
];
assert_batches_eq!(expected, &actual);
}
@@ -1451,52 +1452,52 @@ async fn timestamp_array_add_interval() -> Result<()> {
let sql = "SELECT ts, ts - INTERVAL '8' MILLISECONDS FROM table_a";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+----------------------------+---------------------------------------+",
- "| ts | table_a.ts Minus
IntervalDayTime(\"8\") |",
-
"+----------------------------+---------------------------------------+",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 13:42:29.182855
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 12:42:29.182855
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 11:42:29.182855
|",
-
"+----------------------------+---------------------------------------+",
+ "+----------------------------+-----------------------------------+",
+ "| ts | table_a.ts - IntervalDayTime(\"8\") |",
+ "+----------------------------+-----------------------------------+",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 13:42:29.182855 |",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 12:42:29.182855 |",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 11:42:29.182855 |",
+ "+----------------------------+-----------------------------------+",
];
assert_batches_eq!(expected, &actual);
let sql = "SELECT ts, ts + INTERVAL '1' SECOND FROM table_b";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+----------------------------+-----------------------------------------+",
- "| ts | table_b.ts Plus
IntervalDayTime(\"1000\") |",
-
"+----------------------------+-----------------------------------------+",
- "| 2020-09-08 13:42:29.190855 | 2020-09-08 13:42:30.190855
|",
- "| 2020-09-08 12:42:29.190855 | 2020-09-08 12:42:30.190855
|",
- "| 2020-09-08 11:42:29.190855 | 2020-09-08 11:42:30.190855
|",
-
"+----------------------------+-----------------------------------------+",
+
"+----------------------------+--------------------------------------+",
+ "| ts | table_b.ts + IntervalDayTime(\"1000\")
|",
+
"+----------------------------+--------------------------------------+",
+ "| 2020-09-08 13:42:29.190855 | 2020-09-08 13:42:30.190855
|",
+ "| 2020-09-08 12:42:29.190855 | 2020-09-08 12:42:30.190855
|",
+ "| 2020-09-08 11:42:29.190855 | 2020-09-08 11:42:30.190855
|",
+
"+----------------------------+--------------------------------------+",
];
assert_batches_eq!(expected, &actual);
let sql = "SELECT ts, ts + INTERVAL '2' MONTH FROM table_b";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+----------------------------+----------------------------------------+",
- "| ts | table_b.ts Plus
IntervalYearMonth(\"2\") |",
-
"+----------------------------+----------------------------------------+",
- "| 2020-09-08 13:42:29.190855 | 2020-11-08 13:42:29.190855
|",
- "| 2020-09-08 12:42:29.190855 | 2020-11-08 12:42:29.190855
|",
- "| 2020-09-08 11:42:29.190855 | 2020-11-08 11:42:29.190855
|",
-
"+----------------------------+----------------------------------------+",
+ "+----------------------------+-------------------------------------+",
+ "| ts | table_b.ts + IntervalYearMonth(\"2\")
|",
+ "+----------------------------+-------------------------------------+",
+ "| 2020-09-08 13:42:29.190855 | 2020-11-08 13:42:29.190855 |",
+ "| 2020-09-08 12:42:29.190855 | 2020-11-08 12:42:29.190855 |",
+ "| 2020-09-08 11:42:29.190855 | 2020-11-08 11:42:29.190855 |",
+ "+----------------------------+-------------------------------------+",
];
assert_batches_eq!(expected, &actual);
let sql = "SELECT ts, ts - INTERVAL '16' YEAR FROM table_b";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+----------------------------+-------------------------------------------+",
- "| ts | table_b.ts Minus
IntervalYearMonth(\"192\") |",
-
"+----------------------------+-------------------------------------------+",
- "| 2020-09-08 13:42:29.190855 | 2004-09-08 13:42:29.190855
|",
- "| 2020-09-08 12:42:29.190855 | 2004-09-08 12:42:29.190855
|",
- "| 2020-09-08 11:42:29.190855 | 2004-09-08 11:42:29.190855
|",
-
"+----------------------------+-------------------------------------------+",
+
"+----------------------------+---------------------------------------+",
+ "| ts | table_b.ts -
IntervalYearMonth(\"192\") |",
+
"+----------------------------+---------------------------------------+",
+ "| 2020-09-08 13:42:29.190855 | 2004-09-08 13:42:29.190855
|",
+ "| 2020-09-08 12:42:29.190855 | 2004-09-08 12:42:29.190855
|",
+ "| 2020-09-08 11:42:29.190855 | 2004-09-08 11:42:29.190855
|",
+
"+----------------------------+---------------------------------------+",
];
assert_batches_eq!(expected, &actual);
Ok(())
diff --git a/datafusion/core/tests/sql/window.rs
b/datafusion/core/tests/sql/window.rs
index baaaee343..1c909fa71 100644
--- a/datafusion/core/tests/sql/window.rs
+++ b/datafusion/core/tests/sql/window.rs
@@ -440,12 +440,12 @@ async fn window_in_expression() -> Result<()> {
let sql = "select 1 - lag(amount, 1) over (order by idx) from (values
('a', 1, 100), ('a', 2, 150)) as t (col1, idx, amount)";
let actual = execute_to_batches(&ctx, sql).await;
let expected = vec![
-
"+------------------------------------------------------------------------+",
- "| Int64(1) Minus LAG(t.amount,Int64(1)) ORDER BY [#t.idx ASC NULLS
LAST] |",
-
"+------------------------------------------------------------------------+",
- "|
|",
- "| -99
|",
-
"+------------------------------------------------------------------------+",
+
"+--------------------------------------------------------------------+",
+ "| Int64(1) - LAG(t.amount,Int64(1)) ORDER BY [#t.idx ASC NULLS LAST]
|",
+
"+--------------------------------------------------------------------+",
+ "|
|",
+ "| -99
|",
+
"+--------------------------------------------------------------------+",
];
assert_batches_eq!(expected, &actual);
Ok(())