-
Notifications
You must be signed in to change notification settings - Fork 980
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Do not print "Updating metadata for stmt" for EXPLAIN
ProxySQL generates warnings when updating prepared statements metadatas. This commit filters these warnings for EXPLAIN statements. See #4478 It also include a TAP test for code coverage.
- Loading branch information
1 parent
3187ee6
commit 3790ce6
Showing
2 changed files
with
78 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
/** | ||
* @file stmt_explain-t.cpp | ||
* @brief executes EXPLAIN using prepared statements. | ||
* It doesn't perform any real test, only code coverage. | ||
*/ | ||
|
||
|
||
#include <string> | ||
#include <stdio.h> | ||
#include <cstring> | ||
#include <unistd.h> | ||
|
||
#include "mysql.h" | ||
|
||
#include "tap.h" | ||
#include "command_line.h" | ||
#include "utils.h" | ||
|
||
using std::string; | ||
|
||
|
||
int main(int argc, char** argv) { | ||
CommandLine cl; | ||
|
||
// Checking for required environmental variables | ||
if (cl.getEnv()) { | ||
diag("Failed to get the required environmental variables."); | ||
return -1; | ||
} | ||
|
||
plan(1); // Plan for testing purposes | ||
|
||
MYSQL* mysql = mysql_init(NULL); ///< MySQL connection object | ||
if (!mysql) { | ||
fprintf(stderr, "File %s, line %d, Error: %s\n", __FILE__, __LINE__, mysql_error(mysql)); | ||
return exit_status(); | ||
} | ||
|
||
// Connecting to ProxySQL | ||
diag("Connecting to '%s@%s:%d'", cl.mysql_username, cl.mysql_host, cl.port); | ||
if (!mysql_real_connect(mysql, cl.mysql_host, cl.mysql_username, cl.mysql_password, NULL, cl.port, NULL, 0)) { | ||
fprintf(stderr, "File %s, line %d, Error: %s\n", __FILE__, __LINE__, mysql_error(mysql)); | ||
return exit_status(); | ||
} | ||
|
||
// Initialize and prepare all the statements | ||
MYSQL_STMT* stmt = mysql_stmt_init(mysql); | ||
if (!stmt) { | ||
fprintf(stderr, "mysql_stmt_init(), out of memory\n"); | ||
return exit_status(); | ||
} | ||
|
||
std::string select_query = "EXPLAIN SELECT 1"; | ||
diag("select_query: %s", select_query.c_str()); | ||
if (mysql_stmt_prepare(stmt, select_query.c_str(), strlen(select_query.c_str()))) { | ||
fprintf(stderr, "mysql_stmt_prepare at line %d failed: %s\n", __LINE__ , mysql_error(mysql)); | ||
mysql_close(mysql); | ||
mysql_library_end(); | ||
return exit_status(); | ||
} | ||
|
||
int rc = mysql_stmt_execute(stmt); | ||
ok (rc == 0 , "mysql_stmt_execute() succeeded"); | ||
if (rc) { | ||
fprintf(stderr, "mysql_stmt_execute at line %d failed: %d , %s\n", __LINE__ , rc , mysql_stmt_error(stmt)); | ||
mysql_close(mysql); | ||
mysql_library_end(); | ||
return exit_status(); | ||
} | ||
mysql_close(mysql); | ||
|
||
return exit_status(); | ||
} |