activerecord-jdbc-alt-adapter 52.4.0-java → 61.0.0-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 +3 -0
- data/.nvimlog +0 -0
- data/.travis.yml +63 -39
- data/Gemfile +11 -4
- data/README.md +55 -35
- data/Rakefile +1 -1
- data/Rakefile.jdbc +8 -1
- data/activerecord-jdbc-adapter.gemspec +6 -9
- data/activerecord-jdbc-alt-adapter.gemspec +9 -12
- data/lib/arel/visitors/postgresql_jdbc.rb +1 -1
- data/lib/arel/visitors/sqlserver.rb +49 -23
- data/lib/arjdbc/abstract/connection_management.rb +7 -0
- data/lib/arjdbc/abstract/core.rb +17 -23
- data/lib/arjdbc/abstract/database_statements.rb +30 -2
- data/lib/arjdbc/abstract/statement_cache.rb +2 -5
- data/lib/arjdbc/abstract/transaction_support.rb +22 -7
- data/lib/arjdbc/db2/column.rb +0 -39
- data/lib/arjdbc/derby/adapter.rb +1 -20
- data/lib/arjdbc/firebird/adapter.rb +0 -21
- data/lib/arjdbc/h2/adapter.rb +0 -15
- data/lib/arjdbc/hsqldb/adapter.rb +0 -14
- data/lib/arjdbc/informix/adapter.rb +0 -23
- data/lib/arjdbc/jdbc/adapter.rb +3 -1
- data/lib/arjdbc/jdbc/adapter_require.rb +3 -1
- data/lib/arjdbc/jdbc/base_ext.rb +3 -1
- data/lib/arjdbc/jdbc/callbacks.rb +2 -0
- data/lib/arjdbc/jdbc/column.rb +2 -0
- data/lib/arjdbc/jdbc/connection.rb +2 -0
- data/lib/arjdbc/jdbc/connection_methods.rb +2 -0
- data/lib/arjdbc/jdbc/error.rb +2 -0
- data/lib/arjdbc/jdbc/extension.rb +2 -0
- data/lib/arjdbc/jdbc/java.rb +3 -1
- data/lib/arjdbc/jdbc/railtie.rb +3 -1
- data/lib/arjdbc/jdbc/rake_tasks.rb +3 -1
- data/lib/arjdbc/jdbc/serialized_attributes_helper.rb +3 -1
- data/lib/arjdbc/jdbc/type_cast.rb +2 -0
- data/lib/arjdbc/jdbc/type_converter.rb +2 -0
- data/lib/arjdbc/mssql.rb +3 -1
- data/lib/arjdbc/mssql/adapter.rb +114 -36
- data/lib/arjdbc/mssql/column.rb +19 -1
- data/lib/arjdbc/mssql/connection_methods.rb +10 -2
- data/lib/arjdbc/mssql/database_limits.rb +9 -0
- data/lib/arjdbc/mssql/database_statements.rb +44 -6
- data/lib/arjdbc/mssql/errors.rb +2 -0
- data/lib/arjdbc/mssql/explain_support.rb +3 -1
- data/lib/arjdbc/mssql/extensions/attribute_methods.rb +6 -2
- data/lib/arjdbc/mssql/extensions/calculations.rb +2 -0
- data/lib/arjdbc/mssql/quoting.rb +38 -0
- data/lib/arjdbc/mssql/schema_creation.rb +25 -3
- data/lib/arjdbc/mssql/schema_definitions.rb +10 -0
- data/lib/arjdbc/mssql/schema_dumper.rb +2 -0
- data/lib/arjdbc/mssql/schema_statements.rb +92 -22
- data/lib/arjdbc/mssql/transaction.rb +2 -0
- data/lib/arjdbc/mssql/types.rb +2 -0
- data/lib/arjdbc/mssql/types/binary_types.rb +2 -0
- data/lib/arjdbc/mssql/types/date_and_time_types.rb +2 -0
- data/lib/arjdbc/mssql/types/deprecated_types.rb +2 -0
- data/lib/arjdbc/mssql/types/numeric_types.rb +2 -0
- data/lib/arjdbc/mssql/types/string_types.rb +2 -0
- data/lib/arjdbc/mssql/utils.rb +2 -0
- data/lib/arjdbc/mysql/adapter.rb +59 -21
- data/lib/arjdbc/mysql/connection_methods.rb +6 -1
- data/lib/arjdbc/postgresql/adapter.rb +257 -219
- data/lib/arjdbc/postgresql/base/array_decoder.rb +2 -0
- data/lib/arjdbc/postgresql/base/array_encoder.rb +4 -2
- data/lib/arjdbc/postgresql/base/array_parser.rb +4 -2
- data/lib/arjdbc/postgresql/base/pgconn.rb +2 -0
- data/lib/arjdbc/postgresql/column.rb +6 -4
- data/lib/arjdbc/postgresql/connection_methods.rb +1 -0
- data/lib/arjdbc/postgresql/name.rb +2 -0
- data/lib/arjdbc/postgresql/oid_types.rb +7 -4
- data/lib/arjdbc/sqlite3/adapter.rb +266 -221
- data/lib/arjdbc/sqlite3/connection_methods.rb +26 -4
- data/lib/arjdbc/tasks/databases.rake +21 -13
- data/lib/arjdbc/tasks/mssql_database_tasks.rb +126 -25
- data/lib/arjdbc/util/quoted_cache.rb +3 -1
- data/lib/arjdbc/util/serialized_attributes.rb +3 -1
- data/lib/arjdbc/util/table_copier.rb +3 -1
- data/lib/arjdbc/version.rb +3 -1
- data/pom.xml +4 -4
- data/rakelib/01-tomcat.rake +2 -2
- data/rakelib/rails.rake +1 -1
- data/src/java/arjdbc/ArJdbcModule.java +5 -5
- data/src/java/arjdbc/jdbc/DriverWrapper.java +1 -9
- data/src/java/arjdbc/jdbc/RubyJdbcConnection.java +549 -691
- data/src/java/arjdbc/mssql/MSSQLRubyJdbcConnection.java +88 -0
- data/src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java +13 -23
- data/src/java/arjdbc/postgresql/PostgreSQLRubyJdbcConnection.java +125 -53
- data/src/java/arjdbc/sqlite3/SQLite3RubyJdbcConnection.java +97 -103
- data/src/java/arjdbc/util/DateTimeUtils.java +12 -4
- metadata +10 -18
|
@@ -100,55 +100,53 @@ public class SQLite3RubyJdbcConnection extends RubyJdbcConnection {
|
|
|
100
100
|
public IRubyObject encoding(final ThreadContext context) throws SQLException {
|
|
101
101
|
if (encoding != null) return encoding;
|
|
102
102
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
} catch (final SQLException e) {
|
|
120
|
-
debugErrorSQL(context, query);
|
|
121
|
-
throw e;
|
|
122
|
-
} finally {
|
|
123
|
-
close(resultSet);
|
|
124
|
-
close(statement);
|
|
103
|
+
// FIXME: How many single result queries do we have in Java?
|
|
104
|
+
return withConnection(context, connection -> {
|
|
105
|
+
String query = "PRAGMA encoding";
|
|
106
|
+
Statement statement = null;
|
|
107
|
+
ResultSet resultSet = null;
|
|
108
|
+
try {
|
|
109
|
+
statement = createStatement(context, connection);
|
|
110
|
+
if (statement.execute(query)) {
|
|
111
|
+
// Enebo: I do not think we need to worry about failure here?
|
|
112
|
+
resultSet = statement.getResultSet();
|
|
113
|
+
if (!resultSet.next()) return context.nil;
|
|
114
|
+
String encodingString = resultSet.getString(1);
|
|
115
|
+
|
|
116
|
+
encoding = cachedString(context, encodingString);
|
|
117
|
+
|
|
118
|
+
return encoding;
|
|
125
119
|
}
|
|
126
|
-
|
|
127
|
-
|
|
120
|
+
} catch (final SQLException e) {
|
|
121
|
+
debugErrorSQL(context, query);
|
|
122
|
+
throw e;
|
|
123
|
+
} finally {
|
|
124
|
+
close(resultSet);
|
|
125
|
+
close(statement);
|
|
128
126
|
}
|
|
127
|
+
|
|
128
|
+
return context.nil;
|
|
129
129
|
});
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
@JRubyMethod(name = {"last_insert_rowid", "last_insert_id"}, alias = "last_insert_row_id")
|
|
133
133
|
public IRubyObject last_insert_rowid(final ThreadContext context)
|
|
134
134
|
throws SQLException {
|
|
135
|
-
return withConnection(context,
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
throw e;
|
|
149
|
-
}
|
|
150
|
-
finally { close(genKeys); close(statement); }
|
|
135
|
+
return withConnection(context, connection -> {
|
|
136
|
+
Statement statement = null; ResultSet genKeys = null;
|
|
137
|
+
try {
|
|
138
|
+
statement = connection.createStatement();
|
|
139
|
+
// NOTE: strangely this will work and has been used for quite some time :
|
|
140
|
+
//return mapGeneratedKeys(context.getRuntime(), connection, statement, true);
|
|
141
|
+
// but we should assume SQLite JDBC will prefer sane API usage eventually :
|
|
142
|
+
genKeys = statement.executeQuery("SELECT last_insert_rowid()");
|
|
143
|
+
return doMapGeneratedKeys(context.runtime, genKeys, true);
|
|
144
|
+
}
|
|
145
|
+
catch (final SQLException e) {
|
|
146
|
+
debugMessage(context.runtime, "failed to get generated keys: ", e);
|
|
147
|
+
throw e;
|
|
151
148
|
}
|
|
149
|
+
finally { close(genKeys); close(statement); }
|
|
152
150
|
});
|
|
153
151
|
}
|
|
154
152
|
|
|
@@ -183,66 +181,64 @@ public class SQLite3RubyJdbcConnection extends RubyJdbcConnection {
|
|
|
183
181
|
final String tableName = table;
|
|
184
182
|
final String schemaName = schema;
|
|
185
183
|
// return super.indexes(context, tableName, name, schemaName);
|
|
186
|
-
return withConnection(context,
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
final RubyClass IndexDefinition = getIndexDefinition(runtime);
|
|
184
|
+
return withConnection(context, (Callable<IRubyObject>) connection -> {
|
|
185
|
+
final Ruby runtime = context.runtime;
|
|
186
|
+
final RubyClass IndexDefinition = getIndexDefinition(runtime);
|
|
190
187
|
|
|
191
|
-
|
|
188
|
+
final TableName table1 = extractTableName(connection, null, schemaName, tableName);
|
|
192
189
|
|
|
193
|
-
|
|
190
|
+
final List<RubyString> primaryKeys = primaryKeys(context, connection, table1);
|
|
194
191
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
}
|
|
205
|
-
throw e;
|
|
192
|
+
final DatabaseMetaData metaData = connection.getMetaData();
|
|
193
|
+
ResultSet indexInfoSet;
|
|
194
|
+
try {
|
|
195
|
+
indexInfoSet = metaData.getIndexInfo(table1.catalog, table1.schema, table1.name, false, true);
|
|
196
|
+
}
|
|
197
|
+
catch (SQLException e) {
|
|
198
|
+
final String msg = e.getMessage();
|
|
199
|
+
if ( msg != null && msg.startsWith("[SQLITE_ERROR] SQL error or missing database") ) {
|
|
200
|
+
return RubyArray.newEmptyArray(runtime); // on 3.8.7 getIndexInfo fails if table has no indexes
|
|
206
201
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
String indexName = indexInfoSet.getString(INDEX_INFO_NAME);
|
|
213
|
-
if ( indexName == null ) continue;
|
|
214
|
-
RubyArray currentColumns = null;
|
|
202
|
+
throw e;
|
|
203
|
+
}
|
|
204
|
+
final RubyArray indexes = RubyArray.newArray(runtime, 8);
|
|
205
|
+
try {
|
|
206
|
+
String currentIndex = null;
|
|
215
207
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
208
|
+
while ( indexInfoSet.next() ) {
|
|
209
|
+
String indexName = indexInfoSet.getString(INDEX_INFO_NAME);
|
|
210
|
+
if ( indexName == null ) continue;
|
|
211
|
+
RubyArray currentColumns = null;
|
|
219
212
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
213
|
+
final String columnName = indexInfoSet.getString(INDEX_INFO_COLUMN_NAME);
|
|
214
|
+
final RubyString rubyColumnName = cachedString(context, columnName);
|
|
215
|
+
if ( primaryKeys.contains(rubyColumnName) ) continue;
|
|
223
216
|
|
|
224
|
-
|
|
217
|
+
// We are working on a new index
|
|
218
|
+
if ( ! indexName.equals(currentIndex) ) {
|
|
219
|
+
currentIndex = indexName;
|
|
225
220
|
|
|
226
|
-
|
|
221
|
+
String indexTableName = indexInfoSet.getString(INDEX_INFO_TABLE_NAME);
|
|
227
222
|
|
|
228
|
-
|
|
229
|
-
cachedString(context, indexTableName), // table_name
|
|
230
|
-
cachedString(context, indexName), // index_name
|
|
231
|
-
nonUnique ? runtime.getFalse() : runtime.getTrue(), // unique
|
|
232
|
-
currentColumns = RubyArray.newArray(runtime, 4) // [] column names
|
|
233
|
-
};
|
|
223
|
+
final boolean nonUnique = indexInfoSet.getBoolean(INDEX_INFO_NON_UNIQUE);
|
|
234
224
|
|
|
235
|
-
|
|
236
|
-
|
|
225
|
+
IRubyObject[] args = new IRubyObject[] {
|
|
226
|
+
cachedString(context, indexTableName), // table_name
|
|
227
|
+
cachedString(context, indexName), // index_name
|
|
228
|
+
nonUnique ? context.fals : context.tru, // unique
|
|
229
|
+
currentColumns = RubyArray.newArray(runtime, 4) // [] column names
|
|
230
|
+
};
|
|
237
231
|
|
|
238
|
-
|
|
239
|
-
if ( currentColumns != null ) currentColumns.append(rubyColumnName);
|
|
232
|
+
indexes.append( IndexDefinition.newInstance(context, args, Block.NULL_BLOCK) ); // IndexDefinition.new
|
|
240
233
|
}
|
|
241
234
|
|
|
242
|
-
|
|
235
|
+
// one or more columns can be associated with an index
|
|
236
|
+
if ( currentColumns != null ) currentColumns.append(rubyColumnName);
|
|
237
|
+
}
|
|
243
238
|
|
|
244
|
-
|
|
245
|
-
|
|
239
|
+
return indexes;
|
|
240
|
+
|
|
241
|
+
} finally { close(indexInfoSet); }
|
|
246
242
|
});
|
|
247
243
|
}
|
|
248
244
|
|
|
@@ -374,10 +370,9 @@ public class SQLite3RubyJdbcConnection extends RubyJdbcConnection {
|
|
|
374
370
|
}
|
|
375
371
|
|
|
376
372
|
@Override
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
);
|
|
373
|
+
protected boolean resetSavepoints(final ThreadContext context, final Connection connection) throws SQLException {
|
|
374
|
+
connection.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
|
|
375
|
+
return super.resetSavepoints(context, connection);
|
|
381
376
|
}
|
|
382
377
|
|
|
383
378
|
@Override
|
|
@@ -390,8 +385,9 @@ public class SQLite3RubyJdbcConnection extends RubyJdbcConnection {
|
|
|
390
385
|
"create_savepoint (without name) not implemented!"
|
|
391
386
|
);
|
|
392
387
|
}
|
|
393
|
-
|
|
388
|
+
Statement statement = null;
|
|
394
389
|
try {
|
|
390
|
+
final Connection connection = getConnectionInternal(true);
|
|
395
391
|
connection.setAutoCommit(false);
|
|
396
392
|
// NOTE: JDBC driver does not support setSavepoint(String) :
|
|
397
393
|
( statement = connection.createStatement() ).execute("SAVEPOINT " + name.toString());
|
|
@@ -411,12 +407,13 @@ public class SQLite3RubyJdbcConnection extends RubyJdbcConnection {
|
|
|
411
407
|
public IRubyObject rollback_savepoint(final ThreadContext context, final IRubyObject name) {
|
|
412
408
|
if ( useSavepointAPI(context) ) return super.rollback_savepoint(context, name);
|
|
413
409
|
|
|
414
|
-
|
|
410
|
+
Statement statement = null;
|
|
415
411
|
try {
|
|
416
412
|
if ( getSavepoints(context).get(name) == null ) {
|
|
417
413
|
throw newSavepointNotSetError(context, name, "rollback");
|
|
418
414
|
}
|
|
419
415
|
// NOTE: JDBC driver does not implement rollback(Savepoint) :
|
|
416
|
+
final Connection connection = getConnectionInternal(true);
|
|
420
417
|
( statement = connection.createStatement() ).execute("ROLLBACK TO SAVEPOINT " + name.toString());
|
|
421
418
|
|
|
422
419
|
return context.nil;
|
|
@@ -434,12 +431,13 @@ public class SQLite3RubyJdbcConnection extends RubyJdbcConnection {
|
|
|
434
431
|
public IRubyObject release_savepoint(final ThreadContext context, final IRubyObject name) {
|
|
435
432
|
if ( useSavepointAPI(context) ) return super.release_savepoint(context, name);
|
|
436
433
|
|
|
437
|
-
|
|
434
|
+
Statement statement = null;
|
|
438
435
|
try {
|
|
439
436
|
if ( getSavepoints(context).remove(name) == null ) {
|
|
440
437
|
throw newSavepointNotSetError(context, name, "release");
|
|
441
438
|
}
|
|
442
439
|
// NOTE: JDBC driver does not implement release(Savepoint) :
|
|
440
|
+
final Connection connection = getConnectionInternal(true);
|
|
443
441
|
( statement = connection.createStatement() ).execute("RELEASE SAVEPOINT " + name.toString());
|
|
444
442
|
return context.nil;
|
|
445
443
|
} catch (SQLException e) {
|
|
@@ -453,19 +451,15 @@ public class SQLite3RubyJdbcConnection extends RubyJdbcConnection {
|
|
|
453
451
|
// a consistent JDBC layer.
|
|
454
452
|
@JRubyMethod(name = "supports_savepoints?")
|
|
455
453
|
public IRubyObject supports_savepoints_p(final ThreadContext context) throws SQLException {
|
|
456
|
-
return context.
|
|
454
|
+
return context.tru;
|
|
457
455
|
}
|
|
458
456
|
|
|
459
|
-
@
|
|
460
|
-
|
|
461
|
-
final Connection connection
|
|
462
|
-
|
|
463
|
-
final IRubyObject attribute, final int type) throws SQLException {
|
|
464
|
-
// Apparently active record stores booleans in sqlite as 't' and 'f' instead of the built in 1/0
|
|
465
|
-
statement.setString(index, value.isTrue() ? "t" : "f");
|
|
457
|
+
@JRubyMethod(name = "readonly?")
|
|
458
|
+
public IRubyObject readonly_p(final ThreadContext context) throws SQLException {
|
|
459
|
+
final Connection connection = getConnection(true);
|
|
460
|
+
return context.runtime.newBoolean(connection.isReadOnly());
|
|
466
461
|
}
|
|
467
462
|
|
|
468
|
-
|
|
469
463
|
@Override
|
|
470
464
|
protected void setDecimalParameter(final ThreadContext context,
|
|
471
465
|
final Connection connection, final PreparedStatement statement,
|
|
@@ -518,7 +512,7 @@ public class SQLite3RubyJdbcConnection extends RubyJdbcConnection {
|
|
|
518
512
|
final int index, IRubyObject value,
|
|
519
513
|
final IRubyObject attribute, final int type) throws SQLException {
|
|
520
514
|
|
|
521
|
-
if (value instanceof RubyTime) value = ((RubyTime) value).strftime(TIMESTAMP_FORMAT);
|
|
515
|
+
if (value instanceof RubyTime) value = ((RubyTime) value).strftime(context, TIMESTAMP_FORMAT);
|
|
522
516
|
|
|
523
517
|
setStringParameter(context, connection, statement, index, value, attribute, type);
|
|
524
518
|
}
|
|
@@ -37,6 +37,7 @@ import org.jruby.Ruby;
|
|
|
37
37
|
import org.jruby.RubyFloat;
|
|
38
38
|
import org.jruby.RubyString;
|
|
39
39
|
import org.jruby.RubyTime;
|
|
40
|
+
import org.jruby.ext.date.RubyDateTime;
|
|
40
41
|
import org.jruby.javasupport.Java;
|
|
41
42
|
import org.jruby.runtime.Block;
|
|
42
43
|
import org.jruby.runtime.ThreadContext;
|
|
@@ -632,14 +633,21 @@ public abstract class DateTimeUtils {
|
|
|
632
633
|
*/
|
|
633
634
|
public static String timestampTimeToString(final ThreadContext context,
|
|
634
635
|
final IRubyObject value, DateTimeZone zone, boolean withZone) {
|
|
635
|
-
|
|
636
|
-
|
|
636
|
+
DateTime dt;
|
|
637
|
+
int usec = 0;
|
|
638
|
+
if (value instanceof RubyDateTime) {
|
|
639
|
+
dt = ((RubyDateTime) value).getDateTime();
|
|
640
|
+
} else {
|
|
641
|
+
RubyTime timeValue = toTime(context, value);
|
|
642
|
+
dt = timeValue.getDateTime();
|
|
643
|
+
usec = (int) timeValue.getUSec();
|
|
644
|
+
}
|
|
637
645
|
|
|
638
646
|
StringBuilder sb = new StringBuilder(36);
|
|
639
647
|
|
|
640
648
|
int year = dt.getYear();
|
|
641
649
|
if (year <= 0) {
|
|
642
|
-
year--;
|
|
650
|
+
if (!(value instanceof RubyDateTime)) year--;
|
|
643
651
|
} else if (zone != null) {
|
|
644
652
|
dt = dateTimeInZone(dt, zone);
|
|
645
653
|
year = dt.getYear();
|
|
@@ -659,7 +667,7 @@ public abstract class DateTimeUtils {
|
|
|
659
667
|
if (year < 0) sb.append(" BC");
|
|
660
668
|
sb.append(' ');
|
|
661
669
|
|
|
662
|
-
appendTime(sb, chrono, millis,
|
|
670
|
+
appendTime(sb, chrono, millis, usec, withZone);
|
|
663
671
|
|
|
664
672
|
return sb.toString();
|
|
665
673
|
}
|
metadata
CHANGED
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: activerecord-jdbc-alt-adapter
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 61.0.0
|
|
5
5
|
platform: java
|
|
6
6
|
authors:
|
|
7
|
-
- Nick Sieger, Ola Bini, Karol Bucek and JRuby contributors
|
|
7
|
+
- Nick Sieger, Ola Bini, Karol Bucek, Jesse Chavez, and JRuby contributors
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-04-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
15
15
|
requirements:
|
|
16
16
|
- - "~>"
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version:
|
|
19
|
-
- - ">="
|
|
20
|
-
- !ruby/object:Gem::Version
|
|
21
|
-
version: 5.2.3
|
|
18
|
+
version: 6.1.0
|
|
22
19
|
name: activerecord
|
|
23
20
|
prerelease: false
|
|
24
21
|
type: :runtime
|
|
@@ -26,27 +23,23 @@ dependencies:
|
|
|
26
23
|
requirements:
|
|
27
24
|
- - "~>"
|
|
28
25
|
- !ruby/object:Gem::Version
|
|
29
|
-
version:
|
|
30
|
-
- - ">="
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: 5.2.3
|
|
26
|
+
version: 6.1.0
|
|
33
27
|
description: 'Fork of the ActiveRecord JDBC adapter with support for SQL Server and
|
|
34
28
|
Azure SQL, for more information and help look at the README file in the github repository.
|
|
35
29
|
AR-JDBC is a database adapter for Rails'' ActiveRecord component designed to be
|
|
36
30
|
used with JRuby built upon Java''s JDBC API for database access. Provides (ActiveRecord)
|
|
37
|
-
built-in adapters: MySQL,
|
|
38
|
-
databases such as Oracle, SQLServer, DB2, FireBird and even Java (embed) databases:
|
|
39
|
-
Derby, HSQLDB and H2. It allows to connect to virtually any JDBC-compliant database
|
|
40
|
-
with your JRuby on Rails application.'
|
|
31
|
+
built-in adapters: MySQL, PostgreSQL, SQLite3, and SQLServer.'
|
|
41
32
|
email:
|
|
42
33
|
- nick@nicksieger.com
|
|
43
34
|
- ola.bini@gmail.com
|
|
44
35
|
- self@kares.org
|
|
36
|
+
- jesse.chavez.r@gmail.com
|
|
45
37
|
executables: []
|
|
46
38
|
extensions: []
|
|
47
39
|
extra_rdoc_files: []
|
|
48
40
|
files:
|
|
49
41
|
- ".gitignore"
|
|
42
|
+
- ".nvimlog"
|
|
50
43
|
- ".travis.yml"
|
|
51
44
|
- ".yardopts"
|
|
52
45
|
- CONTRIBUTING.md
|
|
@@ -257,7 +250,7 @@ post_install_message:
|
|
|
257
250
|
rdoc_options:
|
|
258
251
|
- "--main"
|
|
259
252
|
- README.md
|
|
260
|
-
- "-
|
|
253
|
+
- "-HN"
|
|
261
254
|
- "-f"
|
|
262
255
|
- darkfish
|
|
263
256
|
require_paths:
|
|
@@ -273,8 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
273
266
|
- !ruby/object:Gem::Version
|
|
274
267
|
version: '0'
|
|
275
268
|
requirements: []
|
|
276
|
-
|
|
277
|
-
rubygems_version: 2.7.10
|
|
269
|
+
rubygems_version: 3.1.6
|
|
278
270
|
signing_key:
|
|
279
271
|
specification_version: 4
|
|
280
272
|
summary: ActiveRecord JDBC adapter, for use within JRuby on Rails and SQL Server
|