activerecord-jdbc-adapter 72.1-java → 81.0.pre1-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/.github/workflows/ruby.yml +129 -24
- data/.mise.toml +3 -0
- data/Gemfile +42 -47
- data/README.md +4 -2
- data/RUNNING_TESTS.md +9 -1
- data/Rakefile +63 -15
- data/activerecord-jdbc-adapter.gemspec +2 -2
- data/lib/arjdbc/abstract/core.rb +1 -1
- data/lib/arjdbc/abstract/database_statements.rb +22 -7
- data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
- data/lib/arjdbc/mysql/adapter_hash_config.rb +1 -2
- data/lib/arjdbc/postgresql/adapter.rb +4 -1
- data/lib/arjdbc/postgresql/schema_statements.rb +17 -0
- data/lib/arjdbc/sqlite3/adapter.rb +61 -11
- data/lib/arjdbc/sqlite3/column.rb +1 -1
- data/lib/arjdbc/version.rb +1 -1
- data/pom.xml +3 -3
- data/rakelib/db.rake +5 -3
- data/rakelib/rails.rake +0 -1
- data/src/java/arjdbc/ArJdbcModule.java +13 -10
- data/src/java/arjdbc/db2/DB2Module.java +4 -4
- data/src/java/arjdbc/db2/DB2RubyJdbcConnection.java +8 -9
- data/src/java/arjdbc/h2/H2Module.java +2 -1
- data/src/java/arjdbc/h2/H2RubyJdbcConnection.java +8 -7
- data/src/java/arjdbc/hsqldb/HSQLDBModule.java +5 -6
- data/src/java/arjdbc/jdbc/DataSourceConnectionFactory.java +4 -3
- data/src/java/arjdbc/jdbc/DriverWrapper.java +13 -8
- data/src/java/arjdbc/jdbc/JdbcResult.java +10 -7
- data/src/java/arjdbc/jdbc/RubyJdbcConnection.java +168 -154
- data/src/java/arjdbc/mssql/MSSQLModule.java +3 -3
- data/src/java/arjdbc/mssql/MSSQLRubyJdbcConnection.java +13 -9
- data/src/java/arjdbc/mysql/MySQLModule.java +3 -3
- data/src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java +30 -24
- data/src/java/arjdbc/oracle/OracleModule.java +2 -3
- data/src/java/arjdbc/oracle/OracleRubyJdbcConnection.java +22 -18
- data/src/java/arjdbc/postgresql/PostgreSQLModule.java +2 -3
- data/src/java/arjdbc/postgresql/PostgreSQLResult.java +24 -12
- data/src/java/arjdbc/postgresql/PostgreSQLRubyJdbcConnection.java +16 -12
- data/src/java/arjdbc/sqlite3/SQLite3Module.java +2 -3
- data/src/java/arjdbc/sqlite3/SQLite3RubyJdbcConnection.java +78 -29
- data/src/java/arjdbc/util/DateTimeUtils.java +7 -5
- data/src/java/arjdbc/util/ObjectSupport.java +2 -2
- data/src/java/arjdbc/util/StringHelper.java +1 -1
- metadata +6 -6
- data/.travis.yml +0 -128
|
@@ -14,6 +14,10 @@ import org.jruby.runtime.Block;
|
|
|
14
14
|
import org.jruby.runtime.ThreadContext;
|
|
15
15
|
import org.jruby.runtime.builtin.IRubyObject;
|
|
16
16
|
|
|
17
|
+
import static org.jruby.api.Create.newArray;
|
|
18
|
+
import static org.jruby.api.Create.newArrayNoCopy;
|
|
19
|
+
import static org.jruby.api.Create.newHash;
|
|
20
|
+
|
|
17
21
|
/**
|
|
18
22
|
* This is a base Result class to be returned as the "raw" result.
|
|
19
23
|
* It should be overridden for specific adapters to manage type maps
|
|
@@ -31,7 +35,7 @@ public class JdbcResult extends RubyObject {
|
|
|
31
35
|
protected JdbcResult(ThreadContext context, RubyClass clazz, RubyJdbcConnection connection, ResultSet resultSet) throws SQLException {
|
|
32
36
|
super(context.runtime, clazz);
|
|
33
37
|
|
|
34
|
-
values =
|
|
38
|
+
values = newArray(context);
|
|
35
39
|
this.connection = connection;
|
|
36
40
|
|
|
37
41
|
final ResultSetMetaData resultMetaData = resultSet.getMetaData();
|
|
@@ -86,7 +90,7 @@ public class JdbcResult extends RubyObject {
|
|
|
86
90
|
|
|
87
91
|
for (int i = 0; i < tuples.length; i++) {
|
|
88
92
|
RubyArray currentRow = (RubyArray) values.eltInternal(i);
|
|
89
|
-
RubyHash hash =
|
|
93
|
+
RubyHash hash = newHash(context);
|
|
90
94
|
for (int columnIndex = 0; columnIndex < columnCount; columnIndex++) {
|
|
91
95
|
hash.fastASet(columnNames[columnIndex], currentRow.eltInternal(columnIndex));
|
|
92
96
|
}
|
|
@@ -101,17 +105,16 @@ public class JdbcResult extends RubyObject {
|
|
|
101
105
|
* @throws SQLException throws!
|
|
102
106
|
*/
|
|
103
107
|
private void processResultSet(final ThreadContext context, final ResultSet resultSet) throws SQLException {
|
|
104
|
-
Ruby runtime = context.runtime;
|
|
105
108
|
int columnCount = columnNames.length;
|
|
106
109
|
|
|
107
110
|
while (resultSet.next()) {
|
|
108
111
|
final IRubyObject[] row = new IRubyObject[columnCount];
|
|
109
112
|
|
|
110
113
|
for (int i = 0; i < columnCount; i++) {
|
|
111
|
-
row[i] = connection.jdbcToRuby(context, runtime, i + 1, columnTypes[i], resultSet); // Result Set is 1 based
|
|
114
|
+
row[i] = connection.jdbcToRuby(context, context.runtime, i + 1, columnTypes[i], resultSet); // Result Set is 1 based
|
|
112
115
|
}
|
|
113
116
|
|
|
114
|
-
values.append(
|
|
117
|
+
values.append(context, newArrayNoCopy(context, row));
|
|
115
118
|
}
|
|
116
119
|
}
|
|
117
120
|
|
|
@@ -122,9 +125,9 @@ public class JdbcResult extends RubyObject {
|
|
|
122
125
|
* @throws SQLException can be caused by postgres generating its type map
|
|
123
126
|
*/
|
|
124
127
|
public IRubyObject toARResult(final ThreadContext context) throws SQLException {
|
|
125
|
-
final RubyClass Result = RubyJdbcConnection.getResult(context
|
|
128
|
+
final RubyClass Result = RubyJdbcConnection.getResult(context);
|
|
126
129
|
// FIXME: Is this broken? no copy of an array AR::Result can modify? or should it be frozen?
|
|
127
|
-
final RubyArray rubyColumnNames =
|
|
130
|
+
final RubyArray rubyColumnNames = newArrayNoCopy(context, getColumnNames());
|
|
128
131
|
return Result.newInstance(context, rubyColumnNames, values, columnTypeMap(context), Block.NULL_BLOCK);
|
|
129
132
|
}
|
|
130
133
|
}
|