Skip to content

Commit cb0498d

Browse files
committed
Mysql, fix active? method, it was forcing to reconnect when it should not
1 parent c24b09b commit cb0498d

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

lib/arjdbc/abstract/database_statements.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def convert_legacy_binds_to_attributes(binds)
104104
end
105105
end
106106

107-
def raw_execute(sql, name, async: false, allow_retry: false, materialize_transactions: false)
107+
def raw_execute(sql, name, async: false, allow_retry: false, materialize_transactions: true)
108108
log(sql, name, async: async) do
109109
with_raw_connection(allow_retry: allow_retry, materialize_transactions: materialize_transactions) do |conn|
110110
conn.execute(sql)

lib/arjdbc/mysql/adapter.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ def _quote(value)
199199
#++
200200

201201
def active?
202-
!(@raw_connection.nil? || @raw_connection.closed?) && @lock.synchronize { @raw_connection&.execute_query("/* ping */ SELECT 1") } || false
202+
!(@raw_connection.nil? || @raw_connection.closed?) && @lock.synchronize { @raw_connection&.ping } || false
203203
end
204204

205205
alias :reset! :reconnect!

src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,17 @@ protected DriverWrapper newDriverWrapper(final ThreadContext context, final Stri
119119
return driverWrapper;
120120
}
121121

122+
@JRubyMethod(name = "ping")
123+
public RubyBoolean db_ping(final ThreadContext context) {
124+
final Connection connection = getConnection(true);
125+
if (connection == null) return context.fals;
126+
127+
// NOTE: It seems only `connection.isValid(aliveTimeout)` is needed
128+
// for JDBC 4.0 and up. https://jira.mariadb.org/browse/CONJ-51
129+
130+
return context.runtime.newBoolean(isConnectionValid(context, connection));
131+
}
132+
122133
private static transient Class MYSQL_CONNECTION;
123134
private static transient Boolean MYSQL_CONNECTION_FOUND;
124135

0 commit comments

Comments
 (0)