|
17 | 17 | VALUE cMysql2Client; |
18 | 18 | extern VALUE mMysql2, cMysql2Error; |
19 | 19 | static VALUE sym_id, sym_version, sym_header_version, sym_async, sym_symbolize_keys, sym_as, sym_array, sym_stream; |
| 20 | +static VALUE sym_no_good_index_used, sym_no_index_used, sym_query_was_slow; |
20 | 21 | static ID intern_brackets, intern_merge, intern_merge_bang, intern_new_with_args; |
21 | 22 |
|
22 | 23 | #define REQUIRE_INITIALIZED(wrapper) \ |
@@ -581,6 +582,8 @@ static VALUE rb_mysql_client_async_result(VALUE self) { |
581 | 582 | Check_Type(current, T_HASH); |
582 | 583 | resultObj = rb_mysql_result_to_obj(self, wrapper->encoding, current, result, Qnil); |
583 | 584 |
|
| 585 | + rb_mysql_set_server_query_flags(wrapper->client, resultObj); |
| 586 | + |
584 | 587 | return resultObj; |
585 | 588 | } |
586 | 589 |
|
@@ -1412,6 +1415,10 @@ void init_mysql2_client() { |
1412 | 1415 | sym_array = ID2SYM(rb_intern("array")); |
1413 | 1416 | sym_stream = ID2SYM(rb_intern("stream")); |
1414 | 1417 |
|
| 1418 | + sym_no_good_index_used = ID2SYM(rb_intern("no_good_index_used")); |
| 1419 | + sym_no_index_used = ID2SYM(rb_intern("no_index_used")); |
| 1420 | + sym_query_was_slow = ID2SYM(rb_intern("query_was_slow")); |
| 1421 | + |
1415 | 1422 | intern_brackets = rb_intern("[]"); |
1416 | 1423 | intern_merge = rb_intern("merge"); |
1417 | 1424 | intern_merge_bang = rb_intern("merge!"); |
@@ -1558,3 +1565,29 @@ void init_mysql2_client() { |
1558 | 1565 | rb_const_set(cMysql2Client, rb_intern("SSL_MODE_VERIFY_IDENTITY"), INT2NUM(0)); |
1559 | 1566 | #endif |
1560 | 1567 | } |
| 1568 | + |
| 1569 | +#define flag_to_bool(f) ((client->server_status & f) ? Qtrue : Qfalse) |
| 1570 | + |
| 1571 | +void rb_mysql_set_server_query_flags(MYSQL *client, VALUE result) { |
| 1572 | + VALUE server_flags = rb_hash_new(); |
| 1573 | + |
| 1574 | +#ifdef SERVER_QUERY_NO_GOOD_INDEX_USED |
| 1575 | + rb_hash_aset(server_flags, sym_no_good_index_used, flag_to_bool(SERVER_QUERY_NO_GOOD_INDEX_USED)); |
| 1576 | +#else |
| 1577 | + rb_hash_aset(server_flags, sym_no_good_index_used, Qnil); |
| 1578 | +#endif |
| 1579 | + |
| 1580 | +#ifdef SERVER_QUERY_NO_INDEX_USED |
| 1581 | + rb_hash_aset(server_flags, sym_no_index_used, flag_to_bool(SERVER_QUERY_NO_INDEX_USED)); |
| 1582 | +#else |
| 1583 | + rb_hash_aset(server_flags, sym_no_index_used, Qnil); |
| 1584 | +#endif |
| 1585 | + |
| 1586 | +#ifdef SERVER_QUERY_WAS_SLOW |
| 1587 | + rb_hash_aset(server_flags, sym_query_was_slow, flag_to_bool(SERVER_QUERY_WAS_SLOW)); |
| 1588 | +#else |
| 1589 | + rb_hash_aset(server_flags, sym_query_was_slow, Qnil); |
| 1590 | +#endif |
| 1591 | + |
| 1592 | + rb_iv_set(result, "@server_flags", server_flags); |
| 1593 | +} |
0 commit comments