Preserve MySQL connection failures across queries
This commit is contained in:
@@ -115,6 +115,15 @@ RENDER(Request& context)
|
|||||||
parsed_underscore.find("'Ada'") != String::npos && parsed_underscore.find("_name") == String::npos ? "pass" : "fail",
|
parsed_underscore.find("'Ada'") != String::npos && parsed_underscore.find("_name") == String::npos ? "pass" : "fail",
|
||||||
parsed_underscore
|
parsed_underscore
|
||||||
);
|
);
|
||||||
|
MySQL unavailable_mysql;
|
||||||
|
unavailable_mysql.connect("127.0.0.1", "__uce_intentionally_missing__", "not-a-real-password");
|
||||||
|
unavailable_mysql.query("SELECT 1");
|
||||||
|
String unavailable_mysql_error = unavailable_mysql.error();
|
||||||
|
mark(
|
||||||
|
"mysql query after failed connect retains the connection error",
|
||||||
|
unavailable_mysql_error != "" ? "pass" : "fail",
|
||||||
|
unavailable_mysql_error
|
||||||
|
);
|
||||||
|
|
||||||
MySQL mysql;
|
MySQL mysql;
|
||||||
mysql.connect("127.0.0.1", "root", "");
|
mysql.connect("127.0.0.1", "root", "");
|
||||||
|
|||||||
@@ -226,8 +226,10 @@ DValue MySQL::query(String q)
|
|||||||
}
|
}
|
||||||
if(!connection)
|
if(!connection)
|
||||||
{
|
{
|
||||||
_preload_next_error_code = CR_UNKNOWN_ERROR;
|
if(_preload_next_error_code == 0)
|
||||||
statement_info = "mysql connection is not open";
|
_preload_next_error_code = CR_UNKNOWN_ERROR;
|
||||||
|
if(statement_info == "")
|
||||||
|
statement_info = "mysql connection is not open";
|
||||||
return(DValue());
|
return(DValue());
|
||||||
}
|
}
|
||||||
_preload_next_error_code = mysql_query((MYSQL*)connection, q.c_str());
|
_preload_next_error_code = mysql_query((MYSQL*)connection, q.c_str());
|
||||||
|
|||||||
@@ -287,6 +287,14 @@ DValue MySQL::query(String q)
|
|||||||
statement_info = "mysql positional ? placeholders are not supported; use named :name placeholders";
|
statement_info = "mysql positional ? placeholders are not supported; use named :name placeholders";
|
||||||
return(DValue());
|
return(DValue());
|
||||||
}
|
}
|
||||||
|
if(!connection)
|
||||||
|
{
|
||||||
|
if(_preload_next_error_code == 0)
|
||||||
|
_preload_next_error_code = 2000;
|
||||||
|
if(statement_info == "")
|
||||||
|
statement_info = "mysql connection is not open";
|
||||||
|
return(DValue());
|
||||||
|
}
|
||||||
DValue request;
|
DValue request;
|
||||||
request["op"] = "query";
|
request["op"] = "query";
|
||||||
request["handle"] = (f64)(uintptr_t)connection;
|
request["handle"] = (f64)(uintptr_t)connection;
|
||||||
|
|||||||
Reference in New Issue
Block a user