Extended a bit the test Bytes array parameter from previous commit

to demonstatrate and check its work, and a bit of sql::bytes

Corrected vendor name in cpack configuration.
This commit is contained in:
Lawrin Novitsky
2025-02-17 01:06:56 +01:00
parent ae20e01ee0
commit 7471580570
3 changed files with 28 additions and 11 deletions

View File

@ -5,7 +5,7 @@ IF(NOT CPACK_PACKAGE_RELEASE)
SET(CPACK_PACKAGE_RELEASE 1) SET(CPACK_PACKAGE_RELEASE 1)
ENDIF() ENDIF()
SET(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE 1) SET(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE 1)
SET(CPACK_PACKAGE_VENDOR "MariaDB Corporation Ab") SET(CPACK_PACKAGE_VENDOR "MariaDB Corporation plc")
SET(CPACK_PACKAGE_CONTACT "info@mariadb.com") SET(CPACK_PACKAGE_CONTACT "info@mariadb.com")
SET(CPACK_PACKAGE_DESCRIPTION "MariaDB Connector/C++. C++ driver library for connecting to MariaDB and MySQL servers") SET(CPACK_PACKAGE_DESCRIPTION "MariaDB Connector/C++. C++ driver library for connecting to MariaDB and MySQL servers")
SET(CPACK_PACKAGE_LICENSE "LGPLv2.1") SET(CPACK_PACKAGE_LICENSE "LGPLv2.1")

View File

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
* 2020, 2024 MariaDB Corporation plc * 2020, 2025 MariaDB Corporation plc
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2.0, as * it under the terms of the GNU General Public License, version 2.0, as
@ -2218,14 +2218,31 @@ void preparedstatement::multirs_caching()
ASSERT_EQUALS(-1, pstmt1->getUpdateCount()); ASSERT_EQUALS(-1, pstmt1->getUpdateCount());
} }
void preparedstatement::negativeBytesLength() void preparedstatement::bytesArrParam()
{ {
pstmt.reset(con->prepareStatement("SELECT ?")); pstmt.reset(con->prepareStatement("SELECT ?"));
char charArray[1]; char charArray[3]= {'\1', '\0', '\1'};
sql::bytes sqlBytes{ charArray, 1 }; sql::bytes sqlBytes(charArray, 3), b2{'\1', '\0', '\2'};
//sqlBytes have a negative length, let's see if it throws b2[2]= '\0';
// sqlBytes has internally a negative length, i.e. it does not own the array. let's see if it throws
pstmt->setBytes(1, &sqlBytes); pstmt->setBytes(1, &sqlBytes);
pstmt->executeQuery(); res.reset(pstmt->executeQuery());
ASSERT(res->next());
ASSERT_EQUALS(65537, res->getInt(1));
// b2 owns the array and internal length is positive - checking it's also alright
pstmt->setBytes(1, &b2);
res.reset(pstmt->executeQuery());
ASSERT(res->next());
ASSERT_EQUALS(65536, res->getInt(1));
sqlBytes[0]= '\0';
// Just to show, that original array has been changed
ASSERT_EQUALS('\0', charArray[0]);
pstmt->setBytes(1, &sqlBytes);
res.reset(pstmt->executeQuery());
ASSERT(res->next());
ASSERT_EQUALS(1, res->getInt(1));
} }
} /* namespace preparedstatement */ } /* namespace preparedstatement */

View File

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
* 2020, 2023 MariaDB Corporation AB * 2020, 2025 MariaDB Corporation plc
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2.0, as * it under the terms of the GNU General Public License, version 2.0, as
@ -79,7 +79,7 @@ public:
TEST_CASE(concpp106_batchBulk); TEST_CASE(concpp106_batchBulk);
TEST_CASE(concpp116_getByte); TEST_CASE(concpp116_getByte);
TEST_CASE(multirs_caching); TEST_CASE(multirs_caching);
TEST_CASE(negativeBytesLength); TEST_CASE(bytesArrParam);
} }
/** /**
@ -173,9 +173,9 @@ public:
void multirs_caching(); void multirs_caching();
/** /**
* sql::bytes may be negative and cause problems * sql::bytes may have negative length(internally) and that caused problems
*/ */
void negativeBytesLength(); void bytesArrParam();
/* unit_fixture methods overriding */ /* unit_fixture methods overriding */
void setUp(); void setUp();