]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2183] Added parameter cast test
authorThomas Markwalder <tmark@isc.org>
Tue, 14 Dec 2021 19:41:28 +0000 (14:41 -0500)
committerThomas Markwalder <tmark@isc.org>
Tue, 21 Dec 2021 18:30:14 +0000 (13:30 -0500)
src/lib/pgsql/tests/pgsql_exchange_unittest.cc

index 96775de8eaa5b9b08dbda29bbb8416a3862451c6..8a5ff94096dffa55fa3ac1b1f6b4f738deaf8860 100644 (file)
@@ -1029,14 +1029,18 @@ TEST_F(PgSqlBasicsTest, inetTest4) {
     const char* st_name = "smallint_insert";
     PgSqlTaggedStatement statement[] = {
         { 1, { OID_TEXT }, st_name,
-          "INSERT INTO BASICS (inet_col) values (cast($1 as inet))" }
+          "INSERT INTO BASICS (inet_col) values (cast($1 as inet))" },
+        { 1, { OID_TEXT }, "check_where",
+          "select * from BASICS where inet_col = cast($1 as inet)" }
     };
 
     ASSERT_NO_THROW(conn_->prepareStatement(statement[0]));
+    ASSERT_NO_THROW_LOG(conn_->prepareStatement(statement[1]));
 
     // Build our reference list of reference values
     std::vector<asiolink::IOAddress>inets;
     inets.push_back(asiolink::IOAddress("0.0.0.0"));
+    inets.push_back(asiolink::IOAddress("192.168.1.9"));
     inets.push_back(asiolink::IOAddress("192.168.1.1"));
 
     // Insert a row for each reference value
@@ -1053,16 +1057,25 @@ TEST_F(PgSqlBasicsTest, inetTest4) {
 
     // Iterate over the rows, verifying each value against its reference
     int row = 0;
+    asiolink::IOAddress fetched_inet("0.0.0.0");
     for ( ; row  < inets.size(); ++row ) {
         // Verify the column is not null.
         ASSERT_FALSE(PgSqlExchange::isColumnNull(*r, row, INET_COL));
 
         // Fetch and verify the column value
-        asiolink::IOAddress fetched_inet("0.0.0.0");
         ASSERT_NO_THROW(fetched_inet = PgSqlExchange::getInetValue4(*r, row, INET_COL));
         EXPECT_EQ(fetched_inet, inets[row]);
     }
 
+    // Verify that casting from string to inet works in where clauses.
+    r.reset();
+    bind_array.reset(new PsqlBindArray());
+    bind_array->addInet4(inets[1]);
+    RUN_PREP(r, statement[1], bind_array, PGRES_TUPLES_OK);
+    ASSERT_EQ(r->getRows(),1);
+    ASSERT_NO_THROW(fetched_inet = PgSqlExchange::getInetValue4(*r, 0, INET_COL));
+    EXPECT_EQ(fetched_inet, inets[1]);
+
     // Clean out the table
     WIPE_ROWS(r);