Original file line number Diff line number Diff line change
@@ -1,18 +1,25 @@
SELECT t0.`key`, t0.`value`
SELECT
t1.string_col AS key,
CAST(t1.float_col AS DOUBLE) AS value
FROM (
WITH t1 AS (
SELECT t3.`string_col` AS `key`, t3.`double_col` AS `value`
FROM functional_alltypes t3
WHERE t3.`int_col` <= 0
),
t2 AS (
SELECT t3.`string_col` AS `key`, CAST(t3.`float_col` AS double) AS `value`
FROM functional_alltypes t3
WHERE t3.`int_col` > 0
)
SELECT *
FROM t2
EXCEPT
SELECT *
FROM t1
) t0
SELECT
*
FROM functional_alltypes AS t0
WHERE
(
t0.int_col > CAST(0 AS TINYINT)
)
) AS t1
EXCEPT
SELECT
t2.string_col AS key,
t2.double_col AS value
FROM (
SELECT
*
FROM functional_alltypes AS t0
WHERE
(
t0.int_col <= CAST(0 AS TINYINT)
)
) AS t2
Original file line number Diff line number Diff line change
@@ -1,2 +1,8 @@
SELECT DISTINCT t0.`string_col`, t0.`int_col`
FROM functional_alltypes t0
SELECT DISTINCT
*
FROM (
SELECT
t0.string_col AS string_col,
t0.int_col AS int_col
FROM functional_alltypes AS t0
) AS t1
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
import ibis


s = ibis.table(name="s", schema={"b": "string"})
lit = ibis.timestamp("2018-01-01 00:00:00")
s = ibis.table(name="s", schema={"b": "string"})
t = ibis.table(name="t", schema={"a": "int64", "b": "string", "c": "timestamp"})
proj = t.select([t.a, t.b, t.c.name("C")])
proj1 = proj.filter(proj.C == lit)
proj2 = proj1.select([proj1.a, proj1.b, lit.name("the_date")])
proj3 = proj2.inner_join(s, proj2.b == s.b).select(proj2.a)
f = t.filter(t.c == lit)
p = f.select(f.a, f.b, lit.name("the_date"))
joinchain = p.inner_join(s, p.b == s.b)

result = proj3.filter(proj3.a < 1.0)
result = joinchain.filter(joinchain.a < 1.0)
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
WITH t0 AS (
SELECT t4.`a`, t4.`b`, t4.`c` AS `C`
FROM t t4
),
t1 AS (
SELECT t0.*
FROM t0
WHERE t0.`C` = '2018-01-01T00:00:00'
),
t2 AS (
SELECT t1.`a`, t1.`b`, '2018-01-01T00:00:00' AS `the_date`
FROM t1
)
SELECT t3.*
SELECT
*
FROM (
SELECT t2.`a`
FROM t2
INNER JOIN s t4
ON t2.`b` = t4.`b`
) t3
WHERE t3.`a` < 1.0
SELECT
t3.a AS a
FROM (
SELECT
t2.a AS a,
t2.b AS b,
MAKE_TIMESTAMP(2018, 1, 1, 0, 0, 0.0) AS the_date
FROM (
SELECT
*
FROM t AS t1
WHERE
(
t1.c = MAKE_TIMESTAMP(2018, 1, 1, 0, 0, 0.0)
)
) AS t2
) AS t3
INNER JOIN s AS t0
ON t3.b = t0.b
) AS t5
WHERE
(
t5.a < CAST(1.0 AS DOUBLE)
)
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,11 @@
},
)
lit = ibis.literal(0)
alias = functional_alltypes.string_col.name("key")
intersection = (
functional_alltypes.select(
[alias, functional_alltypes.float_col.cast("float64").name("value")]
)
.filter(functional_alltypes.int_col > lit)
.intersect(
functional_alltypes.select(
[alias, functional_alltypes.double_col.name("value")]
).filter(functional_alltypes.int_col <= lit),
distinct=True,
)
)
f = functional_alltypes.filter(functional_alltypes.int_col > lit)
f1 = functional_alltypes.filter(functional_alltypes.int_col <= lit)

result = intersection.select([intersection.key, intersection.value])
result = f.select(
f.string_col.name("key"), f.float_col.cast("float64").name("value")
).intersect(
f1.select(f1.string_col.name("key"), f1.double_col.name("value")), distinct=True
)
Original file line number Diff line number Diff line change
@@ -1,18 +1,25 @@
SELECT t0.`key`, t0.`value`
SELECT
t1.string_col AS key,
CAST(t1.float_col AS DOUBLE) AS value
FROM (
WITH t1 AS (
SELECT t3.`string_col` AS `key`, t3.`double_col` AS `value`
FROM functional_alltypes t3
WHERE t3.`int_col` <= 0
),
t2 AS (
SELECT t3.`string_col` AS `key`, CAST(t3.`float_col` AS double) AS `value`
FROM functional_alltypes t3
WHERE t3.`int_col` > 0
)
SELECT *
FROM t2
INTERSECT
SELECT *
FROM t1
) t0
SELECT
*
FROM functional_alltypes AS t0
WHERE
(
t0.int_col > CAST(0 AS TINYINT)
)
) AS t1
INTERSECT
SELECT
t2.string_col AS key,
t2.double_col AS value
FROM (
SELECT
*
FROM functional_alltypes AS t0
WHERE
(
t0.int_col <= CAST(0 AS TINYINT)
)
) AS t2
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,11 @@
},
)
lit = ibis.literal(0)
alias = functional_alltypes.string_col.name("key")
union = (
functional_alltypes.select(
[alias, functional_alltypes.float_col.cast("float64").name("value")]
)
.filter(functional_alltypes.int_col > lit)
.union(
functional_alltypes.select(
[alias, functional_alltypes.double_col.name("value")]
).filter(functional_alltypes.int_col <= lit),
distinct=True,
)
)
f = functional_alltypes.filter(functional_alltypes.int_col > lit)
f1 = functional_alltypes.filter(functional_alltypes.int_col <= lit)

result = union.select([union.key, union.value])
result = f.select(
f.string_col.name("key"), f.float_col.cast("float64").name("value")
).union(
f1.select(f1.string_col.name("key"), f1.double_col.name("value")), distinct=True
)
41 changes: 24 additions & 17 deletions ibis/backends/tests/sql/snapshots/test_compiler/test_union/out.sql
Original file line number Diff line number Diff line change
@@ -1,18 +1,25 @@
SELECT t0.`key`, t0.`value`
SELECT
t1.string_col AS key,
CAST(t1.float_col AS DOUBLE) AS value
FROM (
WITH t1 AS (
SELECT t3.`string_col` AS `key`, t3.`double_col` AS `value`
FROM functional_alltypes t3
WHERE t3.`int_col` <= 0
),
t2 AS (
SELECT t3.`string_col` AS `key`, CAST(t3.`float_col` AS double) AS `value`
FROM functional_alltypes t3
WHERE t3.`int_col` > 0
)
SELECT *
FROM t2
UNION
SELECT *
FROM t1
) t0
SELECT
*
FROM functional_alltypes AS t0
WHERE
(
t0.int_col > CAST(0 AS TINYINT)
)
) AS t1
UNION
SELECT
t2.string_col AS key,
t2.double_col AS value
FROM (
SELECT
*
FROM functional_alltypes AS t0
WHERE
(
t0.int_col <= CAST(0 AS TINYINT)
)
) AS t2
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@


t = ibis.table(name="t", schema={"a": "int64", "b": "string"})
proj = t.order_by(t.b.asc())
union = proj.union(proj)
s = t.order_by(t.b.asc())

result = union.select([union.a, union.b])
result = s.union(s)
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
SELECT t0.`a`, t0.`b`
FROM (
WITH t1 AS (
SELECT t2.*
FROM t t2
ORDER BY t2.`b` ASC
)
SELECT *
FROM t1
UNION ALL
SELECT *
FROM t1
) t0
SELECT
*
FROM t AS t0
ORDER BY
t0.b ASC
UNION ALL
SELECT
*
FROM t AS t0
ORDER BY
t0.b ASC
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,10 @@
},
)
lit = ibis.literal(0)
alias = functional_alltypes.string_col.name("key")
union = (
functional_alltypes.select(
[alias, functional_alltypes.float_col.cast("float64").name("value")]
)
.filter(functional_alltypes.int_col > lit)
.union(
functional_alltypes.select(
[alias, functional_alltypes.double_col.name("value")]
).filter(functional_alltypes.int_col <= lit)
)
)
proj = union.select([union.key, union.value])
f = functional_alltypes.filter(functional_alltypes.int_col > lit)
f1 = functional_alltypes.filter(functional_alltypes.int_col <= lit)
union = f.select(
f.string_col.name("key"), f.float_col.cast("float64").name("value")
).union(f1.select(f1.string_col.name("key"), f1.double_col.name("value")))

result = proj.select(proj.key)
result = union.select(union.key)
Original file line number Diff line number Diff line change
@@ -1,21 +1,29 @@
SELECT t0.`key`
SELECT
t5.key AS key
FROM (
SELECT t1.`key`, t1.`value`
SELECT
t1.string_col AS key,
CAST(t1.float_col AS DOUBLE) AS value
FROM (
WITH t2 AS (
SELECT t4.`string_col` AS `key`, t4.`double_col` AS `value`
FROM functional_alltypes t4
WHERE t4.`int_col` <= 0
),
t3 AS (
SELECT t4.`string_col` AS `key`, CAST(t4.`float_col` AS double) AS `value`
FROM functional_alltypes t4
WHERE t4.`int_col` > 0
)
SELECT *
FROM t3
UNION ALL
SELECT *
FROM t2
) t1
) t0
SELECT
*
FROM functional_alltypes AS t0
WHERE
(
t0.int_col > CAST(0 AS TINYINT)
)
) AS t1
UNION ALL
SELECT
t2.string_col AS key,
t2.double_col AS value
FROM (
SELECT
*
FROM functional_alltypes AS t0
WHERE
(
t0.int_col <= CAST(0 AS TINYINT)
)
) AS t2
) AS t5
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import ibis


tpch_region = ibis.table(
name="tpch_region",
schema={"r_regionkey": "int16", "r_name": "string", "r_comment": "string"},
)
tpch_nation = ibis.table(
name="tpch_nation",
schema={
Expand All @@ -10,15 +14,7 @@
"n_comment": "string",
},
)
tpch_region = ibis.table(
name="tpch_region",
schema={"r_regionkey": "int16", "r_name": "string", "r_comment": "string"},
)

result = (
tpch_region.inner_join(
tpch_nation, tpch_region.r_regionkey == tpch_nation.n_regionkey
)
.select([tpch_nation, tpch_region.r_name.name("region")])
.count()
)
result = tpch_region.inner_join(
tpch_nation, tpch_region.r_regionkey == tpch_nation.n_regionkey
).count()
Original file line number Diff line number Diff line change
@@ -1,7 +1 @@
SELECT count(1) AS `CountStar()`
FROM (
SELECT t2.*, t1.`r_name` AS `region`
FROM tpch_region t1
INNER JOIN tpch_nation t2
ON t1.`r_regionkey` = t2.`n_regionkey`
) t0
COUNT(*)
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
SELECT t0.`foo_id`, sum(t0.`f`) AS `total`
FROM star1 t0
GROUP BY 1
HAVING sum(t0.`f`) > 10
SELECT
*
FROM (
SELECT
t0.foo_id AS foo_id,
SUM(t0.f) AS total
FROM star1 AS t0
GROUP BY
1
) AS t1
WHERE
(
t1.total AS total > CAST(10 AS TINYINT)
)
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
SELECT t0.`foo_id`, sum(t0.`f`) AS `total`
FROM star1 t0
GROUP BY 1
HAVING count(1) > 100
SELECT
t2.foo_id AS foo_id,
t2.total AS total
FROM (
SELECT
*
FROM (
SELECT
t0.foo_id AS foo_id,
SUM(t0.f) AS total,
COUNT(*) AS "CountStar()"
FROM star1 AS t0
GROUP BY
1
) AS t1
WHERE
(
t1."CountStar()" > CAST(100 AS TINYINT)
)
) AS t2
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
SELECT t0.`foo_id`, sum(t0.`value1`) AS `total`
SELECT
t3.foo_id AS foo_id,
SUM(t3.value1) AS total
FROM (
SELECT t1.*, t2.`value1`
FROM star1 t1
INNER JOIN star2 t2
ON t1.`foo_id` = t2.`foo_id`
) t0
GROUP BY 1
SELECT
t0.c AS c,
t0.f AS f,
t0.foo_id AS foo_id,
t0.bar_id AS bar_id,
t1.value1 AS value1
FROM star1 AS t0
INNER JOIN star2 AS t1
ON t0.foo_id = t1.foo_id
) AS t3
GROUP BY
1
Original file line number Diff line number Diff line change
@@ -1,8 +1,31 @@
SELECT t0.`g`, sum(t0.`foo`) AS `foo total`
SELECT
t2.g AS g,
SUM(t2.foo) AS "foo total"
FROM (
SELECT t1.*, t1.`a` + t1.`b` AS `foo`
FROM alltypes t1
WHERE (t1.`f` > 0) AND
(t1.`g` = 'bar')
) t0
GROUP BY 1
SELECT
t1.a AS a,
t1.b AS b,
t1.c AS c,
t1.d AS d,
t1.e AS e,
t1.f AS f,
t1.g AS g,
t1.h AS h,
t1.i AS i,
t1.j AS j,
t1.k AS k,
t1.a + t1.b AS foo
FROM (
SELECT
*
FROM alltypes AS t0
WHERE
(
t0.f > CAST(0 AS TINYINT)
) AND (
t0.g = 'bar'
)
) AS t1
) AS t2
GROUP BY
1
Original file line number Diff line number Diff line change
@@ -1,8 +1,33 @@
SELECT t0.`g`, sum(t0.`foo`) AS `foo total`
SELECT
t2.g AS g,
SUM(t2.foo) AS "foo total"
FROM (
SELECT t1.*, t1.`a` + t1.`b` AS `foo`
FROM alltypes t1
WHERE t1.`f` > 0
) t0
WHERE t0.`foo` < 10
GROUP BY 1
SELECT
t1.a AS a,
t1.b AS b,
t1.c AS c,
t1.d AS d,
t1.e AS e,
t1.f AS f,
t1.g AS g,
t1.h AS h,
t1.i AS i,
t1.j AS j,
t1.k AS k,
t1.a + t1.b AS foo
FROM (
SELECT
*
FROM alltypes AS t0
WHERE
(
t0.f > CAST(0 AS TINYINT)
) AND (
(
t0.a + t0.b
) < CAST(10 AS TINYINT)
)
) AS t1
) AS t2
GROUP BY
1
Original file line number Diff line number Diff line change
@@ -1,4 +1,24 @@
SELECT t0.*, t0.`a` + t0.`b` AS `foo`
FROM alltypes t0
WHERE (t0.`f` > 0) AND
(t0.`g` = 'bar')
SELECT
t1.a AS a,
t1.b AS b,
t1.c AS c,
t1.d AS d,
t1.e AS e,
t1.f AS f,
t1.g AS g,
t1.h AS h,
t1.i AS i,
t1.j AS j,
t1.k AS k,
t1.a + t1.b AS foo
FROM (
SELECT
*
FROM alltypes AS t0
WHERE
(
t0.f > CAST(0 AS TINYINT)
) AND (
t0.g = 'bar'
)
) AS t1
Original file line number Diff line number Diff line change
@@ -1,3 +1,22 @@
SELECT t0.*, t0.`a` + t0.`b` AS `foo`
FROM alltypes t0
WHERE t0.`f` > 0
SELECT
t1.a AS a,
t1.b AS b,
t1.c AS c,
t1.d AS d,
t1.e AS e,
t1.f AS f,
t1.g AS g,
t1.h AS h,
t1.i AS i,
t1.j AS j,
t1.k AS k,
t1.a + t1.b AS foo
FROM (
SELECT
*
FROM alltypes AS t0
WHERE
(
t0.f > CAST(0 AS TINYINT)
)
) AS t1
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@
name="star2", schema={"foo_id": "string", "value1": "float64", "value3": "float64"}
)

result = star1.anti_join(star2, star1.foo_id == star2.foo_id).select(star1)
result = star1.anti_join(star2, star1.foo_id == star2.foo_id)
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
SELECT t0.*
FROM star1 t0
LEFT ANTI JOIN star2 t1
ON t0.`foo_id` = t1.`foo_id`
SELECT
t0.c AS c,
t0.f AS f,
t0.foo_id AS foo_id,
t0.bar_id AS bar_id
FROM star1 AS t0
ANTI JOIN star2 AS t1
ON t0.foo_id = t1.foo_id
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
SELECT t0.*
FROM airlines t0
WHERE (CAST(t0.`dest` AS bigint) = 0) = TRUE
SELECT
*
FROM airlines AS t0
WHERE
(
(
CAST(t0.dest AS BIGINT) = CAST(0 AS TINYINT)
) = TRUE
)
Original file line number Diff line number Diff line change
@@ -1,24 +1,55 @@
WITH t0 AS (
SELECT t3.*, t4.`n_name`, t5.`r_name`
FROM tpch_customer t3
INNER JOIN tpch_nation t4
ON t3.`c_nationkey` = t4.`n_nationkey`
INNER JOIN tpch_region t5
ON t4.`n_regionkey` = t5.`r_regionkey`
),
t1 AS (
SELECT t0.`n_name`,
sum(CAST(t0.`c_acctbal` AS double)) AS `Sum(Cast(c_acctbal, float64))`
FROM t0
GROUP BY 1
),
t2 AS (
SELECT t1.*
FROM t1
ORDER BY t1.`Sum(Cast(c_acctbal, float64))` DESC
SELECT
t5.c_name AS c_name,
t5.r_name AS r_name,
t5.n_name AS n_name
FROM (
SELECT
t0.c_custkey AS c_custkey,
t0.c_name AS c_name,
t0.c_address AS c_address,
t0.c_nationkey AS c_nationkey,
t0.c_phone AS c_phone,
t0.c_acctbal AS c_acctbal,
t0.c_mktsegment AS c_mktsegment,
t0.c_comment AS c_comment,
t1.n_name AS n_name,
t2.r_name AS r_name
FROM tpch_customer AS t0
INNER JOIN tpch_nation AS t1
ON t0.c_nationkey = t1.n_nationkey
INNER JOIN tpch_region AS t2
ON t1.n_regionkey = t2.r_regionkey
) AS t5
SEMI JOIN (
SELECT
*
FROM (
SELECT
t5.n_name AS n_name,
SUM(CAST(t5.c_acctbal AS DOUBLE)) AS "Sum(Cast(c_acctbal, float64))"
FROM (
SELECT
t0.c_custkey AS c_custkey,
t0.c_name AS c_name,
t0.c_address AS c_address,
t0.c_nationkey AS c_nationkey,
t0.c_phone AS c_phone,
t0.c_acctbal AS c_acctbal,
t0.c_mktsegment AS c_mktsegment,
t0.c_comment AS c_comment,
t1.n_name AS n_name,
t2.r_name AS r_name
FROM tpch_customer AS t0
INNER JOIN tpch_nation AS t1
ON t0.c_nationkey = t1.n_nationkey
INNER JOIN tpch_region AS t2
ON t1.n_regionkey = t2.r_regionkey
) AS t5
GROUP BY
1
) AS t6
ORDER BY
t6."Sum(Cast(c_acctbal, float64))" DESC
LIMIT 10
)
SELECT t0.`c_name`, t0.`r_name`, t0.`n_name`
FROM t0
LEFT SEMI JOIN t2
ON t0.`n_name` = t2.`n_name`
) AS t8
ON t5.n_name = t8.n_name
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,27 @@
lit2 = ibis.literal("bar")

result = alltypes.select(
[
alltypes.g.case()
.when(lit, lit2)
.when(lit1, ibis.literal("qux"))
.else_(ibis.literal("default"))
.end()
.name("col1"),
ibis.case()
.when(alltypes.g == lit, lit2)
.when(alltypes.g == lit1, alltypes.g)
.else_(ibis.literal(None).cast("string"))
.end()
.name("col2"),
alltypes,
]
alltypes.g.case()
.when(lit, lit2)
.when(lit1, ibis.literal("qux"))
.else_(ibis.literal("default"))
.end()
.name("col1"),
ibis.case()
.when(alltypes.g == lit, lit2)
.when(alltypes.g == lit1, alltypes.g)
.else_(ibis.literal(None).cast("string"))
.end()
.name("col2"),
alltypes.a,
alltypes.b,
alltypes.c,
alltypes.d,
alltypes.e,
alltypes.f,
alltypes.g,
alltypes.h,
alltypes.i,
alltypes.j,
alltypes.k,
)
Original file line number Diff line number Diff line change
@@ -1,12 +1,21 @@
SELECT
CASE t0.`g`
WHEN 'foo' THEN 'bar'
WHEN 'baz' THEN 'qux'
ELSE 'default'
END AS `col1`,
CASE t0.g WHEN 'foo' THEN 'bar' WHEN 'baz' THEN 'qux' ELSE 'default' END AS col1,
CASE
WHEN t0.`g` = 'foo' THEN 'bar'
WHEN t0.`g` = 'baz' THEN t0.`g`
ELSE CAST(NULL AS string)
END AS `col2`, t0.*
FROM alltypes t0
WHEN t0.g = 'foo'
THEN 'bar'
WHEN t0.g = 'baz'
THEN t0.g
ELSE CAST(NULL AS TEXT)
END AS col2,
t0.a AS a,
t0.b AS b,
t0.c AS c,
t0.d AS d,
t0.e AS e,
t0.f AS f,
t0.g AS g,
t0.h AS h,
t0.i AS i,
t0.j AS j,
t0.k AS k
FROM alltypes AS t0
Original file line number Diff line number Diff line change
@@ -1,18 +1,37 @@
WITH t0 AS (
SELECT t2.`city`, count(t2.`city`) AS `Count(city)`
FROM tbl t2
GROUP BY 1
)
SELECT t1.*
SELECT
*
FROM (
SELECT t0.*
FROM t0
ORDER BY t0.`Count(city)` DESC
SELECT
*
FROM (
SELECT
t0.city AS city,
COUNT(t0.city) AS "Count(city)"
FROM tbl AS t0
GROUP BY
1
) AS t1
ORDER BY
t1."Count(city)" DESC
LIMIT 10
) t1
LIMIT 5 OFFSET (SELECT count(1) + -5 FROM (
SELECT t0.*
FROM t0
ORDER BY t0.`Count(city)` DESC
LIMIT 10
) t1)
) AS t3
LIMIT 5
OFFSET (
SELECT
COUNT(*) + CAST(-5 AS TINYINT)
FROM (
SELECT
*
FROM (
SELECT
t0.city AS city,
COUNT(t0.city) AS "Count(city)"
FROM tbl AS t0
GROUP BY
1
) AS t1
ORDER BY
t1."Count(city)" DESC
LIMIT 10
) AS t3
)
Original file line number Diff line number Diff line change
@@ -1,48 +1,9 @@
WITH t0 AS (
SELECT t5.`diag`, t5.`status`
FROM aids2_two t5
),
t1 AS (
SELECT t5.`diag`, t5.`status`
FROM aids2_one t5
),
t2 AS (
SELECT t0.`diag` + 1 AS `diag`, t0.`status`
FROM t0
),
t3 AS (
SELECT t1.`diag` + 1 AS `diag`, t1.`status`
FROM t1
)
SELECT t4.`diag`, t4.`status`
FROM (
WITH t0 AS (
SELECT t5.`diag`, t5.`status`
FROM aids2_two t5
),
t1 AS (
SELECT t5.`diag`, t5.`status`
FROM aids2_one t5
),
t2 AS (
SELECT t0.`diag` + 1 AS `diag`, t0.`status`
FROM t0
),
t3 AS (
SELECT t1.`diag` + 1 AS `diag`, t1.`status`
FROM t1
),
t5 AS (
SELECT CAST(t2.`diag` AS int) AS `diag`, t2.`status`
FROM t2
),
t6 AS (
SELECT CAST(t3.`diag` AS int) AS `diag`, t3.`status`
FROM t3
)
SELECT *
FROM t6
UNION ALL
SELECT *
FROM t5
) t4
SELECT
CAST(t0.diag + CAST(1 AS TINYINT) AS INT) AS diag,
t0.status AS status
FROM aids2_one AS t0
UNION ALL
SELECT
CAST(t1.diag + CAST(1 AS TINYINT) AS INT) AS diag,
t1.status AS status
FROM aids2_two AS t1
Original file line number Diff line number Diff line change
@@ -1,12 +1,26 @@
WITH t0 AS (
SELECT t2.`key1`, t2.`key2`, t2.`key3`, sum(t2.`value`) AS `total`
FROM foo_table t2
GROUP BY 1, 2, 3
)
SELECT t1.`key1`, sum(t1.`total`) AS `total`
SELECT
t2.key1 AS key1,
SUM(t2.total) AS total
FROM (
SELECT t0.`key1`, t0.`key2`, sum(t0.`total`) AS `total`
FROM t0
GROUP BY 1, 2
) t1
GROUP BY 1
SELECT
t1.key1 AS key1,
t1.key2 AS key2,
SUM(t1.total) AS total
FROM (
SELECT
t0.key1 AS key1,
t0.key2 AS key2,
t0.key3 AS key3,
SUM(t0.value) AS total
FROM foo_table AS t0
GROUP BY
1,
2,
3
) AS t1
GROUP BY
1,
2
) AS t2
GROUP BY
1
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
SELECT t0.`foo_id` like concat('%', 'foo') AS `tmp`
FROM star1 t0
SUFFIX(t0.foo_id, 'foo') AS tmp
Original file line number Diff line number Diff line change
@@ -1,12 +1,21 @@
WITH t0 AS (
SELECT t2.*
FROM purchases t2
WHERE t2.`ts` > '2015-08-15'
)
SELECT t1.*
FROM events t1
WHERE EXISTS (
SELECT 1
FROM t0
WHERE t1.`user_id` = t0.`user_id`
)
SELECT
*
FROM events AS t0
WHERE
EXISTS(
(
SELECT
CAST(1 AS TINYINT) AS "1"
FROM (
SELECT
*
FROM purchases AS t1
WHERE
(
t1.ts > '2015-08-15'
) AND (
t0.user_id = t1.user_id
)
) AS t2
)
)
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
SELECT t0.*
FROM t t0
WHERE (lower(t0.`color`) LIKE '%de%') AND
(locate('de', lower(t0.`color`)) - 1 >= 0) AND
(regexp_like(lower(t0.`color`), '.*ge.*'))
SELECT
*
FROM t AS t0
WHERE
LOWER(t0.color) LIKE '%de%'
AND CONTAINS(LOWER(t0.color), 'de')
AND REGEXP_MATCHES(LOWER(t0.color), '.*ge.*', 's')
Original file line number Diff line number Diff line change
@@ -1,16 +1,40 @@
WITH t0 AS (
SELECT t2.`region`, t2.`kind`, sum(t2.`amount`) AS `total`
FROM purchases t2
WHERE t2.`kind` = 'bar'
GROUP BY 1, 2
),
t1 AS (
SELECT t2.`region`, t2.`kind`, sum(t2.`amount`) AS `total`
FROM purchases t2
WHERE t2.`kind` = 'foo'
GROUP BY 1, 2
)
SELECT t1.`region`, t1.`total` - t0.`total` AS `diff`
FROM t1
INNER JOIN t0
ON t1.`region` = t0.`region`
SELECT
t2.region AS region,
t2.total - t3.total AS diff
FROM (
SELECT
*
FROM (
SELECT
t0.region AS region,
t0.kind AS kind,
SUM(t0.amount) AS total
FROM purchases AS t0
GROUP BY
1,
2
) AS t1
WHERE
(
t1.kind = 'foo'
)
) AS t2
INNER JOIN (
SELECT
*
FROM (
SELECT
t0.region AS region,
t0.kind AS kind,
SUM(t0.amount) AS total
FROM purchases AS t0
GROUP BY
1,
2
) AS t1
WHERE
(
t1.kind = 'bar'
)
) AS t3
ON t2.region = t3.region
Original file line number Diff line number Diff line change
@@ -1,7 +1,21 @@
SELECT t0.*
FROM star1 t0
WHERE t0.`f` > ln((
SELECT avg(t0.`f`) AS `Mean(f)`
FROM star1 t0
WHERE t0.`foo_id` = 'foo'
))
SELECT
*
FROM star1 AS t0
WHERE
(
t0.f > LN(
(
SELECT
AVG(t1.f) AS "Mean(f)"
FROM (
SELECT
*
FROM star1 AS t0
WHERE
(
t0.foo_id = 'foo'
)
) AS t1
)
)
)
Original file line number Diff line number Diff line change
@@ -1,7 +1,23 @@
SELECT t0.*
FROM star1 t0
WHERE t0.`f` > (ln((
SELECT avg(t0.`f`) AS `Mean(f)`
FROM star1 t0
WHERE t0.`foo_id` = 'foo'
)) + 1)
SELECT
*
FROM star1 AS t0
WHERE
(
t0.f > (
LN(
(
SELECT
AVG(t1.f) AS "Mean(f)"
FROM (
SELECT
*
FROM star1 AS t0
WHERE
(
t0.foo_id = 'foo'
)
) AS t1
)
) + CAST(1 AS TINYINT)
)
)
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
SELECT t0.*, t0.`foo` * 2 AS `qux`
FROM (
SELECT t1.*, t1.`foo` + t1.`bar` AS `baz`
FROM tbl t1
) t0
SELECT
t0.foo AS foo,
t0.bar AS bar,
t0.value AS value,
t0.foo + t0.bar AS baz,
t0.foo * CAST(2 AS TINYINT) AS qux
FROM tbl AS t0
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
SELECT *, `foo` * 2 AS `qux`
SELECT
t1.foo AS foo,
t1.bar AS bar,
t1.value AS value,
t1.foo + t1.bar AS baz,
t1.foo * CAST(2 AS TINYINT) AS qux
FROM (
SELECT t1.*, t1.`foo` + t1.`bar` AS `baz`
FROM tbl t1
WHERE t1.`value` > 0
) t0
SELECT
*
FROM tbl AS t0
WHERE
(
t0.value > CAST(0 AS TINYINT)
)
) AS t1
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
SELECT t0.`date` AS `else`, t0.`explain` AS `join`
FROM table t0
SELECT
t0.date AS else,
t0.explain AS join
FROM table AS t0
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
SELECT t0.*
SELECT
t1.x + CAST(1 AS TINYINT) AS x
FROM (
SELECT t1.`x` + 1 AS `x`
FROM t t1
) t0
WHERE t0.`x` > 1
SELECT
*
FROM t AS t0
WHERE
(
(
t0.x + CAST(1 AS TINYINT)
) > CAST(1 AS TINYINT)
)
) AS t1
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
SELECT t0.*
SELECT
CAST(1 AS TINYINT) AS a
FROM (
SELECT 1 AS `a`
FROM t t1
) t0
WHERE t0.`a` > 1
SELECT
*
FROM t AS t0
WHERE
(
CAST(1 AS TINYINT) > CAST(1 AS TINYINT)
)
) AS t1
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,12 @@
first = ibis.table(
name="first", schema={"key1": "string", "key2": "string", "value1": "float64"}
)
second = ibis.table(name="second", schema={"key1": "string", "value2": "float64"})
third = ibis.table(
name="third", schema={"key2": "string", "key3": "string", "value3": "float64"}
)
second = ibis.table(name="second", schema={"key1": "string", "value2": "float64"})
fourth = ibis.table(name="fourth", schema={"key3": "string", "value4": "float64"})
proj = first.inner_join(second, first.key1 == second.key1).select(
[first, second.value2]
)
proj1 = third.inner_join(fourth, third.key3 == fourth.key3).select(
[third, fourth.value4]
)
joinchain = first.inner_join(second, first.key1 == second.key1)
joinchain1 = third.inner_join(fourth, third.key3 == fourth.key3)

result = proj.inner_join(proj1, proj.key2 == proj1.key2).select(
[proj, proj1.value3, proj1.value4]
)
result = joinchain.inner_join(joinchain1, joinchain.key2 == joinchain1.key2)
Original file line number Diff line number Diff line change
@@ -1,16 +1,28 @@
WITH t0 AS (
SELECT t2.*, t3.`value4`
FROM third t2
INNER JOIN fourth t3
ON t2.`key3` = t3.`key3`
),
t1 AS (
SELECT t2.*, t3.`value2`
FROM first t2
INNER JOIN second t3
ON t2.`key1` = t3.`key1`
)
SELECT t1.*, t0.`value3`, t0.`value4`
FROM t1
INNER JOIN t0
ON t1.`key2` = t0.`key2`
SELECT
t6.key1 AS key1,
t6.key2 AS key2,
t6.value1 AS value1,
t6.value2 AS value2,
t7.value3 AS value3,
t7.value4 AS value4
FROM (
SELECT
t0.key1 AS key1,
t0.key2 AS key2,
t0.value1 AS value1,
t1.value2 AS value2
FROM first AS t0
INNER JOIN second AS t1
ON t0.key1 = t1.key1
) AS t6
INNER JOIN (
SELECT
t2.key2 AS key2,
t2.key3 AS key3,
t2.value3 AS value3,
t3.value4 AS value4
FROM third AS t2
INNER JOIN fourth AS t3
ON t2.key3 = t3.key3
) AS t7
ON t6.key2 = t7.key2
Original file line number Diff line number Diff line change
@@ -1,19 +1,6 @@
import ibis


tpch_customer = ibis.table(
name="tpch_customer",
schema={
"c_custkey": "int64",
"c_name": "string",
"c_address": "string",
"c_nationkey": "int16",
"c_phone": "string",
"c_acctbal": "decimal",
"c_mktsegment": "string",
"c_comment": "string",
},
)
tpch_nation = ibis.table(
name="tpch_nation",
schema={
Expand All @@ -27,6 +14,19 @@
name="tpch_region",
schema={"r_regionkey": "int16", "r_name": "string", "r_comment": "string"},
)
tpch_customer = ibis.table(
name="tpch_customer",
schema={
"c_custkey": "int64",
"c_name": "string",
"c_address": "string",
"c_nationkey": "int16",
"c_phone": "string",
"c_acctbal": "decimal",
"c_mktsegment": "string",
"c_comment": "string",
},
)

result = tpch_nation.inner_join(
tpch_region, tpch_nation.n_regionkey == tpch_region.r_regionkey
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,21 @@
SELECT *
FROM tpch_nation t0
INNER JOIN tpch_region t1
ON t0.`n_regionkey` = t1.`r_regionkey`
INNER JOIN tpch_customer t2
ON t0.`n_nationkey` = t2.`c_nationkey`
SELECT
t0.n_nationkey AS n_nationkey,
t0.n_name AS n_name,
t0.n_regionkey AS n_regionkey,
t0.n_comment AS n_comment,
t1.r_regionkey AS r_regionkey,
t1.r_name AS r_name,
t1.r_comment AS r_comment,
t2.c_custkey AS c_custkey,
t2.c_name AS c_name,
t2.c_address AS c_address,
t2.c_nationkey AS c_nationkey,
t2.c_phone AS c_phone,
t2.c_acctbal AS c_acctbal,
t2.c_mktsegment AS c_mktsegment,
t2.c_comment AS c_comment
FROM tpch_nation AS t0
INNER JOIN tpch_region AS t1
ON t0.n_regionkey = t1.r_regionkey
INNER JOIN tpch_customer AS t2
ON t0.n_nationkey = t2.c_nationkey
Original file line number Diff line number Diff line change
@@ -1,10 +1,23 @@
WITH t0 AS (
SELECT t2.`n_nationkey`, t2.`n_name` AS `nation`, t3.`r_name` AS `region`
FROM tpch_nation t2
INNER JOIN tpch_region t3
ON t2.`n_regionkey` = t3.`r_regionkey`
)
SELECT t1.*, t0.*
FROM t0
INNER JOIN tpch_customer t1
ON t0.`n_nationkey` = t1.`c_nationkey`
SELECT
t1.c_custkey AS c_custkey,
t1.c_name AS c_name,
t1.c_address AS c_address,
t1.c_nationkey AS c_nationkey,
t1.c_phone AS c_phone,
t1.c_acctbal AS c_acctbal,
t1.c_mktsegment AS c_mktsegment,
t1.c_comment AS c_comment,
t4.n_nationkey AS n_nationkey,
t4.nation AS nation,
t4.region AS region
FROM (
SELECT
t0.n_nationkey AS n_nationkey,
t0.n_name AS nation,
t2.r_name AS region
FROM tpch_nation AS t0
INNER JOIN tpch_region AS t2
ON t0.n_regionkey = t2.r_regionkey
) AS t4
INNER JOIN tpch_customer AS t1
ON t4.n_nationkey = t1.c_nationkey
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
SELECT
t0.on AS on,
t0.by AS by,
t1.on AS on_right,
t1.by AS by_right,
t1.val AS val
FROM left AS t0
LEFT OUTER JOIN right AS t1
ON t0.by = t1.by
WHERE
t1.on = (
SELECT
MAX(t3.on) AS "Max(on)"
FROM (
SELECT
t1.on AS on,
t1.by AS by,
t1.val AS val
FROM right AS t1
WHERE
t1.by = t0.by AND t1.on <= t0.on
) AS t3
)
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
WITH t0 AS (
SELECT t2.*
FROM star1 t2
SELECT
t2.c AS c,
t2.f AS f,
t2.foo_id AS foo_id,
t2.bar_id AS bar_id
FROM (
SELECT
*
FROM star1 AS t0
LIMIT 100
)
SELECT t0.*
FROM t0
INNER JOIN star2 t1
ON t0.`foo_id` = t1.`foo_id`
) AS t2
INNER JOIN star2 AS t1
ON t2.foo_id = t1.foo_id
Original file line number Diff line number Diff line change
@@ -1,21 +1 @@
SELECT count(1) AS `CountStar()`
FROM (
SELECT t1.`id`, t1.`bool_col`, t1.`tinyint_col`, t1.`smallint_col`,
t1.`int_col`, t1.`bigint_col`, t1.`float_col`, t1.`double_col`,
t1.`date_string_col`, t1.`string_col`, t1.`timestamp_col`,
t1.`year`, t1.`month`, t2.`id` AS `id_right`,
t2.`bool_col` AS `bool_col_right`,
t2.`tinyint_col` AS `tinyint_col_right`,
t2.`smallint_col` AS `smallint_col_right`,
t2.`int_col` AS `int_col_right`,
t2.`bigint_col` AS `bigint_col_right`,
t2.`float_col` AS `float_col_right`,
t2.`double_col` AS `double_col_right`,
t2.`date_string_col` AS `date_string_col_right`,
t2.`string_col` AS `string_col_right`,
t2.`timestamp_col` AS `timestamp_col_right`,
t2.`year` AS `year_right`, t2.`month` AS `month_right`
FROM functional_alltypes t1
INNER JOIN functional_alltypes t2
ON t1.`tinyint_col` < extract(t2.`timestamp_col`, 'minute')
) t0
COUNT(*)
Original file line number Diff line number Diff line change
@@ -1,16 +1,24 @@
WITH t0 AS (
SELECT t2.*
FROM bar t2
WHERE t2.`id` < 3
),
t1 AS (
SELECT t2.*
FROM foo t2
WHERE t2.`id` < 2
)
SELECT t1.`id` AS `left_id`, t1.`desc` AS `left_desc`, t0.`id` AS `right_id`,
t0.`desc` AS `right_desc`
FROM t1
LEFT OUTER JOIN t0
ON (t1.`id` = t0.`id`) AND
(t1.`desc` = t0.`desc`)
SELECT
t2.id AS left_id,
t2.desc AS left_desc,
t3.id AS right_id,
t3.desc AS right_desc
FROM (
SELECT
*
FROM foo AS t0
WHERE
(
t0.id < CAST(2 AS TINYINT)
)
) AS t2
LEFT OUTER JOIN (
SELECT
*
FROM bar AS t1
WHERE
(
t1.id < CAST(3 AS TINYINT)
)
) AS t3
ON t2.id = t3.id AND t2.desc = t3.desc
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,11 @@
name="star1",
schema={"c": "int32", "f": "float64", "foo_id": "string", "bar_id": "string"},
)
star3 = ibis.table(name="star3", schema={"bar_id": "string", "value2": "float64"})
star2 = ibis.table(
name="star2", schema={"foo_id": "string", "value1": "float64", "value3": "float64"}
)
star3 = ibis.table(name="star3", schema={"bar_id": "string", "value2": "float64"})

result = (
star1.left_join(star2, star1.foo_id == star2.foo_id)
.select(
[
star1.c,
star1.f,
star1.foo_id,
star1.bar_id,
star2.foo_id.name("foo_id_right"),
star2.value1,
star2.value3,
]
)
.inner_join(star3, star1.bar_id == star3.bar_id)
.select([star1, star2.value1, star3.value2])
result = star1.left_join(star2, star1.foo_id == star2.foo_id).inner_join(
star3, star1.bar_id == star3.bar_id
)
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
SELECT *, `value1`, t1.`value2`
FROM (
SELECT t2.`c`, t2.`f`, t2.`foo_id`, t2.`bar_id`,
t3.`foo_id` AS `foo_id_right`, t3.`value1`, t3.`value3`
FROM star1 t2
LEFT OUTER JOIN star2 t3
ON t2.`foo_id` = t3.`foo_id`
) t0
INNER JOIN star3 t1
ON `bar_id` = t1.`bar_id`
SELECT
t0.c AS c,
t0.f AS f,
t0.foo_id AS foo_id,
t0.bar_id AS bar_id,
t1.value1 AS value1,
t2.value2 AS value2
FROM star1 AS t0
LEFT OUTER JOIN star2 AS t1
ON t0.foo_id = t1.foo_id
INNER JOIN star3 AS t2
ON t0.bar_id = t2.bar_id
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
SELECT t0.*
SELECT
*
FROM (
SELECT t1.*
FROM functional_alltypes t1
SELECT
*
FROM functional_alltypes AS t0
LIMIT 20
) t0
LIMIT 10
) AS t1
LIMIT 10
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
"month": "int32",
},
)
agg = functional_alltypes.group_by(functional_alltypes.string_col).aggregate(
functional_alltypes.count().name("nrows")
agg = functional_alltypes.aggregate(
[functional_alltypes.count().name("nrows")], by=[functional_alltypes.string_col]
)
limit = agg.limit(5)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
SELECT t0.*
SELECT
*
FROM (
SELECT t1.`string_col`, count(1) AS `nrows`
FROM functional_alltypes t1
GROUP BY 1
SELECT
t0.string_col AS string_col,
COUNT(*) AS nrows
FROM functional_alltypes AS t0
GROUP BY
1
LIMIT 5
) t0
ORDER BY t0.`string_col` ASC
) AS t2
ORDER BY
t2.string_col ASC
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
SELECT t0.*
FROM foo t0
WHERE t0.`y` > (
SELECT max(t1.`x`) AS `Max(x)`
FROM bar t1
)
SELECT
*
FROM foo AS t0
WHERE
(
t0.y > (
SELECT
MAX(t1.x) AS "Max(x)"
FROM bar AS t1
)
)
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
schema={"c": "int32", "f": "float64", "foo_id": "string", "bar_id": "string"},
)

result = star1.group_by(star1.foo_id).aggregate(star1.f.sum().name("total"))
result = star1.aggregate([star1.f.sum().name("total")], by=[star1.foo_id])
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
SELECT t0.`foo_id`, sum(t0.`f`) AS `total`
FROM star1 t0
GROUP BY 1
SELECT
t0.foo_id AS foo_id,
SUM(t0.f) AS total
FROM star1 AS t0
GROUP BY
1
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,4 @@
schema={"c": "int32", "f": "float64", "foo_id": "string", "bar_id": "string"},
)

result = star1.group_by([star1.foo_id, star1.bar_id]).aggregate(
star1.f.sum().name("total")
)
result = star1.aggregate([star1.f.sum().name("total")], by=[star1.foo_id, star1.bar_id])
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
SELECT t0.`foo_id`, t0.`bar_id`, sum(t0.`f`) AS `total`
FROM star1 t0
GROUP BY 1, 2
SELECT
t0.foo_id AS foo_id,
t0.bar_id AS bar_id,
SUM(t0.f) AS total
FROM star1 AS t0
GROUP BY
1,
2
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
SELECT count(1) AS `CountStar(star1)`
FROM star1 t0
COUNT(*)
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
SELECT t0.*
FROM star1 t0
WHERE t0.`f` > 0
SELECT
*
FROM star1 AS t0
WHERE
(
t0.f > CAST(0 AS TINYINT)
)
LIMIT 10
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
SELECT t0.*
FROM star1 t0
SELECT
*
FROM star1 AS t0
LIMIT 10
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
SELECT t0.*
SELECT
*
FROM (
SELECT t1.*
FROM star1 t1
SELECT
*
FROM star1 AS t0
LIMIT 10
) t0
WHERE t0.`f` > 0
) AS t1
WHERE
(
t1.f > CAST(0 AS TINYINT)
)
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
SELECT t0.*
FROM star1 t0
LIMIT 10 OFFSET 5
SELECT
*
FROM star1 AS t0
LIMIT 10
OFFSET 5
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
SELECT t0.*
FROM star1 t0
SELECT
*
FROM star1 AS star1_ref
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
SELECT t0.*
FROM star1 t0
ORDER BY t0.`f` ASC
SELECT
*
FROM star1 AS t0
ORDER BY
t0.f ASC
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
SELECT t0.*
FROM alltypes t0
SELECT
*
FROM alltypes
Original file line number Diff line number Diff line change
@@ -1,10 +1,30 @@
WITH t0 AS (
SELECT t2.*, t3.*
FROM tpch_region t2
INNER JOIN tpch_nation t3
ON t2.`r_regionkey` = t3.`n_regionkey`
)
SELECT t0.`r_name`, t1.`n_name`
FROM t0
INNER JOIN t0 t1
ON t0.`r_regionkey` = t1.`r_regionkey`
SELECT
t3.r_name AS r_name,
t4.n_name AS n_name
FROM (
SELECT
t0.r_regionkey AS r_regionkey,
t0.r_name AS r_name,
t0.r_comment AS r_comment,
t1.n_nationkey AS n_nationkey,
t1.n_name AS n_name,
t1.n_regionkey AS n_regionkey,
t1.n_comment AS n_comment
FROM tpch_region AS t0
INNER JOIN tpch_nation AS t1
ON t0.r_regionkey = t1.n_regionkey
) AS t3
INNER JOIN (
SELECT
t0.r_regionkey AS r_regionkey,
t0.r_name AS r_name,
t0.r_comment AS r_comment,
t1.n_nationkey AS n_nationkey,
t1.n_name AS n_name,
t1.n_regionkey AS n_regionkey,
t1.n_comment AS n_comment
FROM tpch_region AS t0
INNER JOIN tpch_nation AS t1
ON t0.r_regionkey = t1.n_regionkey
) AS t4
ON t3.r_regionkey = t4.r_regionkey
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@
name="star2", schema={"foo_id": "string", "value1": "float64", "value3": "float64"}
)

result = star1.semi_join(star2, star1.foo_id == star2.foo_id).select(star1)
result = star1.semi_join(star2, star1.foo_id == star2.foo_id)
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
SELECT t0.*
FROM star1 t0
LEFT SEMI JOIN star2 t1
ON t0.`foo_id` = t1.`foo_id`
SELECT
t0.c AS c,
t0.f AS f,
t0.foo_id AS foo_id,
t0.bar_id AS bar_id
FROM star1 AS t0
SEMI JOIN star2 AS t1
ON t0.foo_id = t1.foo_id
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@

result = star1.inner_join(
star2, [star1.foo_id == star2.foo_id, star1.bar_id == star2.foo_id]
).select(star1)
)
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
SELECT t0.*
FROM star1 t0
INNER JOIN star2 t1
ON t0.`foo_id` = t1.`foo_id`
SELECT
t0.c AS c,
t0.f AS f,
t0.foo_id AS foo_id,
t0.bar_id AS bar_id
FROM star1 AS t0
INNER JOIN star2 AS t1
ON t0.foo_id = t1.foo_id
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
SELECT t0.*
FROM star1 t0
INNER JOIN star2 t1
ON (t0.`foo_id` = t1.`foo_id`) AND
(t0.`bar_id` = t1.`foo_id`)
SELECT
t0.c AS c,
t0.f AS f,
t0.foo_id AS foo_id,
t0.bar_id AS bar_id
FROM star1 AS t0
INNER JOIN star2 AS t1
ON t0.foo_id = t1.foo_id AND t0.bar_id = t1.foo_id
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
SELECT t0.*
FROM star1 t0
LEFT OUTER JOIN star2 t1
ON t0.`foo_id` = t1.`foo_id`
SELECT
t0.c AS c,
t0.f AS f,
t0.foo_id AS foo_id,
t0.bar_id AS bar_id
FROM star1 AS t0
LEFT OUTER JOIN star2 AS t1
ON t0.foo_id = t1.foo_id
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
SELECT t0.*
FROM star1 t0
FULL OUTER JOIN star2 t1
ON t0.`foo_id` = t1.`foo_id`
SELECT
t0.c AS c,
t0.f AS f,
t0.foo_id AS foo_id,
t0.bar_id AS bar_id
FROM star1 AS t0
FULL OUTER JOIN star2 AS t1
ON t0.foo_id = t1.foo_id
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
WITH t0 AS (
SELECT t2.*
FROM t t2
ORDER BY t2.`a` ASC
)
SELECT t1.`b`, count(1) AS `b_count`
SELECT
t2.b AS b,
COUNT(*) AS b_count
FROM (
SELECT t0.`b`
FROM t0
) t1
GROUP BY 1
SELECT
t1.b AS b
FROM (
SELECT
*
FROM t AS t0
ORDER BY
t0.a ASC
) AS t1
) AS t2
GROUP BY
1
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
WITH t0 AS (
SELECT t2.*
FROM t t2
ORDER BY t2.`b` ASC
)
SELECT t1.`b`, count(1) AS `b_count`
SELECT
t2.b AS b,
COUNT(*) AS b_count
FROM (
SELECT t0.`b`
FROM t0
) t1
GROUP BY 1
SELECT
t1.b AS b
FROM (
SELECT
*
FROM t AS t0
ORDER BY
t0.b ASC
) AS t1
) AS t2
GROUP BY
1
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
SELECT t0.`foo_id` like concat('foo', '%') AS `tmp`
FROM star1 t0
STARTS_WITH(t0.foo_id, 'foo') AS tmp
Original file line number Diff line number Diff line change
@@ -1,19 +1,60 @@
WITH t0 AS (
SELECT t3.*, t1.`r_name` AS `region`, t4.`o_totalprice` AS `amount`,
CAST(t4.`o_orderdate` AS timestamp) AS `odate`
FROM tpch_region t1
INNER JOIN tpch_nation t2
ON t1.`r_regionkey` = t2.`n_regionkey`
INNER JOIN tpch_customer t3
ON t3.`c_nationkey` = t2.`n_nationkey`
INNER JOIN tpch_orders t4
ON t4.`o_custkey` = t3.`c_custkey`
)
SELECT t0.*
FROM t0
WHERE t0.`amount` > (
SELECT avg(t1.`amount`) AS `Mean(amount)`
FROM t0 t1
WHERE t1.`region` = t0.`region`
)
SELECT
*
FROM (
SELECT
t2.c_custkey AS c_custkey,
t2.c_name AS c_name,
t2.c_address AS c_address,
t2.c_nationkey AS c_nationkey,
t2.c_phone AS c_phone,
t2.c_acctbal AS c_acctbal,
t2.c_mktsegment AS c_mktsegment,
t2.c_comment AS c_comment,
t0.r_name AS region,
t3.o_totalprice AS amount,
CAST(t3.o_orderdate AS TIMESTAMP) AS odate
FROM tpch_region AS t0
INNER JOIN tpch_nation AS t1
ON t0.r_regionkey = t1.n_regionkey
INNER JOIN tpch_customer AS t2
ON t2.c_nationkey = t1.n_nationkey
INNER JOIN tpch_orders AS t3
ON t3.o_custkey = t2.c_custkey
) AS t7
WHERE
(
t7.amount > (
SELECT
AVG(t9.amount) AS "Mean(amount)"
FROM (
SELECT
*
FROM (
SELECT
t2.c_custkey AS c_custkey,
t2.c_name AS c_name,
t2.c_address AS c_address,
t2.c_nationkey AS c_nationkey,
t2.c_phone AS c_phone,
t2.c_acctbal AS c_acctbal,
t2.c_mktsegment AS c_mktsegment,
t2.c_comment AS c_comment,
t0.r_name AS region,
t3.o_totalprice AS amount,
CAST(t3.o_orderdate AS TIMESTAMP) AS odate
FROM tpch_region AS t0
INNER JOIN tpch_nation AS t1
ON t0.r_regionkey = t1.n_regionkey
INNER JOIN tpch_customer AS t2
ON t2.c_nationkey = t1.n_nationkey
INNER JOIN tpch_orders AS t3
ON t3.o_custkey = t2.c_custkey
) AS t8
WHERE
(
t8.region = t7.region
)
) AS t9
)
)
LIMIT 10
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
SELECT t0.*
FROM star1 t0
WHERE t0.`f` > (
SELECT avg(t0.`f`) AS `Mean(f)`
FROM star1 t0
)
SELECT
*
FROM star1 AS t0
WHERE
(
t0.f > (
SELECT
AVG(t0.f) AS "Mean(f)"
FROM star1 AS t0
)
)
Original file line number Diff line number Diff line change
@@ -1,7 +1,19 @@
SELECT t0.*
FROM star1 t0
WHERE t0.`f` > (
SELECT avg(t0.`f`) AS `Mean(f)`
FROM star1 t0
WHERE t0.`foo_id` = 'foo'
)
SELECT
*
FROM star1 AS t0
WHERE
(
t0.f > (
SELECT
AVG(t1.f) AS "Mean(f)"
FROM (
SELECT
*
FROM star1 AS t0
WHERE
(
t0.foo_id = 'foo'
)
) AS t1
)
)
Original file line number Diff line number Diff line change
@@ -1,32 +1,51 @@
WITH t0 AS (
SELECT t3.`a`, t3.`g`, sum(t3.`f`) AS `metric`
FROM alltypes t3
GROUP BY 1, 2
),
t1 AS (
SELECT t0.*
FROM t0
INNER JOIN t0 t3
ON t0.`g` = t3.`g`
)
SELECT t2.`a`, t2.`g`, t2.`metric`
SELECT
t1.a AS a,
t1.g AS g,
t1.metric AS metric
FROM (
WITH t0 AS (
SELECT t3.`a`, t3.`g`, sum(t3.`f`) AS `metric`
FROM alltypes t3
GROUP BY 1, 2
),
t1 AS (
SELECT t0.*
FROM t0
INNER JOIN t0 t3
ON t0.`g` = t3.`g`
)
SELECT *
FROM t1
UNION ALL
SELECT t0.*
FROM t0
INNER JOIN t0 t3
ON t0.`g` = t3.`g`
) t2
SELECT
t0.a AS a,
t0.g AS g,
SUM(t0.f) AS metric
FROM alltypes AS t0
GROUP BY
1,
2
) AS t1
INNER JOIN (
SELECT
t0.a AS a,
t0.g AS g,
SUM(t0.f) AS metric
FROM alltypes AS t0
GROUP BY
1,
2
) AS t2
ON t1.g = t2.g
UNION ALL
SELECT
t1.a AS a,
t1.g AS g,
t1.metric AS metric
FROM (
SELECT
t0.a AS a,
t0.g AS g,
SUM(t0.f) AS metric
FROM alltypes AS t0
GROUP BY
1,
2
) AS t1
INNER JOIN (
SELECT
t0.a AS a,
t0.g AS g,
SUM(t0.f) AS metric
FROM alltypes AS t0
GROUP BY
1,
2
) AS t2
ON t1.g = t2.g
Original file line number Diff line number Diff line change
@@ -1,15 +1,41 @@
WITH t0 AS (
SELECT t2.`g`, t2.`a`, t2.`b`, sum(t2.`f`) AS `total`
FROM alltypes t2
GROUP BY 1, 2, 3
)
SELECT t0.`g`, max(t0.`total` - `total`) AS `metric`
SELECT
t4.g AS g,
MAX(t4.total - t4.total_right) AS metric
FROM (
SELECT t0.`g`, t0.`a`, t0.`b`, t0.`total`, t2.`g` AS `g_right`,
t2.`a` AS `a_right`, t2.`b` AS `b_right`,
t2.`total` AS `total_right`
FROM t0
INNER JOIN t0 t2
ON t0.`a` = t2.`b`
) t1
GROUP BY 1
SELECT
t1.g AS g,
t1.a AS a,
t1.b AS b,
t1.total AS total,
t2.g AS g_right,
t2.a AS a_right,
t2.b AS b_right,
t2.total AS total_right
FROM (
SELECT
t0.g AS g,
t0.a AS a,
t0.b AS b,
SUM(t0.f) AS total
FROM alltypes AS t0
GROUP BY
1,
2,
3
) AS t1
INNER JOIN (
SELECT
t0.g AS g,
t0.a AS a,
t0.b AS b,
SUM(t0.f) AS total
FROM alltypes AS t0
GROUP BY
1,
2,
3
) AS t2
ON t1.a = t2.b
) AS t4
GROUP BY
1
Original file line number Diff line number Diff line change
@@ -1,22 +1,40 @@
WITH t0 AS (
SELECT t3.`dest`, avg(t3.`arrdelay`) AS `Mean(arrdelay)`
FROM airlines t3
WHERE t3.`dest` IN ('ORD', 'JFK', 'SFO')
GROUP BY 1
),
t1 AS (
SELECT t0.*
FROM t0
ORDER BY t0.`Mean(arrdelay)` DESC
LIMIT 10
),
t2 AS (
SELECT t3.*
FROM airlines t3
WHERE t3.`dest` IN ('ORD', 'JFK', 'SFO')
)
SELECT `origin`, count(1) AS `CountStar()`
FROM t2
LEFT SEMI JOIN t1
ON t2.`dest` = t1.`dest`
GROUP BY 1
SELECT
t6.origin AS origin,
COUNT(*) AS "CountStar()"
FROM (
SELECT
t1.dest AS dest,
t1.origin AS origin,
t1.arrdelay AS arrdelay
FROM (
SELECT
*
FROM airlines AS t0
WHERE
t0.dest IN ('ORD', 'JFK', 'SFO')
) AS t1
SEMI JOIN (
SELECT
*
FROM (
SELECT
t1.dest AS dest,
AVG(t1.arrdelay) AS "Mean(arrdelay)"
FROM (
SELECT
*
FROM airlines AS t0
WHERE
t0.dest IN ('ORD', 'JFK', 'SFO')
) AS t1
GROUP BY
1
) AS t2
ORDER BY
t2."Mean(arrdelay)" DESC
LIMIT 10
) AS t4
ON t1.dest = t4.dest
) AS t6
GROUP BY
1
Original file line number Diff line number Diff line change
@@ -1,15 +1,23 @@
WITH t0 AS (
SELECT t2.`city`, avg(t2.`v2`) AS `Mean(v2)`
FROM tbl t2
GROUP BY 1
),
t1 AS (
SELECT t0.*
FROM t0
ORDER BY t0.`Mean(v2)` DESC
SELECT
t0.foo AS foo,
t0.bar AS bar,
t0.city AS city,
t0.v1 AS v1,
t0.v2 AS v2
FROM tbl AS t0
SEMI JOIN (
SELECT
*
FROM (
SELECT
t0.city AS city,
AVG(t0.v2) AS "Mean(v2)"
FROM tbl AS t0
GROUP BY
1
) AS t1
ORDER BY
t1."Mean(v2)" DESC
LIMIT 10
)
SELECT *
FROM tbl t2
LEFT SEMI JOIN t1
ON t2.`city` = t1.`city`
) AS t3
ON t0.city = t3.city
Original file line number Diff line number Diff line change
@@ -1,15 +1,23 @@
WITH t0 AS (
SELECT t2.`city`, count(t2.`city`) AS `Count(city)`
FROM tbl t2
GROUP BY 1
),
t1 AS (
SELECT t0.*
FROM t0
ORDER BY t0.`Count(city)` DESC
SELECT
t0.foo AS foo,
t0.bar AS bar,
t0.city AS city,
t0.v1 AS v1,
t0.v2 AS v2
FROM tbl AS t0
SEMI JOIN (
SELECT
*
FROM (
SELECT
t0.city AS city,
COUNT(t0.city) AS "Count(city)"
FROM tbl AS t0
GROUP BY
1
) AS t1
ORDER BY
t1."Count(city)" DESC
LIMIT 10
)
SELECT *
FROM tbl t2
LEFT SEMI JOIN t1
ON t2.`city` = t1.`city`
) AS t3
ON t0.city = t3.city
Original file line number Diff line number Diff line change
@@ -1,23 +1,62 @@
WITH t0 AS (
SELECT t3.*, t4.`n_name`, t5.`r_name`
FROM tpch_customer t3
INNER JOIN tpch_nation t4
ON t3.`c_nationkey` = t4.`n_nationkey`
INNER JOIN tpch_region t5
ON t4.`n_regionkey` = t5.`r_regionkey`
),
t1 AS (
SELECT t0.`n_name`, sum(t0.`c_acctbal`) AS `Sum(c_acctbal)`
FROM t0
GROUP BY 1
),
t2 AS (
SELECT t1.*
FROM t1
ORDER BY t1.`Sum(c_acctbal)` DESC
SELECT
t5.c_custkey AS c_custkey,
t5.c_name AS c_name,
t5.c_address AS c_address,
t5.c_nationkey AS c_nationkey,
t5.c_phone AS c_phone,
t5.c_acctbal AS c_acctbal,
t5.c_mktsegment AS c_mktsegment,
t5.c_comment AS c_comment,
t5.n_name AS n_name,
t5.r_name AS r_name
FROM (
SELECT
t0.c_custkey AS c_custkey,
t0.c_name AS c_name,
t0.c_address AS c_address,
t0.c_nationkey AS c_nationkey,
t0.c_phone AS c_phone,
t0.c_acctbal AS c_acctbal,
t0.c_mktsegment AS c_mktsegment,
t0.c_comment AS c_comment,
t1.n_name AS n_name,
t2.r_name AS r_name
FROM tpch_customer AS t0
INNER JOIN tpch_nation AS t1
ON t0.c_nationkey = t1.n_nationkey
INNER JOIN tpch_region AS t2
ON t1.n_regionkey = t2.r_regionkey
) AS t5
SEMI JOIN (
SELECT
*
FROM (
SELECT
t5.n_name AS n_name,
SUM(t5.c_acctbal) AS "Sum(c_acctbal)"
FROM (
SELECT
t0.c_custkey AS c_custkey,
t0.c_name AS c_name,
t0.c_address AS c_address,
t0.c_nationkey AS c_nationkey,
t0.c_phone AS c_phone,
t0.c_acctbal AS c_acctbal,
t0.c_mktsegment AS c_mktsegment,
t0.c_comment AS c_comment,
t1.n_name AS n_name,
t2.r_name AS r_name
FROM tpch_customer AS t0
INNER JOIN tpch_nation AS t1
ON t0.c_nationkey = t1.n_nationkey
INNER JOIN tpch_region AS t2
ON t1.n_regionkey = t2.r_regionkey
) AS t5
GROUP BY
1
) AS t6
ORDER BY
t6."Sum(c_acctbal)" DESC
LIMIT 10
)
SELECT *
FROM t0
LEFT SEMI JOIN t2
ON t0.`n_name` = t2.`n_name`
) AS t8
ON t5.n_name = t8.n_name
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
SELECT t0.*
SELECT
*
FROM (
SELECT t1.`dest`, avg(t1.`arrdelay`) AS `Mean(arrdelay)`
FROM airlines t1
GROUP BY 1
) t0
ORDER BY t0.`Mean(arrdelay)` DESC
SELECT
t0.dest AS dest,
AVG(t0.arrdelay) AS "Mean(arrdelay)"
FROM airlines AS t0
GROUP BY
1
) AS t1
ORDER BY
t1."Mean(arrdelay)" DESC
LIMIT 10
Original file line number Diff line number Diff line change
@@ -1,22 +1,53 @@
WITH t0 AS (
SELECT t3.`r_name` AS `region`, t4.`n_name` AS `nation`,
t6.`o_totalprice` AS `amount`,
CAST(t6.`o_orderdate` AS timestamp) AS `odate`
FROM tpch_region t3
INNER JOIN tpch_nation t4
ON t3.`r_regionkey` = t4.`n_regionkey`
INNER JOIN tpch_customer t5
ON t5.`c_nationkey` = t4.`n_nationkey`
INNER JOIN tpch_orders t6
ON t6.`o_custkey` = t5.`c_custkey`
),
t1 AS (
SELECT t0.`region`, extract(t0.`odate`, 'year') AS `year`,
CAST(sum(t0.`amount`) AS double) AS `total`
FROM t0
GROUP BY 1, 2
)
SELECT t1.`region`, t1.`year`, t1.`total` - t2.`total` AS `yoy_change`
FROM t1
INNER JOIN t1 t2
ON t1.`year` = (t2.`year` - 1)
SELECT
t8.region AS region,
t8.year AS year,
t8.total - t9.total AS yoy_change
FROM (
SELECT
t7.region AS region,
EXTRACT('year' FROM t7.odate) AS year,
CAST(SUM(t7.amount) AS DOUBLE) AS total
FROM (
SELECT
t0.r_name AS region,
t1.n_name AS nation,
t3.o_totalprice AS amount,
CAST(t3.o_orderdate AS TIMESTAMP) AS odate
FROM tpch_region AS t0
INNER JOIN tpch_nation AS t1
ON t0.r_regionkey = t1.n_regionkey
INNER JOIN tpch_customer AS t2
ON t2.c_nationkey = t1.n_nationkey
INNER JOIN tpch_orders AS t3
ON t3.o_custkey = t2.c_custkey
) AS t7
GROUP BY
1,
2
) AS t8
INNER JOIN (
SELECT
t7.region AS region,
EXTRACT('year' FROM t7.odate) AS year,
CAST(SUM(t7.amount) AS DOUBLE) AS total
FROM (
SELECT
t0.r_name AS region,
t1.n_name AS nation,
t3.o_totalprice AS amount,
CAST(t3.o_orderdate AS TIMESTAMP) AS odate
FROM tpch_region AS t0
INNER JOIN tpch_nation AS t1
ON t0.r_regionkey = t1.n_regionkey
INNER JOIN tpch_customer AS t2
ON t2.c_nationkey = t1.n_nationkey
INNER JOIN tpch_orders AS t3
ON t3.o_custkey = t2.c_custkey
) AS t7
GROUP BY
1,
2
) AS t9
ON t8.year = (
t9.year - CAST(1 AS TINYINT)
)
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@
)

result = functional_alltypes.filter(
[
functional_alltypes.timestamp_col
< (ibis.timestamp("2010-01-01 00:00:00") + ibis.interval(3)),
functional_alltypes.timestamp_col < (ibis.now() + ibis.interval(10)),
]
functional_alltypes.timestamp_col
< (ibis.timestamp("2010-01-01 00:00:00") + ibis.interval(3)),
functional_alltypes.timestamp_col < (ibis.now() + ibis.interval(10)),
).count()
Original file line number Diff line number Diff line change
@@ -1,4 +1 @@
SELECT count(1) AS `CountStar()`
FROM functional_alltypes t0
WHERE (t0.`timestamp_col` < date_add(cast('2010-01-01T00:00:00' as timestamp), INTERVAL 3 MONTH)) AND
(t0.`timestamp_col` < date_add(cast(now() as timestamp), INTERVAL 10 DAY))
COUNT(*)
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
star2 = ibis.table(
name="star2", schema={"foo_id": "string", "value1": "float64", "value3": "float64"}
)
proj = star1.inner_join(star2, star1.foo_id == star2.foo_id).select(
[star1, (star1.f - star2.value1).name("diff")]
)
joinchain = star1.inner_join(star2, star1.foo_id == star2.foo_id)

result = proj.filter(proj.diff > 1)
result = joinchain.filter(joinchain.diff > 1)
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
SELECT t0.*
SELECT
*
FROM (
SELECT t1.*, t1.`f` - t2.`value1` AS `diff`
FROM star1 t1
INNER JOIN star2 t2
ON t1.`foo_id` = t2.`foo_id`
) t0
WHERE t0.`diff` > 1
SELECT
t0.c AS c,
t0.f AS f,
t0.foo_id AS foo_id,
t0.bar_id AS bar_id,
t0.f - t1.value1 AS diff
FROM star1 AS t0
INNER JOIN star2 AS t1
ON t0.foo_id = t1.foo_id
) AS t3
WHERE
(
t3.diff > CAST(1 AS TINYINT)
)
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@
)
lit = ibis.literal(0)

result = alltypes.filter([alltypes.a > lit, alltypes.f.between(lit, ibis.literal(1))])
result = alltypes.filter(alltypes.a > lit, alltypes.f.between(lit, ibis.literal(1)))
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
SELECT t0.*
FROM alltypes t0
WHERE (t0.`a` > 0) AND
(t0.`f` BETWEEN 0 AND 1)
SELECT
*
FROM alltypes AS t0
WHERE
(
t0.a > CAST(0 AS TINYINT)
)
AND t0.f BETWEEN CAST(0 AS TINYINT) AND CAST(1 AS TINYINT)
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,6 @@
star2 = ibis.table(
name="star2", schema={"foo_id": "string", "value1": "float64", "value3": "float64"}
)
joinchain = star1.inner_join(star2, star1.foo_id == star2.foo_id)

result = (
star1.inner_join(star2, star1.foo_id == star2.foo_id)
.select([star1, star2.value1, star2.value3])
.filter([star1.f > 0, star2.value3 < 1000])
)
result = joinchain.filter(joinchain.f > 0, joinchain.value3 < 1000)
Original file line number Diff line number Diff line change
@@ -1,6 +1,20 @@
SELECT t0.*, t1.`value1`, t1.`value3`
FROM star1 t0
INNER JOIN star2 t1
ON t0.`foo_id` = t1.`foo_id`
WHERE (t0.`f` > 0) AND
(t1.`value3` < 1000)
SELECT
*
FROM (
SELECT
t0.c AS c,
t0.f AS f,
t0.foo_id AS foo_id,
t0.bar_id AS bar_id,
t1.value1 AS value1,
t1.value3 AS value3
FROM star1 AS t0
INNER JOIN star2 AS t1
ON t0.foo_id = t1.foo_id
) AS t3
WHERE
(
t3.f > CAST(0 AS TINYINT)
) AND (
t3.value3 < CAST(1000 AS SMALLINT)
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
SELECT
t2.foo_id AS foo_id,
t2.total AS total
FROM (
SELECT
*
FROM (
SELECT
t0.foo_id AS foo_id,
SUM(t0.f) AS total,
COUNT(*) AS "CountStar()"
FROM star1 AS t0
GROUP BY
1
) AS t1
WHERE
(
t1."CountStar()" > CAST(100 AS TINYINT)
)
) AS t2
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
SELECT
*
FROM (
SELECT
t0.foo_id AS foo_id,
SUM(t0.f) AS total
FROM star1 AS t0
GROUP BY
1
) AS t1
WHERE
(
t1.total > CAST(10 AS TINYINT)
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
SELECT
t0.foo_id AS foo_id,
SUM(t0.f) AS total
FROM star1 AS t0
GROUP BY
1
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
SELECT
t0.foo_id AS foo_id,
t0.bar_id AS bar_id,
SUM(t0.f) AS total
FROM star1 AS t0
GROUP BY
1,
2
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
t0.double_col BETWEEN CAST(5 AS TINYINT) AND CAST(10 AS TINYINT) AS tmp
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
(
t0.double_col > CAST(0 AS TINYINT)
) AND (
t0.double_col < CAST(5 AS TINYINT)
) AS tmp
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
(
t0.double_col < CAST(0 AS TINYINT)
) OR (
t0.double_col > CAST(5 AS TINYINT)
) AS tmp
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
COALESCE(
CASE WHEN t0.double_col > CAST(30 AS TINYINT) THEN t0.double_col ELSE NULL END,
NULL,
t0.float_col
) AS tmp
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
t0.double_col = CAST(5 AS TINYINT) AS tmp
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
t0.double_col >= CAST(5 AS TINYINT) AS tmp
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
t0.double_col > CAST(5 AS TINYINT) AS tmp
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
t0.double_col <= CAST(5 AS TINYINT) AS tmp
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
t0.double_col < CAST(5 AS TINYINT) AS tmp
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
t0.double_col <> CAST(5 AS TINYINT) AS tmp
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
SELECT
t2.g AS g,
t2.metric AS metric
FROM (
SELECT
t0.g AS g,
SUM(t0.f) AS metric
FROM alltypes AS t0
GROUP BY
1
) AS t2
INNER JOIN (
SELECT
t1.g AS g,
SUM(t1.f) AS metric
FROM alltypes AS t1
GROUP BY
1
) AS t4
ON t2.g = t4.g
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
COUNT(DISTINCT t0.int_col) AS nunique
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
SELECT
t0.string_col AS string_col,
COUNT(DISTINCT t0.int_col) AS nunique
FROM functional_alltypes AS t0
GROUP BY
1
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
SELECT DISTINCT
*
FROM (
SELECT
t0.string_col AS string_col,
t0.int_col AS int_col
FROM functional_alltypes AS t0
) AS t1
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
SELECT DISTINCT
*
FROM (
SELECT
t0.string_col AS string_col
FROM functional_alltypes AS t0
) AS t1
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
SELECT DISTINCT
*
FROM functional_alltypes AS t0
19 changes: 19 additions & 0 deletions ibis/backends/tests/sql/snapshots/test_sql/test_exists/e1.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
SELECT
*
FROM foo_t AS t0
WHERE
EXISTS(
(
SELECT
CAST(1 AS TINYINT) AS "1"
FROM (
SELECT
*
FROM bar_t AS t1
WHERE
(
t0.key1 = t1.key1
)
) AS t2
)
)
23 changes: 23 additions & 0 deletions ibis/backends/tests/sql/snapshots/test_sql/test_exists/e2.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
SELECT
*
FROM foo_t AS t0
WHERE
EXISTS(
(
SELECT
CAST(1 AS TINYINT) AS "1"
FROM (
SELECT
*
FROM bar_t AS t1
WHERE
(
(
t0.key1 = t1.key1
) AND (
t1.key2 = 'foo'
)
)
) AS t2
)
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
SELECT
*
FROM (
SELECT
t0.int_col AS int_col,
SUM(t0.bigint_col) AS bigint_col
FROM t AS t0
GROUP BY
1
) AS t1
WHERE
(
t1.bigint_col = CAST(60 AS TINYINT)
)
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
t0.double_col IS NULL AS tmp
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
t0.double_col IS NOT NULL AS tmp
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
SELECT
t0.n_nationkey AS n_nationkey,
t0.n_name AS n_name,
t0.n_regionkey AS n_regionkey,
t0.n_comment AS n_comment,
t1.r_regionkey AS r_regionkey,
t1.r_name AS r_name,
t1.r_comment AS r_comment,
t2.c_custkey AS c_custkey,
t2.c_name AS c_name,
t2.c_address AS c_address,
t2.c_nationkey AS c_nationkey,
t2.c_phone AS c_phone,
t2.c_acctbal AS c_acctbal,
t2.c_mktsegment AS c_mktsegment,
t2.c_comment AS c_comment
FROM tpch_nation AS t0
INNER JOIN tpch_region AS t1
ON t0.n_regionkey = t1.r_regionkey
INNER JOIN tpch_customer AS t2
ON t0.n_nationkey = t2.c_nationkey
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
SELECT
*
FROM star1 AS t0
LIMIT 10
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
SELECT
*
FROM star1 AS t0
LIMIT 10
OFFSET 5
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
SELECT
*
FROM star1 AS t0
WHERE
(
t0.f > CAST(0 AS TINYINT)
)
LIMIT 10
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
SELECT
*
FROM (
SELECT
*
FROM star1 AS t0
LIMIT 10
) AS t1
WHERE
(
t1.f > CAST(0 AS TINYINT)
)
Loading