LCOV - code coverage report
Current view: top level - backend/engine/duckdb - duckdb_executor_attach_test.cc (source / functions) Coverage Total Hit
Test: _coverage_report.dat Lines: 100.0 % 41 41
Test Date: 2026-07-02 21:01:18 Functions: 100.0 % 1 1

            Line data    Source code
       1              : #include <vector>
       2              : 
       3              : #include "absl/types/span.h"
       4              : #include "backend/engine/duckdb/duckdb_executor_test_fixture.h"
       5              : #include "backend/schema/schema.h"
       6              : #include "backend/storage/storage.h"
       7              : #include "googlesql/resolved_ast/resolved_ast.h"
       8              : #include "gtest/gtest.h"
       9              : 
      10              : namespace bigquery_emulator {
      11              : namespace backend {
      12              : namespace engine {
      13              : namespace duckdb {
      14              : namespace {
      15              : 
      16            1 : TEST_F(DuckDbExecutorTest, FloatSumOverParquetAttachedTable) {
      17            1 :   schema::TableSchema bq_schema;
      18            1 :   schema::ColumnSchema id;
      19            1 :   id.name = "id";
      20            1 :   id.type = schema::ColumnType::kInt64;
      21            1 :   id.mode = schema::ColumnMode::kRequired;
      22            1 :   bq_schema.columns.push_back(id);
      23            1 :   schema::ColumnSchema value;
      24            1 :   value.name = "v";
      25            1 :   value.type = schema::ColumnType::kFloat64;
      26            1 :   value.mode = schema::ColumnMode::kRequired;
      27            1 :   bq_schema.columns.push_back(value);
      28            1 :   ASSERT_TRUE(storage_->CreateDataset({"proj-test", "ds"}, "US").ok());
      29            1 :   ASSERT_TRUE(
      30            1 :       storage_->CreateTable({"proj-test", "ds", "floats"}, bq_schema).ok());
      31              : 
      32            1 :   std::vector<storage::Row> rows = {
      33            1 :       storage::Row{{storage::Value::Int64(1), storage::Value::Float64(10.5)}},
      34            1 :       storage::Row{{storage::Value::Int64(2), storage::Value::Float64(2.25)}},
      35            1 :   };
      36            1 :   ASSERT_TRUE(
      37            1 :       storage_
      38            1 :           ->AppendRows({"proj-test", "ds", "floats"}, absl::MakeConstSpan(rows))
      39            1 :           .ok());
      40              : 
      41            1 :   CatalogBundle bundle = MakeCatalog();
      42            1 :   const std::string sql = "SELECT SUM(v) AS total FROM ds.floats";
      43            1 :   auto analyzed = Analyze(sql, bundle.catalog.get(), /*all_statements=*/false);
      44            2 :   ASSERT_TRUE(analyzed.ok()) << analyzed.status();
      45            1 :   const ::googlesql::ResolvedStatement* stmt =
      46            1 :       (*analyzed)->resolved_statement();
      47            1 :   ASSERT_NE(stmt, nullptr);
      48              : 
      49            1 :   absl::StatusOr<std::unique_ptr<RowSource>> source =
      50            1 :       executor_->ExecuteQuery(MakeRequest(sql), *stmt, bundle.catalog.get());
      51            2 :   ASSERT_TRUE(source.ok()) << source.status();
      52              : 
      53            1 :   storage::Row row;
      54            1 :   auto has = (*source)->Next(&row);
      55            2 :   ASSERT_TRUE(has.ok()) << has.status();
      56            1 :   ASSERT_TRUE(*has);
      57            1 :   ASSERT_EQ(row.cells.size(), 1u);
      58            1 :   ASSERT_EQ(row.cells[0].kind(), storage::Value::Kind::kFloat64);
      59            1 :   EXPECT_DOUBLE_EQ(row.cells[0].float64_value(), 12.75);
      60            1 : }
      61              : 
      62              : }  // namespace
      63              : }  // namespace duckdb
      64              : }  // namespace engine
      65              : }  // namespace backend
      66              : }  // namespace bigquery_emulator
        

Generated by: LCOV version 2.0-1