31 lines
1.1 KiB
C++
31 lines
1.1 KiB
C++
#include "catch.hpp"
|
|
#include "test_helpers.hpp"
|
|
|
|
using namespace duckdb;
|
|
using namespace std;
|
|
|
|
// This test that the parser keeps statements in the right order, also when a multi-statement (i.e. a PIVOT is included
|
|
// See https://github.com/duckdb/duckdb/issues/18710
|
|
TEST_CASE("Parsing multiple statements including a PIVOT in one go results in a correctly ordered list", "[pivot][.]") {
|
|
DuckDB db(nullptr);
|
|
Connection con(db);
|
|
auto query = "PIVOT (SELECT 'a' AS col) ON col using first(col);SELECT 42;";
|
|
|
|
// Check that the SELECT 42 statement is last in the parsed statements list
|
|
auto statements = con.context->ParseStatements(query);
|
|
REQUIRE(statements.size() == 3);
|
|
// REQUIRE(statements.back()->query == "SELECT 42;");
|
|
|
|
// Execute the query
|
|
auto result = con.Query(query);
|
|
|
|
// We expect two results
|
|
REQUIRE(result);
|
|
REQUIRE(result->next);
|
|
REQUIRE(result->next->next == nullptr);
|
|
// The first result should be that of the PIVOT statement
|
|
REQUIRE(CHECK_COLUMN(result, 0, {"a"}));
|
|
// The second result should be 42
|
|
REQUIRE(CHECK_COLUMN(result->next, 0, {42}));
|
|
}
|