--- ./modules/db.mysql.sqlparser/src/mysql_sql_specifics.h.orig 2015-05-10 16:01:48.422453512 +0200 +++ ./modules/db.mysql.sqlparser/src/mysql_sql_specifics.h 2015-05-10 16:02:21.354438548 +0200 @@ -46,6 +46,7 @@ std::string query_kill_connection(boost::int64_t connection_id); std::string query_kill_query(boost::int64_t connection_id); std::string query_variable(const std::string &name); + std::string query_global_variable(const std::string &name); sqlide::QuoteVar::Escape_sql_string escape_sql_string(); sqlide::QuoteVar::Blob_to_string blob_to_string(); std::string setting_non_std_sql_delimiter(); --- ./modules/db.mysql.sqlparser/src/mysql_sql_specifics.cpp.orig 2015-05-10 14:37:43.020287634 +0200 +++ ./modules/db.mysql.sqlparser/src/mysql_sql_specifics.cpp 2015-05-10 14:39:07.592078524 +0200 @@ -240,6 +240,10 @@ return strfmt("SHOW SESSION VARIABLES LIKE '%s'", name.c_str()); } +std::string Mysql_sql_specifics::query_global_variable(const std::string &name) +{ + return strfmt("SHOW GLOBAL VARIABLES LIKE '%s'", name.c_str()); +} std::string escape_c_string_(const std::string &text) { --- ./backend/wbprivate/sqlide/wb_sql_editor_form.cpp.orig 2015-04-15 15:54:19.000000000 +0200 +++ ./backend/wbprivate/sqlide/wb_sql_editor_form.cpp 2015-05-10 14:41:46.699699179 +0200 @@ -285,7 +285,7 @@ { //_lower_case_table_names std::string compile_os; - if (_usr_dbc_conn && get_session_variable(_usr_dbc_conn->ref.get(), "version_compile_os", compile_os)) + if (_usr_dbc_conn && get_global_variable(_usr_dbc_conn->ref.get(), "version_compile_os", compile_os)) { if ((_lower_case_table_names == 0 && (base::starts_with(compile_os, "Win") || base::starts_with(compile_os, "osx"))) || (_lower_case_table_names == 2 && base::starts_with(compile_os, "Win"))) @@ -636,6 +636,25 @@ return false; } +bool SqlEditorForm::get_global_variable(sql::Connection *dbc_conn, const std::string &name, std::string &value) +{ + if (dbc_conn) + { + SqlFacade::Ref sql_facade= SqlFacade::instance_for_rdbms(rdbms()); + Sql_specifics::Ref sql_specifics= sql_facade->sqlSpecifics(); + std::string query= sql_specifics->query_global_variable(name); + if (query.empty()) + return false; + boost::scoped_ptr statement(dbc_conn->createStatement()); + boost::scoped_ptr rs(statement->executeQuery(query)); + if (rs->next()) + { + value= rs->getString(2); + return true; + } + } + return false; +} void SqlEditorForm::schema_tree_did_populate() { @@ -1288,9 +1307,9 @@ { { std::string value; - get_session_variable(_usr_dbc_conn->ref.get(), "version_comment", value); + get_global_variable(_usr_dbc_conn->ref.get(), "version_comment", value); _connection_details["dbmsProductName"] = value; - get_session_variable(_usr_dbc_conn->ref.get(), "version", value); + get_global_variable(_usr_dbc_conn->ref.get(), "version", value); _connection_details["dbmsProductVersion"] = value; log_info("Opened connection '%s' to %s version %s\n", _connection->name().c_str(), @@ -1324,7 +1343,7 @@ // get lower_case_table_names value std::string value; - if (_usr_dbc_conn && get_session_variable(_usr_dbc_conn->ref.get(), "lower_case_table_names", value)) + if (_usr_dbc_conn && get_global_variable(_usr_dbc_conn->ref.get(), "lower_case_table_names", value)) _lower_case_table_names = base::atoi(value, 0); parser::MySQLParserServices::Ref services = parser::MySQLParserServices::get(grt); --- ./backend/wbprivate/sqlide/wb_sql_editor_form.h.orig 2015-05-10 15:32:03.017693485 +0200 +++ ./backend/wbprivate/sqlide/wb_sql_editor_form.h 2015-05-10 15:32:52.441331681 +0200 @@ -270,6 +270,7 @@ db_mgmt_ConnectionRef connection_descriptor() const { return _connection; } bool get_session_variable(sql::Connection *dbc_conn, const std::string &name, std::string &value); + bool get_global_variable(sql::Connection *dbc_conn, const std::string &name, std::string &value); private: void cache_sql_mode(); --- ./backend/wbpublic/grtsqlparser/sql_specifics.h.orig 2015-05-10 15:40:36.249779541 +0200 +++ ./backend/wbpublic/grtsqlparser/sql_specifics.h 2015-05-10 15:41:28.301477436 +0200 @@ -54,6 +54,7 @@ virtual std::string query_kill_connection(boost::int64_t connection_id); virtual std::string query_kill_query(boost::int64_t connection_id); virtual std::string query_variable(const std::string &name); + virtual std::string query_global_variable(const std::string &name); virtual sqlide::QuoteVar::Escape_sql_string escape_sql_string(); virtual sqlide::QuoteVar::Blob_to_string blob_to_string(); virtual std::string setting_non_std_sql_delimiter(); --- ./backend/wbpublic/grtsqlparser/sql_specifics.cpp.orig 2015-05-10 15:40:28.737838245 +0200 +++ ./backend/wbpublic/grtsqlparser/sql_specifics.cpp 2015-05-10 15:41:11.477567278 +0200 @@ -61,6 +61,11 @@ return ""; } +std::string Sql_specifics::query_global_variable(const std::string &name) +{ + return ""; +} + sqlide::QuoteVar::Escape_sql_string Sql_specifics::escape_sql_string() {