activerecord-jdbc-adapter 51.8-java → 52.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -2
  3. data/.travis.yml +26 -51
  4. data/README.md +9 -11
  5. data/Rakefile +19 -74
  6. data/activerecord-jdbc-adapter.gemspec +2 -2
  7. data/lib/active_record/connection_adapters/mssql_adapter.rb +1 -0
  8. data/lib/active_record/connection_adapters/sqlserver_adapter.rb +1 -0
  9. data/lib/arjdbc/abstract/core.rb +2 -12
  10. data/lib/arjdbc/abstract/database_statements.rb +24 -10
  11. data/lib/arjdbc/abstract/statement_cache.rb +4 -4
  12. data/lib/arjdbc/db2/adapter.rb +52 -2
  13. data/lib/arjdbc/jdbc.rb +4 -0
  14. data/lib/arjdbc/jdbc/column.rb +11 -5
  15. data/lib/arjdbc/jdbc/connection_methods.rb +9 -2
  16. data/lib/arjdbc/jdbc/jdbc.rake +4 -0
  17. data/lib/arjdbc/mssql.rb +7 -0
  18. data/lib/arjdbc/mssql/adapter.rb +804 -0
  19. data/lib/arjdbc/mssql/column.rb +200 -0
  20. data/lib/arjdbc/mssql/connection_methods.rb +79 -0
  21. data/lib/arjdbc/mssql/explain_support.rb +99 -0
  22. data/lib/arjdbc/mssql/limit_helpers.rb +231 -0
  23. data/lib/arjdbc/mssql/lock_methods.rb +77 -0
  24. data/lib/arjdbc/mssql/types.rb +343 -0
  25. data/lib/arjdbc/mssql/utils.rb +82 -0
  26. data/lib/arjdbc/mysql/adapter.rb +22 -14
  27. data/lib/arjdbc/mysql/connection_methods.rb +9 -18
  28. data/lib/arjdbc/postgresql/adapter.rb +102 -75
  29. data/lib/arjdbc/postgresql/column.rb +3 -6
  30. data/lib/arjdbc/postgresql/connection_methods.rb +3 -12
  31. data/lib/arjdbc/postgresql/oid_types.rb +12 -86
  32. data/lib/arjdbc/sqlite3/adapter.rb +88 -92
  33. data/lib/arjdbc/sqlite3/connection_methods.rb +0 -1
  34. data/lib/arjdbc/tasks/database_tasks.rb +36 -16
  35. data/lib/arjdbc/tasks/databases.rake +75 -32
  36. data/lib/arjdbc/tasks/databases3.rake +215 -0
  37. data/lib/arjdbc/tasks/databases4.rake +39 -0
  38. data/lib/arjdbc/version.rb +1 -1
  39. data/rakelib/01-tomcat.rake +2 -2
  40. data/rakelib/02-test.rake +3 -0
  41. data/rakelib/compile.rake +70 -0
  42. data/rakelib/db.rake +7 -21
  43. data/rakelib/rails.rake +4 -5
  44. data/src/java/arjdbc/ArJdbcModule.java +15 -5
  45. data/src/java/arjdbc/derby/DerbyRubyJdbcConnection.java +2 -2
  46. data/src/java/arjdbc/jdbc/ConnectionFactory.java +87 -0
  47. data/src/java/arjdbc/jdbc/DataSourceConnectionFactory.java +1 -0
  48. data/src/java/arjdbc/jdbc/RubyJdbcConnection.java +29 -113
  49. data/src/java/arjdbc/mssql/MSSQLRubyJdbcConnection.java +14 -310
  50. data/src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java +2 -2
  51. data/src/java/arjdbc/postgresql/PgResultSetMetaDataWrapper.java +23 -0
  52. data/src/java/arjdbc/postgresql/PostgreSQLResult.java +13 -21
  53. data/src/java/arjdbc/postgresql/PostgreSQLRubyJdbcConnection.java +50 -44
  54. data/src/java/arjdbc/util/DateTimeUtils.java +5 -141
  55. data/src/java/arjdbc/util/QuotingUtils.java +7 -6
  56. metadata +26 -11
  57. data/src/java/arjdbc/jdbc/RubyConnectionFactory.java +0 -61
  58. data/src/java/arjdbc/postgresql/PgDateTimeUtils.java +0 -52
@@ -55,7 +55,6 @@ import org.joda.time.DateTimeZone;
55
55
  import org.jruby.*;
56
56
  import org.jruby.anno.JRubyMethod;
57
57
  import org.jruby.exceptions.RaiseException;
58
- import org.jruby.ext.bigdecimal.RubyBigDecimal;
59
58
  import org.jruby.javasupport.JavaUtil;
60
59
  import org.jruby.runtime.ObjectAllocator;
61
60
  import org.jruby.runtime.ThreadContext;
@@ -101,7 +100,6 @@ public class PostgreSQLRubyJdbcConnection extends arjdbc.jdbc.RubyJdbcConnection
101
100
  POSTGRES_JDBC_TYPE_FOR.put("line", Types.OTHER);
102
101
  POSTGRES_JDBC_TYPE_FOR.put("lseg", Types.OTHER);
103
102
  POSTGRES_JDBC_TYPE_FOR.put("ltree", Types.OTHER);
104
- POSTGRES_JDBC_TYPE_FOR.put("money", Types.OTHER);
105
103
  POSTGRES_JDBC_TYPE_FOR.put("numrange", Types.OTHER);
106
104
  POSTGRES_JDBC_TYPE_FOR.put("path", Types.OTHER);
107
105
  POSTGRES_JDBC_TYPE_FOR.put("point", Types.OTHER);
@@ -282,30 +280,6 @@ public class PostgreSQLRubyJdbcConnection extends arjdbc.jdbc.RubyJdbcConnection
282
280
  return mapExecuteResult(context, connection, resultSet).toARResult(context);
283
281
  }
284
282
 
285
- @Override
286
- protected void setArrayParameter(final ThreadContext context,
287
- final Connection connection, final PreparedStatement statement,
288
- final int index, final IRubyObject value,
289
- final IRubyObject attribute, final int type) throws SQLException {
290
-
291
- final String typeName = resolveArrayBaseTypeName(context, attribute);
292
- final RubyArray valueForDB = (RubyArray) value.callMethod(context, "values");
293
-
294
- Object[] values;
295
- switch (typeName) {
296
- case "datetime":
297
- case "timestamp": {
298
- values = PgDateTimeUtils.timestampStringArray(context, valueForDB);
299
- break;
300
- }
301
- default:
302
- values = valueForDB.toArray();
303
- break;
304
- }
305
-
306
- statement.setArray(index, connection.createArrayOf(typeName, values));
307
- }
308
-
309
283
  @Override
310
284
  protected void setBlobParameter(final ThreadContext context,
311
285
  final Connection connection, final PreparedStatement statement,
@@ -329,9 +303,47 @@ public class PostgreSQLRubyJdbcConnection extends arjdbc.jdbc.RubyJdbcConnection
329
303
  final Connection connection, final PreparedStatement statement,
330
304
  final int index, IRubyObject value,
331
305
  final IRubyObject attribute, final int type) throws SQLException {
332
- // PGJDBC uses strings internally anyway, so using Timestamp doesn't do any good
333
- String tsString = PgDateTimeUtils.timestampValueToString(context, value, null, true);
334
- statement.setObject(index, tsString, Types.OTHER);
306
+
307
+ if ( value instanceof RubyFloat ) {
308
+ final double doubleValue = ( (RubyFloat) value ).getValue();
309
+ if ( Double.isInfinite(doubleValue) ) {
310
+ setTimestampInfinity(statement, index, doubleValue);
311
+ return;
312
+ }
313
+ }
314
+
315
+ RubyTime timeValue = toTime(context, value);
316
+
317
+ final Timestamp timestamp;
318
+
319
+ if (timeValue.getDateTime().getYear() > 0) {
320
+ timeValue = timeInDefaultTimeZone(context, timeValue);
321
+ DateTime dateTime = timeValue.getDateTime();
322
+ timestamp = new Timestamp(dateTime.getMillis());
323
+
324
+ if (timeValue.getNSec() > 0) timestamp.setNanos((int) (timestamp.getNanos() + timeValue.getNSec()));
325
+
326
+ statement.setTimestamp(index, timestamp, getCalendar(dateTime.getZone()));
327
+ }
328
+ else {
329
+ setTimestampBC(statement, index, timeValue);
330
+ }
331
+ }
332
+
333
+ private static void setTimestampBC(final PreparedStatement statement,
334
+ final int index, final RubyTime timeValue) throws SQLException {
335
+ DateTime dateTime = timeValue.getDateTime();
336
+ @SuppressWarnings("deprecated")
337
+ Timestamp timestamp = new Timestamp(dateTime.getYear() - 1900,
338
+ dateTime.getMonthOfYear() - 1,
339
+ dateTime.getDayOfMonth(),
340
+ dateTime.getHourOfDay(),
341
+ dateTime.getMinuteOfHour(),
342
+ dateTime.getSecondOfMinute(),
343
+ dateTime.getMillisOfSecond() * 1_000_000 + (int) timeValue.getNSec()
344
+ );
345
+
346
+ statement.setObject(index, timestamp);
335
347
  }
336
348
 
337
349
  private static void setTimestampInfinity(final PreparedStatement statement,
@@ -353,8 +365,7 @@ public class PostgreSQLRubyJdbcConnection extends arjdbc.jdbc.RubyJdbcConnection
353
365
  final int index, IRubyObject value,
354
366
  final IRubyObject attribute, final int type) throws SQLException {
355
367
  // to handle more fractional second precision than (default) 59.123 only
356
- String timeStr = DateTimeUtils.timeString(context, value, getDefaultTimeZone(context), true);
357
- statement.setObject(index, timeStr, Types.OTHER);
368
+ super.setTimestampParameter(context, connection, statement, index, value, attribute, type);
358
369
  }
359
370
 
360
371
  @Override
@@ -408,7 +419,8 @@ public class PostgreSQLRubyJdbcConnection extends arjdbc.jdbc.RubyJdbcConnection
408
419
  break;
409
420
 
410
421
  case "enum":
411
- statement.setObject(index, value.toString(), Types.OTHER);
422
+ // FIXME: This doesn't work but it gives a better error message than letting it be treated as a PGobject
423
+ statement.setObject(index, value.toString());
412
424
  break;
413
425
 
414
426
  case "interval":
@@ -429,14 +441,6 @@ public class PostgreSQLRubyJdbcConnection extends arjdbc.jdbc.RubyJdbcConnection
429
441
  }
430
442
  break;
431
443
 
432
- case "money":
433
- if (value instanceof RubyBigDecimal) {
434
- statement.setBigDecimal(index, ((RubyBigDecimal) value).getValue());
435
- } else {
436
- setPGobjectParameter(statement, index, value, columnType);
437
- }
438
- break;
439
-
440
444
  case "lseg":
441
445
  pointValues = parseDoubles(value);
442
446
  statement.setObject(index, new PGlseg(pointValues[0], pointValues[1], pointValues[2], pointValues[3]));
@@ -515,7 +519,9 @@ public class PostgreSQLRubyJdbcConnection extends arjdbc.jdbc.RubyJdbcConnection
515
519
  final PreparedStatement statement, final int index,
516
520
  final IRubyObject value, final String columnType) throws SQLException {
517
521
 
518
- final String rangeValue = value.toString();
522
+ // As of AR 5.2 this is a Range object, I defer to the adapter for encoding because of the edge cases
523
+ // of dealing with the specific types in the range
524
+ final String rangeValue = adapter(context).callMethod(context, "encode_range", value).toString();
519
525
  final Object pgRange;
520
526
 
521
527
  switch ( columnType ) {
@@ -535,7 +541,7 @@ public class PostgreSQLRubyJdbcConnection extends arjdbc.jdbc.RubyJdbcConnection
535
541
  pgRange = new Int8RangeType(rangeValue);
536
542
  break;
537
543
  default:
538
- pgRange = new NumRangeType(rangeValue);
544
+ pgRange = new NumRangeType(rangeValue, columnType);
539
545
  }
540
546
 
541
547
  statement.setObject(index, pgRange);
@@ -939,8 +945,8 @@ public class PostgreSQLRubyJdbcConnection extends arjdbc.jdbc.RubyJdbcConnection
939
945
  setType("numrange");
940
946
  }
941
947
 
942
- public NumRangeType(final String value) throws SQLException {
943
- this();
948
+ public NumRangeType(final String value, final String type) throws SQLException {
949
+ setType(type);
944
950
  setValue(value);
945
951
  }
946
952
 
@@ -28,10 +28,8 @@ import java.sql.Time;
28
28
  import java.sql.Timestamp;
29
29
  import java.util.TimeZone;
30
30
 
31
- import org.joda.time.Chronology;
32
31
  import org.joda.time.DateTime;
33
32
  import org.joda.time.DateTimeZone;
34
- import org.joda.time.chrono.GJChronology;
35
33
  import org.joda.time.chrono.ISOChronology;
36
34
  import org.jruby.Ruby;
37
35
  import org.jruby.RubyFloat;
@@ -42,7 +40,6 @@ import org.jruby.runtime.Block;
42
40
  import org.jruby.runtime.ThreadContext;
43
41
  import org.jruby.runtime.builtin.IRubyObject;
44
42
  import org.jruby.util.ByteList;
45
- import org.jruby.util.TypeConverter;
46
43
 
47
44
  import static arjdbc.util.StringHelper.decByte;
48
45
 
@@ -52,20 +49,6 @@ import static arjdbc.util.StringHelper.decByte;
52
49
  */
53
50
  public abstract class DateTimeUtils {
54
51
 
55
- private static final GJChronology CHRONO_ITALY_UTC = GJChronology.getInstance(DateTimeZone.UTC);
56
-
57
- public static RubyTime toTime(final ThreadContext context, final IRubyObject value) {
58
- if (!(value instanceof RubyTime)) { // unlikely
59
- return (RubyTime) TypeConverter.convertToTypeWithCheck(value, context.runtime.getTime(), "to_time");
60
- }
61
- return (RubyTime) value;
62
- }
63
-
64
- public static DateTime dateTimeInZone(final DateTime dateTime, final DateTimeZone zone) {
65
- if (zone == dateTime.getZone()) return dateTime;
66
- return dateTime.withZone(zone);
67
- }
68
-
69
52
  @SuppressWarnings("deprecation")
70
53
  public static ByteList timeToString(final Time time) {
71
54
  final ByteList str = new ByteList(8); // hh:mm:ss
@@ -221,11 +204,9 @@ public abstract class DateTimeUtils {
221
204
  final int hours = time.getHours();
222
205
  final int minutes = time.getMinutes();
223
206
  final int seconds = time.getSeconds();
224
- int nanos = time.getNanos(); // max 999-999-999
225
- final int millis = nanos / 1000000;
226
- nanos = nanos % 1000000;
207
+ final int nanos = time.getNanos(); // max 999-999-999
227
208
 
228
- DateTime dateTime = new DateTime(2000, 1, 1, hours, minutes, seconds, millis, defaultZone);
209
+ DateTime dateTime = new DateTime(2000, 1, 1, hours, minutes, seconds, defaultZone);
229
210
  return RubyTime.newTime(context.runtime, dateTime, nanos);
230
211
  }
231
212
 
@@ -238,11 +219,9 @@ public abstract class DateTimeUtils {
238
219
  final int hours = timestamp.getHours();
239
220
  final int minutes = timestamp.getMinutes();
240
221
  final int seconds = timestamp.getSeconds();
241
- int nanos = timestamp.getNanos(); // max 999-999-999
242
- final int millis = nanos / 1000000;
243
- nanos = nanos % 1000000;
222
+ final int nanos = timestamp.getNanos(); // max 999-999-999
244
223
 
245
- DateTime dateTime = new DateTime(year, month, day, hours, minutes, seconds, millis, defaultZone);
224
+ DateTime dateTime = new DateTime(year, month, day, hours, minutes, seconds, 0, defaultZone);
246
225
  return RubyTime.newTime(context.runtime, dateTime, nanos);
247
226
  }
248
227
 
@@ -267,15 +246,6 @@ public abstract class DateTimeUtils {
267
246
  return newDate(context, year, month, day, ISOChronology.getInstance(zone));
268
247
  }
269
248
 
270
- @SuppressWarnings("deprecation")
271
- public static IRubyObject newDate(final ThreadContext context, final Date date) {
272
- final int year = date.getYear() + 1900;
273
- final int month = date.getMonth() + 1;
274
- final int day = date.getDate();
275
-
276
- return newDate(context, year, month, day, CHRONO_ITALY_UTC);
277
- }
278
-
279
249
  // @Deprecated
280
250
  public static Timestamp convertToTimestamp(final RubyFloat value) {
281
251
  final Timestamp timestamp = new Timestamp(value.getLongValue() * 1000); // millis
@@ -570,7 +540,7 @@ public abstract class DateTimeUtils {
570
540
  }
571
541
 
572
542
  private static IRubyObject newDate(final ThreadContext context, final int year, final int month, final int day,
573
- final Chronology chronology) {
543
+ final ISOChronology chronology) {
574
544
  // NOTE: JRuby really needs a native date.rb until than its a bit costly going from ...
575
545
  // java.sql.Date -> allocating a DateTime proxy, help a bit by shooting at the internals
576
546
  //
@@ -607,110 +577,4 @@ public abstract class DateTimeUtils {
607
577
  return n;
608
578
  }
609
579
 
610
-
611
- private static final char[] ZEROS = {'0', '0', '0', '0', '0', '0'};
612
- private static final char[][] NUMBERS;
613
-
614
- static {
615
- // maximum value is 60 (seconds)
616
- NUMBERS = new char[60][];
617
- for (int i = 0; i < NUMBERS.length; i++) {
618
- NUMBERS[i] = ((i < 10 ? "0" : "") + Integer.toString(i)).toCharArray();
619
- }
620
- }
621
-
622
- /**
623
- * Converts a ruby timestamp to a java string, optionally with timezone and timezone adjustment
624
- * @param context
625
- * @param value the ruby value, typically a Time
626
- * @param zone DateTimeZone to adjust to, optional
627
- * @param withZone include timezone in the string?
628
- * @return timestamp as string
629
- */
630
- public static String timestampTimeToString(final ThreadContext context,
631
- final IRubyObject value, DateTimeZone zone, boolean withZone) {
632
- RubyTime timeValue = toTime(context, value);
633
- DateTime dt = timeValue.getDateTime();
634
-
635
- StringBuilder sb = new StringBuilder(36);
636
-
637
- int year = dt.getYear();
638
- if (year <= 0) {
639
- year--;
640
- } else if (zone != null) {
641
- dt = dateTimeInZone(dt, zone);
642
- year = dt.getYear();
643
- }
644
-
645
- Chronology chrono = dt.getChronology();
646
- long millis = dt.getMillis();
647
-
648
- // always use 4 digits for year to avoid short dates being misinterpreted
649
- sb.append(Math.abs(year));
650
- int lead = 4 - sb.length();
651
- if (lead > 0) sb.insert(0, ZEROS, 0, lead);
652
- sb.append('-');
653
- sb.append(NUMBERS[chrono.monthOfYear().get(millis)]);
654
- sb.append('-');
655
- sb.append(NUMBERS[chrono.dayOfMonth().get(millis)]);
656
- if (year < 0) sb.append(" BC");
657
- sb.append(' ');
658
-
659
- appendTime(sb, chrono, millis, (int) timeValue.getUSec(), withZone);
660
-
661
- return sb.toString();
662
- }
663
-
664
- /**
665
- * Converts a ruby time to a java string, optionally with timezone and timezone adjustment
666
- * @param context
667
- * @param value the ruby value, typically a Time
668
- * @param zone DateTimeZone to adjust to, optional
669
- * @param withZone include timezone in the string?
670
- * @return time as string
671
- */
672
- public static String timeString(final ThreadContext context,
673
- final IRubyObject value, DateTimeZone zone, boolean withZone) {
674
- StringBuilder sb = new StringBuilder(21);
675
- RubyTime timeValue = toTime(context, value);
676
- DateTime dt = timeValue.getDateTime();
677
- if (zone != null) dt = dateTimeInZone(dt, zone);
678
-
679
- appendTime(sb, dt.getChronology(), dt.getMillis(), (int) timeValue.getUSec(), withZone);
680
- return sb.toString();
681
- }
682
-
683
- private static void appendTime(StringBuilder sb, Chronology chrono,
684
- long millis, int usec, boolean withZone) {
685
- sb.append(NUMBERS[chrono.hourOfDay().get(millis)]);
686
- sb.append(':');
687
- sb.append(NUMBERS[chrono.minuteOfHour().get(millis)]);
688
- sb.append(':');
689
- sb.append(NUMBERS[chrono.secondOfMinute().get(millis)]);
690
-
691
- // PG has microsecond resolution. Change when nanos are required
692
- int micros = chrono.millisOfSecond().get(millis) * 1000 + usec;
693
- if (micros > 0) {
694
- sb.append('.');
695
-
696
- int len = sb.length();
697
- sb.append(micros);
698
- int lead = 6 - (sb.length() - len);
699
- if (lead > 0) sb.insert(len, ZEROS, 0, lead);
700
-
701
- for (int end = sb.length() - 1; sb.charAt(end) == '0'; end--) {
702
- sb.setLength(end);
703
- }
704
- }
705
-
706
- if (withZone) {
707
- int offset = chrono.getZone().getOffset(millis) / 1000;
708
- int absoff = Math.abs(offset);
709
- int hours = absoff / 3600;
710
- int mins = (absoff - hours * 3600) / 60;
711
-
712
- sb.append(offset < 0 ? '-' : '+');
713
- sb.append(NUMBERS[hours]).append(':').append(NUMBERS[mins]);
714
- }
715
- }
716
580
  }
@@ -52,6 +52,7 @@ public abstract class QuotingUtils {
52
52
  return quoteCharWith(context, string, value, quote, 0, 8);
53
53
  }
54
54
 
55
+ @SuppressWarnings("deprecation")
55
56
  public static RubyString quoteCharWith(
56
57
  final ThreadContext context,
57
58
  final RubyString string,
@@ -71,8 +72,8 @@ public abstract class QuotingUtils {
71
72
  new byte[realSize + newOffset + newSizeDiff],
72
73
  stringBytes.getEncoding(), false
73
74
  );
74
- quotedBytes.setBegin(newOffset);
75
- quotedBytes.setRealSize(0);
75
+ quotedBytes.begin = newOffset;
76
+ quotedBytes.realSize = 0;
76
77
  }
77
78
  quotedBytes.append(bytes, appendFrom, i - appendFrom);
78
79
  quotedBytes.append(quote).append(value); // e.g. "'" => "''"
@@ -87,6 +88,7 @@ public abstract class QuotingUtils {
87
88
  return context.runtime.newString(quotedBytes);
88
89
  }
89
90
 
91
+ @SuppressWarnings("deprecation")
90
92
  public static RubyString quoteCharAndDecorateWith(
91
93
  final ThreadContext context, final RubyString string,
92
94
  final char value, final char quote,
@@ -100,7 +102,7 @@ public abstract class QuotingUtils {
100
102
  final ByteList quoted = new ByteList(
101
103
  new byte[realSize + 2], string.getEncoding(), false
102
104
  );
103
- quoted.setRealSize(0);
105
+ quoted.begin = 0; quoted.realSize = 0;
104
106
  quoted.append(prefix);
105
107
  quoted.append(str.unsafeBytes(), str.getBegin(), realSize);
106
108
  quoted.append(suffix);
@@ -108,9 +110,8 @@ public abstract class QuotingUtils {
108
110
  }
109
111
  // we got a new string with a reserve of 1 byte front and back :
110
112
  final ByteList quoted = quotedString.getByteList();
111
- quoted.setBegin(0);
112
- quoted.unsafeBytes()[0] = prefix;
113
- quoted.setRealSize(quoted.getRealSize() + 1);
113
+ quoted.begin = 0; // setBegin invalidates
114
+ quoted.bytes[0] = prefix; quoted.realSize++;
114
115
  quoted.append(suffix);
115
116
  return quotedString;
116
117
  }
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-jdbc-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: '51.8'
4
+ version: '52.0'
5
5
  platform: java
6
6
  authors:
7
7
  - Nick Sieger, Ola Bini, Karol Bucek and JRuby contributors
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-17 00:00:00.000000000 Z
11
+ date: 2018-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
+ name: activerecord
14
15
  requirement: !ruby/object:Gem::Requirement
15
16
  requirements:
16
17
  - - "~>"
17
18
  - !ruby/object:Gem::Version
18
- version: 5.1.0
19
- name: activerecord
19
+ version: 5.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 5.1.0
26
+ version: 5.2.0
27
27
  description: 'AR-JDBC is a database adapter for Rails'' ActiveRecord component designed
28
28
  to be used with JRuby built upon Java''s JDBC API for database access. Provides
29
29
  (ActiveRecord) built-in adapters: MySQL, PostgreSQL and SQLite3 as well as adapters
@@ -60,10 +60,12 @@ files:
60
60
  - lib/active_record/connection_adapters/jdbc_adapter.rb
61
61
  - lib/active_record/connection_adapters/jndi_adapter.rb
62
62
  - lib/active_record/connection_adapters/mariadb_adapter.rb
63
+ - lib/active_record/connection_adapters/mssql_adapter.rb
63
64
  - lib/active_record/connection_adapters/mysql2_adapter.rb
64
65
  - lib/active_record/connection_adapters/mysql_adapter.rb
65
66
  - lib/active_record/connection_adapters/postgresql_adapter.rb
66
67
  - lib/active_record/connection_adapters/sqlite3_adapter.rb
68
+ - lib/active_record/connection_adapters/sqlserver_adapter.rb
67
69
  - lib/activerecord-jdbc-adapter.rb
68
70
  - lib/arel/visitors/compat.rb
69
71
  - lib/arel/visitors/db2.rb
@@ -117,11 +119,21 @@ files:
117
119
  - lib/arjdbc/jdbc/error.rb
118
120
  - lib/arjdbc/jdbc/extension.rb
119
121
  - lib/arjdbc/jdbc/java.rb
122
+ - lib/arjdbc/jdbc/jdbc.rake
120
123
  - lib/arjdbc/jdbc/railtie.rb
121
124
  - lib/arjdbc/jdbc/rake_tasks.rb
122
125
  - lib/arjdbc/jdbc/serialized_attributes_helper.rb
123
126
  - lib/arjdbc/jdbc/type_cast.rb
124
127
  - lib/arjdbc/jdbc/type_converter.rb
128
+ - lib/arjdbc/mssql.rb
129
+ - lib/arjdbc/mssql/adapter.rb
130
+ - lib/arjdbc/mssql/column.rb
131
+ - lib/arjdbc/mssql/connection_methods.rb
132
+ - lib/arjdbc/mssql/explain_support.rb
133
+ - lib/arjdbc/mssql/limit_helpers.rb
134
+ - lib/arjdbc/mssql/lock_methods.rb
135
+ - lib/arjdbc/mssql/types.rb
136
+ - lib/arjdbc/mssql/utils.rb
125
137
  - lib/arjdbc/mysql.rb
126
138
  - lib/arjdbc/mysql/adapter.rb
127
139
  - lib/arjdbc/mysql/connection_methods.rb
@@ -145,6 +157,8 @@ files:
145
157
  - lib/arjdbc/tasks.rb
146
158
  - lib/arjdbc/tasks/database_tasks.rb
147
159
  - lib/arjdbc/tasks/databases.rake
160
+ - lib/arjdbc/tasks/databases3.rake
161
+ - lib/arjdbc/tasks/databases4.rake
148
162
  - lib/arjdbc/tasks/db2_database_tasks.rb
149
163
  - lib/arjdbc/tasks/derby_database_tasks.rb
150
164
  - lib/arjdbc/tasks/h2_database_tasks.rb
@@ -167,6 +181,7 @@ files:
167
181
  - rakelib/01-tomcat.rake
168
182
  - rakelib/02-test.rake
169
183
  - rakelib/bundler_ext.rb
184
+ - rakelib/compile.rake
170
185
  - rakelib/db.rake
171
186
  - rakelib/rails.rake
172
187
  - src/java/arjdbc/ArJdbcModule.java
@@ -186,7 +201,6 @@ files:
186
201
  - src/java/arjdbc/jdbc/DriverConnectionFactory.java
187
202
  - src/java/arjdbc/jdbc/DriverWrapper.java
188
203
  - src/java/arjdbc/jdbc/JdbcResult.java
189
- - src/java/arjdbc/jdbc/RubyConnectionFactory.java
190
204
  - src/java/arjdbc/jdbc/RubyJdbcConnection.java
191
205
  - src/java/arjdbc/mssql/MSSQLModule.java
192
206
  - src/java/arjdbc/mssql/MSSQLRubyJdbcConnection.java
@@ -195,7 +209,7 @@ files:
195
209
  - src/java/arjdbc/oracle/OracleModule.java
196
210
  - src/java/arjdbc/oracle/OracleRubyJdbcConnection.java
197
211
  - src/java/arjdbc/postgresql/ByteaUtils.java
198
- - src/java/arjdbc/postgresql/PgDateTimeUtils.java
212
+ - src/java/arjdbc/postgresql/PgResultSetMetaDataWrapper.java
199
213
  - src/java/arjdbc/postgresql/PostgreSQLModule.java
200
214
  - src/java/arjdbc/postgresql/PostgreSQLResult.java
201
215
  - src/java/arjdbc/postgresql/PostgreSQLRubyJdbcConnection.java
@@ -211,7 +225,7 @@ homepage: https://github.com/jruby/activerecord-jdbc-adapter
211
225
  licenses:
212
226
  - BSD-2-Clause
213
227
  metadata: {}
214
- post_install_message:
228
+ post_install_message:
215
229
  rdoc_options:
216
230
  - "--main"
217
231
  - README.md
@@ -231,8 +245,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
231
245
  - !ruby/object:Gem::Version
232
246
  version: '0'
233
247
  requirements: []
234
- rubygems_version: 3.0.6
235
- signing_key:
248
+ rubyforge_project:
249
+ rubygems_version: 2.7.6
250
+ signing_key:
236
251
  specification_version: 4
237
252
  summary: JDBC adapter for ActiveRecord, for use within JRuby on Rails.
238
253
  test_files: []