Skip to content

Commit ab421cb

Browse files
committed
Fix composite type test
1 parent afe06ac commit ab421cb

File tree

3 files changed

+49
-33
lines changed

3 files changed

+49
-33
lines changed

c/driver/postgresql/postgresql_test.cc

Lines changed: 42 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1825,72 +1825,81 @@ TEST_F(PostgresStatementTest, SqlQueryInt2vector) {
18251825
ASSERT_EQ(reader.array->release, nullptr);
18261826
}
18271827

1828-
TEST_F(PostgresStatementTest, PostgresCompositeTest) {
1828+
TEST_F(PostgresStatementTest, PostgresCompositeTypeTest) {
18291829
ASSERT_THAT(AdbcStatementNew(&connection, &statement, &error), IsOkStatus(&error));
1830-
18311830
{
18321831
adbc_validation::StreamReader reader;
18331832

1834-
// Cleanup first: Drop table before type
1833+
// Types are cached on the AdbcDatabase so this test has to totally recreate
1834+
// its AdbcDatabase (see the call to ResetTest in the body here).
1835+
1836+
// Cleanup. We have to drop the table before we drop the type.
18351837
ASSERT_THAT(
1836-
AdbcStatementSetSqlQuery(&statement, "DROP TABLE IF EXISTS adbc_test;", &error),
1838+
AdbcStatementSetSqlQuery(
1839+
&statement, "DROP TABLE IF EXISTS adbc_postgresql_composite_type_test_table;",
1840+
&error),
18371841
IsOkStatus(&error));
18381842
ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value,
18391843
&reader.rows_affected, &error),
18401844
IsOkStatus(&error));
1845+
ASSERT_THAT(AdbcStatementSetSqlQuery(
1846+
&statement, "DROP TYPE IF EXISTS my_composite_type;", &error),
1847+
IsOkStatus(&error));
1848+
ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value,
1849+
&reader.rows_affected, &error),
1850+
IsOkStatus(&error));
1851+
1852+
// Create type and table, fill with data
18411853
ASSERT_THAT(
1842-
AdbcStatementSetSqlQuery(&statement, "DROP TYPE IF EXISTS mycomp;", &error),
1854+
AdbcStatementSetSqlQuery(
1855+
&statement, "CREATE TYPE my_composite_type AS (x integer, y text);", &error),
18431856
IsOkStatus(&error));
18441857
ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value,
18451858
&reader.rows_affected, &error),
18461859
IsOkStatus(&error));
18471860

1848-
ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, "CREATE TYPE mycomp AS (x integer);",
1849-
&error),
1850-
IsOkStatus(&error));
1861+
ASSERT_THAT(
1862+
AdbcStatementSetSqlQuery(&statement,
1863+
"CREATE TABLE adbc_postgresql_composite_type_test_table "
1864+
"(a my_composite_type);",
1865+
&error),
1866+
IsOkStatus(&error));
18511867
ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value,
18521868
&reader.rows_affected, &error),
18531869
IsOkStatus(&error));
18541870

18551871
ASSERT_THAT(AdbcStatementSetSqlQuery(
1856-
&statement, "CREATE TABLE adbc_test (mycomps mycomp);", &error),
1872+
&statement,
1873+
"INSERT INTO adbc_postgresql_composite_type_test_table "
1874+
"(a) VALUES (ROW(1, 'a')), (ROW(2,' b')), (ROW(3,' c'));",
1875+
&error),
18571876
IsOkStatus(&error));
18581877
ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value,
18591878
&reader.rows_affected, &error),
18601879
IsOkStatus(&error));
18611880

1862-
ASSERT_THAT(
1863-
AdbcStatementSetSqlQuery(
1864-
&statement,
1865-
"INSERT INTO adbc_test (mycomps) VALUES (ROW(1)), (ROW(2)), (ROW(3));",
1866-
&error),
1867-
IsOkStatus(&error));
1868-
ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value,
1869-
&reader.rows_affected, &error),
1870-
IsOkStatus(&error));
1881+
// AdbcDatabase currently caches types so we need to recreate it
1882+
// https://github.com/apache/arrow-adbc/pull/3196#pullrequestreview-3103472826
1883+
ResetTest();
18711884

1872-
// Since the composite type is added after we connect the ADBC driver, we
1873-
// need to reconnect.
1874-
//
1875-
// TODO: This could he a helper (disconnect without recreating db)
1876-
ASSERT_THAT(AdbcStatementRelease(&statement, &error), IsOkStatus(&error));
1877-
ASSERT_THAT(AdbcConnectionRelease(&connection, &error), IsOkStatus(&error));
1878-
ASSERT_THAT(AdbcConnectionNew(&connection, &error), IsOkStatus(&error));
1879-
ASSERT_THAT(AdbcConnectionInit(&connection, &database, &error), IsOkStatus(&error));
18801885
ASSERT_THAT(AdbcStatementNew(&connection, &statement, &error), IsOkStatus(&error));
1881-
1882-
ASSERT_THAT(
1883-
AdbcStatementSetSqlQuery(&statement, "SELECT mycomps FROM adbc_test;", &error),
1884-
IsOkStatus(&error));
1886+
ASSERT_THAT(AdbcStatementSetSqlQuery(
1887+
&statement,
1888+
"SELECT * FROM adbc_postgresql_composite_type_test_table;", &error),
1889+
IsOkStatus(&error));
18851890
ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value,
18861891
&reader.rows_affected, &error),
18871892
IsOkStatus(&error));
18881893

1889-
// TODO: Still working on this
18901894
ASSERT_NO_FATAL_FAILURE(reader.GetSchema());
18911895
ASSERT_EQ(reader.schema->n_children, 1);
1892-
ASSERT_STREQ(reader.schema->children[0]->name, "mycomps");
1893-
ASSERT_STREQ(reader.schema->children[0]->format, "i");
1896+
ASSERT_STREQ(reader.schema->children[0]->name, "a");
1897+
ASSERT_STREQ(reader.schema->children[0]->format, "+s");
1898+
ASSERT_EQ(reader.schema->children[0]->n_children, 2);
1899+
ASSERT_STREQ(reader.schema->children[0]->children[0]->name, "x");
1900+
ASSERT_STREQ(reader.schema->children[0]->children[0]->format, "i");
1901+
ASSERT_STREQ(reader.schema->children[0]->children[1]->name, "y");
1902+
ASSERT_STREQ(reader.schema->children[0]->children[1]->format, "u");
18941903
}
18951904
}
18961905

c/validation/adbc_validation.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,7 @@ class StatementTest {
359359

360360
void SetUpTest();
361361
void TearDownTest();
362+
void ResetTest();
362363

363364
// Test methods
364365
void TestNewInit();

c/validation/adbc_validation_statement.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
#include "adbc_validation.h"
1919

20+
#include <cstdio>
2021
#include <cstring>
2122
#include <string>
2223
#include <utility>
@@ -62,6 +63,11 @@ void StatementTest::TearDownTest() {
6263
}
6364
}
6465

66+
void StatementTest::ResetTest() {
67+
TearDownTest();
68+
SetUpTest();
69+
}
70+
6571
void StatementTest::TestNewInit() {
6672
ASSERT_THAT(AdbcStatementNew(&connection, &statement, &error), IsOkStatus(&error));
6773
ASSERT_THAT(AdbcStatementRelease(&statement, &error), IsOkStatus(&error));

0 commit comments

Comments
 (0)