Skip to content

Commit

Permalink
[multistage][test] add table expression tests (#9817)
Browse files Browse the repository at this point in the history

Co-authored-by: Rong Rong <[email protected]>
  • Loading branch information
walterddr and Rong Rong authored Nov 28, 2022
1 parent 6ef4dfc commit 375b7d0
Show file tree
Hide file tree
Showing 2 changed files with 111 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ public class ResourceBasedQueriesTest extends QueryRunnerTestBase {
"SelectExpressions.json",
"ValueExpressions.json",
"NumericTypes.json",
"TableExpressions.json",
"CharacterTypes.json",
"BinaryTypes.json",
"TimeTypes.json",
Expand Down
110 changes: 110 additions & 0 deletions pinot-query-runtime/src/test/resources/queries/TableExpressions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
{
"where_clause_tests": {
"psql": "7.2.2",
"tables": {
"tbl": {
"schema": [
{"name": "strCol", "type": "STRING"},
{"name": "intCol", "type": "INT"}
],
"inputs": [
["foo", 1],
["bar", 2],
["alice", 42],
["bob", 196883]
]
}
},
"queries": [
{ "sql": "SELECT * FROM {tbl} WHERE intCol > 5" },
{ "sql": "SELECT * FROM {tbl} WHERE strCol IN ('foo', 'bar')" },
{ "sql": "SELECT * FROM {tbl} WHERE intCol IN (196883, 42)" },
{ "sql": "SELECT * FROM {tbl} WHERE intCol NOT IN (196883, 42) AND strCol IN ('alice')" },
{ "sql": "SELECT * FROM {tbl} WHERE strCol IN (SELECT strCol FROM {tbl} WHERE intCol > 100)" },
{ "sql": "SELECT * FROM {tbl} WHERE intCol < (SELECT SUM(intCol) FROM {tbl} AS b WHERE strCol BETWEEN 'bar' AND 'foo')" },
{ "sql": "SELECT * FROM {tbl} WHERE intCol BETWEEN 0 AND 100 AND strCol BETWEEN 'bar' AND 'foo'" },
{ "sql": "SELECT * FROM {tbl} WHERE intCol IN (SELECT a.intCol FROM {tbl} AS a JOIN {tbl} AS b ON a.strCol = b.strCol WHERE MOD(a.intCol, 2) = MOD(b.intCol, 2))" },
{
"ignored": true,
"comments": "Relation Decorrelator not supported",
"sql": "SELECT * FROM {tbl} AS a WHERE a.strCol IN (SELECT b.strCol FROM {tbl} AS b WHERE b.intCol = a.intCol + 1)"
},
{
"ignored": true,
"comments": "BETWEEN with a non-deterministic single-value result from sub-query is not supported",
"sql": "SELECT * FROM {tbl} AS a WHERE a.intCol BETWEEN (SELECT b.intCol FROM {tbl} AS b WHERE b.intCol = a.intCol + 1) AND 100"
},
{
"ignored": true,
"comments": "Relation Decorrelator not supported",
"sql": "SELECT * FROM {tbl} AS a WHERE a.intCol BETWEEN (SELECT MIN(b.intCol) FROM {tbl} AS b WHERE b.intCol = a.intCol + 1) AND 100"
},
{
"ignored": true,
"comments": "Relation Decorrelator not supported",
"sql": "SELECT * FROM {tbl} AS a WHERE EXISTS (SELECT strCol FROM {tbl} AS b WHERE b.intCol = a.intCol + 1)"
},
{
"ignored": true,
"comments": "Relation Decorrelator not supported",
"sql": "SELECT * FROM {tbl} AS a WHERE NOT EXISTS (SELECT strCol FROM {tbl} AS b WHERE b.intCol = a.intCol + 1)"
},
{
"ignored": true,
"comments": "Relation Decorrelator not supported",
"sql": "SELECT * FROM {tbl} AS a WHERE (SELECT count(*) FROM {tbl} AS b WHERE b.intCol = a.intCol + 1) > 0"
}
]
},
"group_by_and_having_tests": {
"psql": "7.2.3",
"tables": {
"tbl1": {
"schema": [
{"name": "strCol", "type": "STRING"},
{"name": "intCol", "type": "INT"}
],
"inputs": [
["a", 3],
["b", 2],
["c", 5],
["a", 1]
]
},
"tbl2": {
"schema": [
{"name": "strCol1", "type": "STRING"},
{"name": "strCol2", "type": "STRING"},
{"name": "intCol", "type": "INT"}
],
"inputs": [
["a", "foo", 1],
["a", "bar", 2],
["b", "alice", 42],
["b", "bob", 196883]
]
}
},
"queries": [
{ "sql": "SELECT strCol FROM {tbl1} GROUP BY strCol" },
{ "sql": "SELECT strCol FROM {tbl1} GROUP BY strCol, intCol" },
{ "sql": "SELECT strCol, intCol FROM {tbl1} GROUP BY strCol, intCol" },
{ "sql": "SELECT strCol, SUM(intCol) FROM {tbl1} GROUP BY strCol" },
{ "sql": "SELECT strCol, b.strCol2, (sum(a.intCol) * b.intCol) AS colAlias FROM {tbl1} a INNER JOIN {tbl2} b ON a.strCol = b.strCol1 GROUP BY strCol, b.strCol2, b.intCol" },
{ "sql": "SELECT MOD(b.intCol, 2), sum(a.intCol) AS colAlias FROM {tbl1} a INNER JOIN {tbl2} b ON a.strCol = b.strCol1 GROUP BY MOD(b.intCol, 2)" },
{ "sql": "SELECT strCol, SUM(intCol) FROM {tbl1} GROUP BY strCol HAVING SUM(intCol) > 3" },
{ "sql": "SELECT strCol, SUM(intCol) FROM {tbl1} GROUP BY strCol HAVING AVG(intCol) > 1 AND MIN(intCol) < 10" },
{ "sql": "SELECT strCol, b.strCol2, (sum(a.intCol) * b.intCol) AS colAlias FROM {tbl1} a INNER JOIN {tbl2} b ON a.strCol = b.strCol1 GROUP BY strCol, b.strCol2, b.intCol HAVING avg(a.intCol) < 100" },
{
"ignored": true,
"comment": "correlation is not supported. ALL is only supported if expand = false",
"sql": "SELECT strCol, SUM(intCol) FROM {tbl1} GROUP BY strCol HAVING AVG(intCol) >= ALL (SELECT AVG(intCol) FROM {tbl1} GROUP BY strCol)"
},
{
"ignored": true,
"comment": "correlation is not supported. SOME is only supported if expand = false",
"sql": "SELECT strCol, SUM(intCol) FROM {tbl1} GROUP BY strCol HAVING AVG(intCol) >= ANY (SELECT AVG(intCol) FROM {tbl1} GROUP BY strCol)"
}
]
}
}

0 comments on commit 375b7d0

Please sign in to comment.