activerecord-jdbc-adapter 51.5-java → 51.6-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/lib/arjdbc/abstract/database_statements.rb +2 -2
- data/lib/arjdbc/mysql/connection_methods.rb +1 -0
- data/lib/arjdbc/postgresql/connection_methods.rb +1 -0
- data/lib/arjdbc/sqlite3/connection_methods.rb +1 -0
- data/lib/arjdbc/version.rb +1 -1
- data/rakelib/rails.rake +1 -1
- data/src/java/arjdbc/jdbc/RubyJdbcConnection.java +50 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b206f6a18834412334b5f75ddea61ad3861e8f660ded31b1b939c1eb8352e26
|
4
|
+
data.tar.gz: a0ac42fb724004caf9830e71d46d53b6c97bc310b228d12df4386d18038ff06c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8613d0eae95966bb38fc21f42b5edb444bfa2ad0a69a72b95806937fa743c9d374b4c3ce64b43c61fd6c3e0fa26ab449a57de2d4dd4cd43388a91b58f6f95d2e
|
7
|
+
data.tar.gz: f7de5519ede844cca94bd21209971facfcfdd4f0e6408e8a756159dce596baa15458a2b422faf15cf9f0da9b8ebe08a38222a67af1730acfb6efd2fa280a2c10
|
data/.gitignore
CHANGED
@@ -13,10 +13,10 @@ module ArJdbc
|
|
13
13
|
binds = convert_legacy_binds_to_attributes(binds) if binds.first.is_a?(Array)
|
14
14
|
|
15
15
|
if without_prepared_statement?(binds)
|
16
|
-
log(sql, name) { @connection.
|
16
|
+
log(sql, name) { @connection.execute_insert_pk(sql, pk) }
|
17
17
|
else
|
18
18
|
log(sql, name, binds) do
|
19
|
-
@connection.
|
19
|
+
@connection.execute_insert_pk(sql, binds, pk)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
ArJdbc::ConnectionMethods.module_eval do
|
3
3
|
def mysql_connection(config)
|
4
|
+
config = config.deep_dup
|
4
5
|
# NOTE: this isn't "really" necessary but Rails (in tests) assumes being able to :
|
5
6
|
# ActiveRecord::Base.mysql2_connection ActiveRecord::Base.configurations['arunit'].merge(database: ...)
|
6
7
|
config = symbolize_keys_if_necessary(config)
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
ArJdbc::ConnectionMethods.module_eval do
|
3
3
|
def postgresql_connection(config)
|
4
|
+
config = config.deep_dup
|
4
5
|
# NOTE: this isn't "really" necessary but Rails (in tests) assumes being able to :
|
5
6
|
# ActiveRecord::Base.postgresql_connection ActiveRecord::Base.configurations['arunit'].merge(:insert_returning => false)
|
6
7
|
# ... while using symbols by default but than configurations returning string keys ;(
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
ArJdbc::ConnectionMethods.module_eval do
|
3
3
|
def sqlite3_connection(config)
|
4
|
+
config = config.deep_dup
|
4
5
|
config[:adapter_spec] ||= ::ArJdbc::SQLite3
|
5
6
|
config[:adapter_class] = ActiveRecord::ConnectionAdapters::SQLite3Adapter unless config.key?(:adapter_class)
|
6
7
|
|
data/lib/arjdbc/version.rb
CHANGED
data/rakelib/rails.rake
CHANGED
@@ -51,7 +51,7 @@ namespace :rails do
|
|
51
51
|
ruby_opts_string += " -C \"#{ar_path}\""
|
52
52
|
ruby_opts_string += " -rbundler/setup"
|
53
53
|
ruby_opts_string += " -rminitest -rminitest/excludes" unless ENV['NO_EXCLUDES'].eql?('true')
|
54
|
-
file_list = ENV["TEST"] ? FileList[ ENV["TEST"] ] : test_files_finder.call
|
54
|
+
file_list = ENV["TEST"] ? FileList[ ENV["TEST"].split(',') ] : test_files_finder.call
|
55
55
|
file_list_string = file_list.map { |fn| "\"#{fn}\"" }.join(' ')
|
56
56
|
# test_loader_code = "-e \"ARGV.each{|f| require f}\"" # :direct
|
57
57
|
option_list = ( ENV["TESTOPTS"] || ENV["TESTOPT"] || ENV["TEST_OPTS"] || '' )
|
@@ -727,7 +727,10 @@ public class RubyJdbcConnection extends RubyObject {
|
|
727
727
|
|
728
728
|
private void connectImpl(final boolean forceConnection) throws SQLException {
|
729
729
|
setConnection( forceConnection ? newConnection() : null );
|
730
|
-
if (
|
730
|
+
if (forceConnection) {
|
731
|
+
if (getConnectionImpl() == null) throw new SQLException("Didn't get a connection. Wrong URL?");
|
732
|
+
configureConnection();
|
733
|
+
}
|
731
734
|
}
|
732
735
|
|
733
736
|
@JRubyMethod(name = "read_only?")
|
@@ -885,15 +888,31 @@ public class RubyJdbcConnection extends RubyObject {
|
|
885
888
|
return mapQueryResult(context, connection, resultSet);
|
886
889
|
}
|
887
890
|
|
891
|
+
private static String[] createStatementPk(IRubyObject pk) {
|
892
|
+
String[] statementPk;
|
893
|
+
if (pk instanceof RubyArray) {
|
894
|
+
RubyArray ary = (RubyArray) pk;
|
895
|
+
int size = ary.size();
|
896
|
+
statementPk = new String[size];
|
897
|
+
for (int i = 0; i < size; i++) {
|
898
|
+
statementPk[i] = sqlString(ary.eltInternal(i));
|
899
|
+
}
|
900
|
+
} else {
|
901
|
+
statementPk = new String[] { sqlString(pk) };
|
902
|
+
}
|
903
|
+
return statementPk;
|
904
|
+
}
|
905
|
+
|
888
906
|
/**
|
889
907
|
* Executes an INSERT SQL statement
|
890
908
|
* @param context
|
891
909
|
* @param sql
|
910
|
+
* @param pk Rails PK
|
892
911
|
* @return ActiveRecord::Result
|
893
912
|
* @throws SQLException
|
894
913
|
*/
|
895
|
-
@JRubyMethod(name = "
|
896
|
-
public IRubyObject
|
914
|
+
@JRubyMethod(name = "execute_insert_pk", required = 2)
|
915
|
+
public IRubyObject execute_insert_pk(final ThreadContext context, final IRubyObject sql, final IRubyObject pk) {
|
897
916
|
return withConnection(context, new Callable<IRubyObject>() {
|
898
917
|
public IRubyObject call(final Connection connection) throws SQLException {
|
899
918
|
Statement statement = null;
|
@@ -901,7 +920,13 @@ public class RubyJdbcConnection extends RubyObject {
|
|
901
920
|
try {
|
902
921
|
|
903
922
|
statement = createStatement(context, connection);
|
904
|
-
|
923
|
+
|
924
|
+
if (pk == context.nil || pk == context.fals || !supportsGeneratedKeys(connection)) {
|
925
|
+
statement.executeUpdate(query, Statement.RETURN_GENERATED_KEYS);
|
926
|
+
} else {
|
927
|
+
statement.executeUpdate(query, createStatementPk(pk));
|
928
|
+
}
|
929
|
+
|
905
930
|
return mapGeneratedKeys(context, connection, statement);
|
906
931
|
|
907
932
|
} catch (final SQLException e) {
|
@@ -914,23 +939,35 @@ public class RubyJdbcConnection extends RubyObject {
|
|
914
939
|
});
|
915
940
|
}
|
916
941
|
|
942
|
+
@Deprecated
|
943
|
+
@JRubyMethod(name = "execute_insert", required = 1)
|
944
|
+
public IRubyObject execute_insert(final ThreadContext context, final IRubyObject sql) {
|
945
|
+
return execute_insert_pk(context, sql, context.nil);
|
946
|
+
}
|
947
|
+
|
917
948
|
/**
|
918
949
|
* Executes an INSERT SQL statement using a prepared statement
|
919
950
|
* @param context
|
920
951
|
* @param sql
|
921
952
|
* @param binds RubyArray of values to be bound to the query
|
953
|
+
* @param pk Rails PK
|
922
954
|
* @return ActiveRecord::Result
|
923
955
|
* @throws SQLException
|
924
956
|
*/
|
925
|
-
@JRubyMethod(name = "
|
926
|
-
public IRubyObject
|
957
|
+
@JRubyMethod(name = "execute_insert_pk", required = 3)
|
958
|
+
public IRubyObject execute_insert_pk(final ThreadContext context, final IRubyObject sql, final IRubyObject binds,
|
959
|
+
final IRubyObject pk) {
|
927
960
|
return withConnection(context, new Callable<IRubyObject>() {
|
928
961
|
public IRubyObject call(final Connection connection) throws SQLException {
|
929
962
|
PreparedStatement statement = null;
|
930
963
|
final String query = sqlString(sql);
|
931
964
|
try {
|
965
|
+
if (pk == context.nil || pk == context.fals || !supportsGeneratedKeys(connection)) {
|
966
|
+
statement = connection.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
|
967
|
+
} else {
|
968
|
+
statement = connection.prepareStatement(query, createStatementPk(pk));
|
969
|
+
}
|
932
970
|
|
933
|
-
statement = connection.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
|
934
971
|
setStatementParameters(context, connection, statement, (RubyArray) binds);
|
935
972
|
statement.executeUpdate();
|
936
973
|
return mapGeneratedKeys(context, connection, statement);
|
@@ -945,6 +982,12 @@ public class RubyJdbcConnection extends RubyObject {
|
|
945
982
|
});
|
946
983
|
}
|
947
984
|
|
985
|
+
@Deprecated
|
986
|
+
@JRubyMethod(name = "execute_insert", required = 2)
|
987
|
+
public IRubyObject execute_insert(final ThreadContext context, final IRubyObject binds, final IRubyObject sql) {
|
988
|
+
return execute_insert_pk(context, sql, binds, context.nil);
|
989
|
+
}
|
990
|
+
|
948
991
|
/**
|
949
992
|
* Executes an UPDATE (DELETE) SQL statement
|
950
993
|
* @param context
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-jdbc-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '51.
|
4
|
+
version: '51.6'
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Nick Sieger, Ola Bini, Karol Bucek and JRuby contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-12-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|