@@ -38,10 +38,12 @@ static ID intern_brackets, intern_merge, intern_merge_bang, intern_new_with_args
3838 #define CONNECTED (wrapper ) (wrapper->client->net.pvio != NULL && wrapper->client->net.fd != -1 && VIO_IS_CONNECTED(wrapper))
3939#endif
4040
41+ #define MYSQL_CLIENT_NOT_CONNECTED_STR "MySQL client is not connected"
42+
4143#define REQUIRE_CONNECTED (wrapper ) \
4244 REQUIRE_INITIALIZED(wrapper) \
4345 if (!CONNECTED(wrapper) && !wrapper->reconnect_enabled) { \
44- rb_raise(cMysql2Error, "MySQL client is not connected" ); \
46+ rb_raise(cMysql2Error, MYSQL_CLIENT_NOT_CONNECTED_STR ); \
4547 }
4648
4749#define REQUIRE_NOT_CONNECTED (wrapper ) \
@@ -50,6 +52,12 @@ static ID intern_brackets, intern_merge, intern_merge_bang, intern_new_with_args
5052 rb_raise(cMysql2Error, "MySQL connection is already open"); \
5153 }
5254
55+ #define REQUIRE_CONNECTED_ONCE (wrapper ) \
56+ REQUIRE_INITIALIZED(wrapper) \
57+ if (!wrapper->client->server_version) { \
58+ rb_raise(cMysql2Error, MYSQL_CLIENT_NOT_CONNECTED_STR); \
59+ }
60+
5361/*
5462 * compatability with mysql-connector-c, where LIBMYSQL_VERSION is the correct
5563 * variable to use, but MYSQL_SERVER_VERSION gives the correct numbers when
@@ -819,7 +827,7 @@ static VALUE rb_mysql_client_real_escape(VALUE self, VALUE str) {
819827 rb_encoding * conn_enc ;
820828 GET_CLIENT (self );
821829
822- REQUIRE_CONNECTED (wrapper );
830+ REQUIRE_CONNECTED_ONCE (wrapper );
823831 Check_Type (str , T_STRING );
824832 default_internal_enc = rb_default_internal_encoding ();
825833 conn_enc = rb_to_encoding (wrapper -> encoding );
0 commit comments