Files
email-tracker/external/duckdb/test/api/test_table_info.cpp
2025-10-24 19:21:19 -05:00

39 lines
1.1 KiB
C++

#include "catch.hpp"
#include "test_helpers.hpp"
using namespace duckdb;
using namespace std;
TEST_CASE("Test table info api", "[api]") {
DuckDB db(nullptr);
Connection con(db), con2(db);
//! table is not found!
auto info = con.TableInfo("test");
REQUIRE(info.get() == nullptr);
// after creating, the table can be found
REQUIRE_NO_FAIL(con.Query("CREATE TABLE test(i INTEGER)"));
info = con.TableInfo("test");
REQUIRE(info.get() != nullptr);
REQUIRE(info->table == "test");
REQUIRE(info->columns.size() == 1);
REQUIRE(info->columns[0].Name() == "i");
// table info is transaction sensitive
REQUIRE_NO_FAIL(con.Query("BEGIN TRANSACTION"));
// dropping the table in a transaction will result in the table being gone
REQUIRE_NO_FAIL(con.Query("DROP TABLE test"));
info = con.TableInfo("test");
REQUIRE(info.get() == nullptr);
// but not in a separate connection!
info = con2.TableInfo("test");
REQUIRE(info.get() != nullptr);
// rolling back brings back the table info again
REQUIRE_NO_FAIL(con.Query("ROLLBACK"));
info = con.TableInfo("test");
REQUIRE(info.get() != nullptr);
}