activerecord-jdbc-adapter 60.1-java → 60.2-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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e2483f430b747553967113a2fd1640d9b18fefe0691f469d5354866e22f90366
4
- data.tar.gz: f777663ca67b683292712b44ce2999f1067d5c0ee964665b513e5aee48e38602
3
+ metadata.gz: cd9e15552e3b9f6f65c66efeee8c74f9b97866ce5f6529ca39b20272d5b30523
4
+ data.tar.gz: 0aa62947429e9c330b35331f5bb77af6d551d746ce726ca7854018a0ce8fd29e
5
5
  SHA512:
6
- metadata.gz: c1775e6f11af7145b7224b4f0f9a56b18f545a74202e31cb41a6fae6325c10df97f106caaf6937d659e89acf33d3288744f60a961e4f488e8cf559e87c804a2e
7
- data.tar.gz: 4cc0292d069ff57c01ce7d9a844bcfe64d32d07aeb47ba664a74fbdfc851af2bbbd34c30ab2219950b49e75edf215e0a3aefb98bd995c5b89648db7532ed1a89
6
+ metadata.gz: f1852d21daa1321cc311d33362d605dcac55c691dd5912755727e5f3809fdcf3cb487b4eb4384d98eb05f9464e30b0dddf003ef7ca297bc94cf02446e45620c6
7
+ data.tar.gz: 9221932463a324cdf0058d382d86ebc3b90c91fc5a00d3fd4d0bbe51bb8bd0ad03ff9457c0a7cf80ec531ce534de875a3bffdc25b4a4cec773b253df12b85774
@@ -69,6 +69,9 @@ matrix:
69
69
  - addons:
70
70
  postgresql: "10"
71
71
  env: DB=postgresql PREPARED_STATEMENTS=true INSERT_RETURNING=true
72
+ - addons:
73
+ postgresql: "10"
74
+ env: DB=postgresql PREPARED_STATEMENTS=true JRUBY_OPTS=-J-Duser.timezone=America/Detroit
72
75
  - addons:
73
76
  postgresql: "9.4"
74
77
  env: DB=postgresql PREPARED_STATEMENTS=true
@@ -303,6 +303,10 @@ module ArJdbc
303
303
  @has_pg_hint_plan
304
304
  end
305
305
 
306
+ def supports_common_table_expressions?
307
+ true
308
+ end
309
+
306
310
  def supports_lazy_transactions?
307
311
  true
308
312
  end
@@ -379,13 +383,23 @@ module ArJdbc
379
383
  end
380
384
  end
381
385
 
386
+ def execute_batch(statements, name = nil)
387
+ if statements.is_a? Array
388
+ execute(combine_multi_statements(statements), name)
389
+ else
390
+ execute(statements, name)
391
+ end
392
+ end
393
+
382
394
  def explain(arel, binds = [])
383
395
  sql, binds = to_sql_and_binds(arel, binds)
384
396
  ActiveRecord::ConnectionAdapters::PostgreSQL::ExplainPrettyPrinter.new.pp(exec_query("EXPLAIN #{sql}", 'EXPLAIN', binds))
385
397
  end
386
398
 
387
399
  # from ActiveRecord::ConnectionAdapters::PostgreSQL::DatabaseStatements
388
- READ_QUERY = ActiveRecord::ConnectionAdapters::AbstractAdapter.build_read_query_regexp(:begin, :commit, :explain, :select, :set, :show, :release, :savepoint, :rollback) # :nodoc:
400
+ READ_QUERY = ActiveRecord::ConnectionAdapters::AbstractAdapter.build_read_query_regexp(
401
+ :begin, :commit, :explain, :select, :set, :show, :release, :savepoint, :rollback, :with
402
+ ) # :nodoc:
389
403
  private_constant :READ_QUERY
390
404
 
391
405
  def write_query?(sql) # :nodoc:
@@ -435,7 +449,12 @@ module ArJdbc
435
449
  end
436
450
 
437
451
  def build_truncate_statements(*table_names)
438
- "TRUNCATE TABLE #{table_names.map(&method(:quote_table_name)).join(", ")}"
452
+ ["TRUNCATE TABLE #{table_names.flatten.map(&method(:quote_table_name)).join(", ")}"]
453
+ end
454
+
455
+ def truncate(table_name, name = nil)
456
+ ActiveRecord::Base.clear_query_caches_for_current_thread if @query_cache_enabled
457
+ execute("TRUNCATE TABLE #{quote_table_name(table_name)}", name)
439
458
  end
440
459
 
441
460
  def all_schemas
@@ -493,7 +512,7 @@ module ArJdbc
493
512
  alias_method :quote_schema_name, :quote_column_name
494
513
 
495
514
  # Need to clear the cache even though the AR adapter doesn't for some reason
496
- def remove_column(table_name, column_name, type = nil, options = {})
515
+ def remove_column(table_name, column_name, type = nil, **options)
497
516
  super
498
517
  clear_cache!
499
518
  end
@@ -213,7 +213,7 @@ module ArJdbc
213
213
  if oid
214
214
  if oid.is_a? Numeric || oid.match(/^\d+$/)
215
215
  # numeric OID
216
- query += "WHERE t.oid::integer = %s" % oid
216
+ query += "WHERE t.oid = %s" % oid
217
217
 
218
218
  elsif m = oid.match(/"?(\w+)"?\."?(\w+)"?/)
219
219
  # namespace and type name
@@ -97,6 +97,10 @@ module ArJdbc
97
97
  true
98
98
  end
99
99
 
100
+ def supports_common_table_expressions?
101
+ database_version >= "3.8.3"
102
+ end
103
+
100
104
  def supports_insert_on_conflict?
101
105
  database_version >= "3.24.0"
102
106
  end
@@ -154,7 +158,9 @@ module ArJdbc
154
158
  # DATABASE STATEMENTS ======================================
155
159
  #++
156
160
 
157
- READ_QUERY = ActiveRecord::ConnectionAdapters::AbstractAdapter.build_read_query_regexp(:begin, :commit, :explain, :select, :pragma, :release, :savepoint, :rollback) # :nodoc:
161
+ READ_QUERY = ActiveRecord::ConnectionAdapters::AbstractAdapter.build_read_query_regexp(
162
+ :begin, :commit, :explain, :select, :pragma, :release, :savepoint, :rollback, :with
163
+ ) # :nodoc:
158
164
  private_constant :READ_QUERY
159
165
 
160
166
  def write_query?(sql) # :nodoc:
@@ -223,7 +229,7 @@ module ArJdbc
223
229
  end
224
230
  end
225
231
 
226
- def remove_column(table_name, column_name, type = nil, options = {}) #:nodoc:
232
+ def remove_column(table_name, column_name, type = nil, **options) #:nodoc:
227
233
  alter_table(table_name) do |definition|
228
234
  definition.remove_column column_name
229
235
  definition.foreign_keys.delete_if do |_, fk_options|
@@ -317,11 +323,17 @@ module ArJdbc
317
323
  SQLite3Adapter::Version.new(query_value("SELECT sqlite_version(*)"))
318
324
  end
319
325
 
326
+ def build_truncate_statement(table_name)
327
+ "DELETE FROM #{quote_table_name(table_name)}"
328
+ end
329
+
320
330
  def build_truncate_statements(*table_names)
321
- truncate_tables = table_names.map do |table_name|
322
- "DELETE FROM #{quote_table_name(table_name)}"
323
- end
324
- combine_multi_statements(truncate_tables)
331
+ table_names.flatten.map { |table_name| build_truncate_statement table_name }
332
+ end
333
+
334
+ def truncate(table_name, name = nil)
335
+ ActiveRecord::Base.clear_query_caches_for_current_thread if @query_cache_enabled
336
+ execute(build_truncate_statement(table_name), name)
325
337
  end
326
338
 
327
339
  def check_version
@@ -352,7 +364,8 @@ module ArJdbc
352
364
  # See: https://www.sqlite.org/lang_altertable.html
353
365
  # SQLite has an additional restriction on the ALTER TABLE statement
354
366
  def invalid_alter_table_type?(type, options)
355
- type.to_sym == :primary_key || options[:primary_key]
367
+ type.to_sym == :primary_key || options[:primary_key] ||
368
+ options[:null] == false && options[:default].nil?
356
369
  end
357
370
 
358
371
  def alter_table(table_name, foreign_keys = foreign_keys(table_name), **options)
@@ -1,3 +1,3 @@
1
1
  module ArJdbc
2
- VERSION = '60.1'
2
+ VERSION = '60.2'
3
3
  end
@@ -1,6 +1,6 @@
1
1
  namespace :'tomcat-jndi' do # contains a FS JNDI impl (for tests)
2
2
 
3
- TOMCAT_MAVEN_REPO = 'http://repo2.maven.org/maven2/org/apache/tomcat'
3
+ TOMCAT_MAVEN_REPO = 'https://repo1.maven.org/maven2/org/apache/tomcat'
4
4
  TOMCAT_VERSION = '7.0.54'
5
5
 
6
6
  DOWNLOAD_DIR = File.expand_path('../test/jars', File.dirname(__FILE__))
@@ -48,4 +48,4 @@ namespace :'tomcat-jndi' do # contains a FS JNDI impl (for tests)
48
48
  rm jar_path if File.exist?(jar_path)
49
49
  end
50
50
 
51
- end
51
+ end
@@ -36,26 +36,18 @@ import java.io.ByteArrayInputStream;
36
36
  import java.lang.StringBuilder;
37
37
  import java.lang.reflect.InvocationTargetException;
38
38
  import java.math.BigDecimal;
39
- import java.sql.Connection;
40
- import java.sql.DatabaseMetaData;
41
- import java.sql.PreparedStatement;
42
- import java.sql.ResultSet;
43
- import java.sql.ResultSetMetaData;
44
- import java.sql.SQLException;
45
- import java.sql.Timestamp;
46
- import java.sql.Types;
47
- import java.util.ArrayList;
48
- import java.util.Collections;
49
- import java.util.HashMap;
50
- import java.util.Map;
51
- import java.util.UUID;
39
+ import java.sql.*;
40
+ import java.sql.Date;
41
+ import java.util.*;
52
42
  import java.util.regex.Pattern;
53
43
  import java.util.regex.Matcher;
54
44
 
45
+ import org.joda.time.DateTime;
55
46
  import org.jruby.*;
56
47
  import org.jruby.anno.JRubyMethod;
57
48
  import org.jruby.exceptions.RaiseException;
58
49
  import org.jruby.ext.bigdecimal.RubyBigDecimal;
50
+ import org.jruby.ext.date.RubyDate;
59
51
  import org.jruby.javasupport.JavaUtil;
60
52
  import org.jruby.runtime.ObjectAllocator;
61
53
  import org.jruby.runtime.ThreadContext;
@@ -115,6 +107,7 @@ public class PostgreSQLRubyJdbcConnection extends arjdbc.jdbc.RubyJdbcConnection
115
107
 
116
108
  // Used to wipe trailing 0's from points (3.0, 5.6) -> (3, 5.6)
117
109
  private static final Pattern pointCleanerPattern = Pattern.compile("\\.0\\b");
110
+ private static final TimeZone TZ_DEFAULT = TimeZone.getDefault();
118
111
 
119
112
  private RubyClass resultClass;
120
113
  private RubyHash typeMap = null;
@@ -386,7 +379,20 @@ public class PostgreSQLRubyJdbcConnection extends arjdbc.jdbc.RubyJdbcConnection
386
379
  }
387
380
  }
388
381
 
389
- super.setDateParameter(context, connection, statement, index, value, attribute, type);
382
+ if ( ! "Date".equals(value.getMetaClass().getName()) && value.respondsTo("to_date") ) {
383
+ value = value.callMethod(context, "to_date");
384
+ }
385
+
386
+ if (value instanceof RubyDate) {
387
+ RubyDate rubyDate = (RubyDate) value;
388
+ DateTime dt = rubyDate.getDateTime();
389
+ // pgjdbc needs adjustment for default JVM timezone
390
+ statement.setDate(index, new Date(dt.getMillis() - TZ_DEFAULT.getOffset(dt.getMillis())));
391
+ return;
392
+ }
393
+
394
+ // NOTE: assuming Date#to_s does right ...
395
+ statement.setDate(index, Date.valueOf(value.toString()));
390
396
  }
391
397
 
392
398
  @Override
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: '60.1'
4
+ version: '60.2'
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-12-19 00:00:00.000000000 Z
11
+ date: 2020-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -17,8 +17,8 @@ dependencies:
17
17
  - !ruby/object:Gem::Version
18
18
  version: 6.0.0
19
19
  name: activerecord
20
- prerelease: false
21
20
  type: :runtime
21
+ prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
@@ -230,8 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
230
230
  - !ruby/object:Gem::Version
231
231
  version: '0'
232
232
  requirements: []
233
- rubyforge_project:
234
- rubygems_version: 2.7.10
233
+ rubygems_version: 3.0.6
235
234
  signing_key:
236
235
  specification_version: 4
237
236
  summary: JDBC adapter for ActiveRecord, for use within JRuby on Rails.