should be it
This commit is contained in:
30
external/duckdb/test/sql/pivot/multi_statement_parsing.cpp
vendored
Normal file
30
external/duckdb/test/sql/pivot/multi_statement_parsing.cpp
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
#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}));
|
||||
}
|
||||
Reference in New Issue
Block a user