1 | #include "catch.hpp" |
2 | #include "test_helpers.hpp" |
3 | |
4 | using namespace duckdb; |
5 | using namespace std; |
6 | |
7 | TEST_CASE("Test scalar queries" , "[scalarquery]" ) { |
8 | unique_ptr<QueryResult> result; |
9 | DuckDB db(nullptr); |
10 | Connection con(db); |
11 | con.EnableQueryVerification(); |
12 | |
13 | result = con.Query("SELECT 42" ); |
14 | REQUIRE(CHECK_COLUMN(result, 0, {42})); |
15 | |
16 | result = con.Query("SELECT 42 + 1" ); |
17 | REQUIRE(CHECK_COLUMN(result, 0, {43})); |
18 | |
19 | result = con.Query("SELECT 2 * (42 + 1), 35 - 2" ); |
20 | REQUIRE(CHECK_COLUMN(result, 0, {86})); |
21 | REQUIRE(CHECK_COLUMN(result, 1, {33})); |
22 | |
23 | result = con.Query("SELECT 'hello'" ); |
24 | REQUIRE(CHECK_COLUMN(result, 0, {"hello" })); |
25 | |
26 | result = con.Query("SELECT cast('3' AS INTEGER)" ); |
27 | REQUIRE(CHECK_COLUMN(result, 0, {3})); |
28 | |
29 | result = con.Query("SELECT cast(3 AS VARCHAR)" ); |
30 | REQUIRE(CHECK_COLUMN(result, 0, {"3" })); |
31 | |
32 | result = con.Query("SELECT CASE WHEN 43 > 33 THEN 43 ELSE 33 END;" ); |
33 | REQUIRE(CHECK_COLUMN(result, 0, {43})); |
34 | |
35 | // cannot reference columns like this |
36 | REQUIRE_FAIL(con.Query("SELECT 1 AS a, a * 2" )); |
37 | // query without selection list |
38 | REQUIRE_FAIL(con.Query("SELECT" )); |
39 | REQUIRE_FAIL(con.Query("SELECT FROM (SELECT 42) v1" )); |
40 | } |
41 | |
42 | TEST_CASE("Test scalar queries from SQLLogicTests" , "[scalarquery]" ) { |
43 | unique_ptr<QueryResult> result; |
44 | DuckDB db(nullptr); |
45 | Connection con(db); |
46 | con.EnableQueryVerification(); |
47 | |
48 | result = con.Query("SELECT + CASE WHEN NOT + 84 NOT BETWEEN - 78 + 98 * 51 AND - ( ( - 28 ) ) * COUNT ( * ) + + - " |
49 | "65 THEN NULL ELSE 16 / + 34 + + - 98 END / + 70 - ( - - CASE - COALESCE ( + 73, + - 66 * - 89 " |
50 | "* - 72 ) WHEN COUNT ( * ) / + 4 * CAST ( - - 18 AS INTEGER ) + + + COUNT ( * ) - - 88 THEN " |
51 | "NULL WHEN 92 THEN NULL ELSE COUNT ( * ) END ) AS col0" ); |
52 | REQUIRE(CHECK_COLUMN(result, 0, {-2})); |
53 | } |
54 | |