activerecord-jdbc-adapter 1.3.0.beta1 → 1.3.0.beta2

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.
Files changed (161) hide show
  1. data/.gitignore +12 -11
  2. data/.travis.yml +36 -7
  3. data/Appraisals +3 -3
  4. data/Gemfile +1 -1
  5. data/Gemfile.lock +13 -6
  6. data/History.txt +64 -0
  7. data/README.md +8 -1
  8. data/Rakefile +3 -1
  9. data/gemfiles/rails23.gemfile +1 -1
  10. data/gemfiles/rails23.gemfile.lock +6 -5
  11. data/gemfiles/rails30.gemfile +1 -1
  12. data/gemfiles/rails30.gemfile.lock +7 -6
  13. data/gemfiles/rails31.gemfile +1 -1
  14. data/gemfiles/rails31.gemfile.lock +6 -5
  15. data/gemfiles/rails32.gemfile +1 -1
  16. data/gemfiles/rails32.gemfile.lock +6 -5
  17. data/gemfiles/rails40.gemfile +2 -4
  18. data/gemfiles/rails40.gemfile.lock +37 -51
  19. data/lib/active_record/connection_adapters/as400_adapter.rb +2 -0
  20. data/lib/active_record/connection_adapters/db2_adapter.rb +1 -1
  21. data/lib/arel/visitors/db2.rb +5 -1
  22. data/lib/arel/visitors/hsqldb.rb +1 -0
  23. data/lib/arel/visitors/sql_server.rb +55 -13
  24. data/lib/arjdbc/db2/adapter.rb +197 -227
  25. data/lib/arjdbc/db2/as400.rb +124 -0
  26. data/lib/arjdbc/db2/connection_methods.rb +20 -1
  27. data/lib/arjdbc/derby/adapter.rb +17 -85
  28. data/lib/arjdbc/derby/connection_methods.rb +2 -1
  29. data/lib/arjdbc/discover.rb +55 -47
  30. data/lib/arjdbc/h2/adapter.rb +52 -18
  31. data/lib/arjdbc/h2/connection_methods.rb +10 -2
  32. data/lib/arjdbc/hsqldb/adapter.rb +33 -9
  33. data/lib/arjdbc/hsqldb/connection_methods.rb +10 -2
  34. data/lib/arjdbc/informix.rb +2 -1
  35. data/lib/arjdbc/jdbc.rb +5 -1
  36. data/lib/arjdbc/jdbc/adapter.rb +167 -89
  37. data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
  38. data/lib/arjdbc/jdbc/adapter_require.rb +46 -0
  39. data/lib/arjdbc/jdbc/base_ext.rb +25 -3
  40. data/lib/arjdbc/jdbc/callbacks.rb +9 -8
  41. data/lib/arjdbc/jdbc/column.rb +8 -20
  42. data/lib/arjdbc/jdbc/connection.rb +69 -80
  43. data/lib/arjdbc/jdbc/extension.rb +6 -8
  44. data/lib/arjdbc/jdbc/jdbc.rake +3 -141
  45. data/lib/arjdbc/jdbc/rake_tasks.rb +3 -10
  46. data/lib/arjdbc/mssql/adapter.rb +108 -34
  47. data/lib/arjdbc/mssql/connection_methods.rb +3 -1
  48. data/lib/arjdbc/mssql/limit_helpers.rb +3 -2
  49. data/lib/arjdbc/mssql/lock_helpers.rb +5 -1
  50. data/lib/arjdbc/mysql/adapter.rb +127 -70
  51. data/lib/arjdbc/mysql/connection_methods.rb +5 -2
  52. data/lib/arjdbc/oracle/adapter.rb +124 -94
  53. data/lib/arjdbc/oracle/connection_methods.rb +2 -1
  54. data/lib/arjdbc/postgresql/adapter.rb +99 -67
  55. data/lib/arjdbc/postgresql/column_cast.rb +3 -5
  56. data/lib/arjdbc/postgresql/connection_methods.rb +6 -6
  57. data/lib/arjdbc/railtie.rb +3 -1
  58. data/lib/arjdbc/sqlite3/adapter.rb +60 -43
  59. data/lib/arjdbc/sqlite3/connection_methods.rb +9 -9
  60. data/lib/arjdbc/sybase.rb +1 -1
  61. data/lib/arjdbc/tasks.rb +13 -0
  62. data/lib/arjdbc/tasks/database_tasks.rb +50 -0
  63. data/lib/arjdbc/tasks/databases.rake +89 -0
  64. data/lib/arjdbc/tasks/databases3.rake +203 -0
  65. data/lib/arjdbc/tasks/databases4.rake +39 -0
  66. data/lib/arjdbc/tasks/db2_database_tasks.rb +104 -0
  67. data/lib/arjdbc/tasks/derby_database_tasks.rb +95 -0
  68. data/lib/arjdbc/tasks/h2_database_tasks.rb +29 -0
  69. data/lib/arjdbc/tasks/hsqldb_database_tasks.rb +70 -0
  70. data/lib/arjdbc/tasks/jdbc_database_tasks.rb +122 -0
  71. data/lib/arjdbc/tasks/mssql_database_tasks.rb +36 -0
  72. data/lib/arjdbc/tasks/oracle/enhanced_structure_dump.rb +297 -0
  73. data/lib/arjdbc/tasks/oracle_database_tasks.rb +62 -0
  74. data/lib/arjdbc/version.rb +1 -1
  75. data/pom.xml +11 -12
  76. data/rails_generators/jdbc_generator.rb +1 -1
  77. data/rails_generators/templates/config/initializers/jdbc.rb +8 -5
  78. data/rails_generators/templates/lib/tasks/jdbc.rake +7 -4
  79. data/rakelib/02-test.rake +42 -15
  80. data/rakelib/compile.rake +29 -2
  81. data/rakelib/db.rake +2 -1
  82. data/rakelib/rails.rake +23 -6
  83. data/src/java/arjdbc/ArJdbcModule.java +175 -0
  84. data/src/java/arjdbc/db2/DB2Module.java +2 -1
  85. data/src/java/arjdbc/derby/DerbyModule.java +5 -24
  86. data/src/java/arjdbc/hsqldb/HSQLDBModule.java +3 -2
  87. data/src/java/arjdbc/jdbc/AdapterJavaService.java +3 -46
  88. data/src/java/arjdbc/jdbc/RubyJdbcConnection.java +1001 -259
  89. data/src/java/arjdbc/mssql/MSSQLModule.java +2 -1
  90. data/src/java/arjdbc/mysql/MySQLModule.java +4 -3
  91. data/src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java +12 -7
  92. data/src/java/arjdbc/oracle/OracleModule.java +2 -1
  93. data/src/java/arjdbc/sqlite3/SQLite3Module.java +2 -1
  94. data/src/java/arjdbc/sqlite3/SQLite3RubyJdbcConnection.java +12 -0
  95. data/test/db/db2.rb +14 -7
  96. data/test/db/db2/rake_test.rb +82 -0
  97. data/test/db/db2/rake_test_data.sql +35 -0
  98. data/test/db/db2/simple_test.rb +20 -0
  99. data/test/db/db2/unit_test.rb +3 -1
  100. data/test/db/derby.rb +7 -5
  101. data/test/db/derby/rake_test.rb +96 -0
  102. data/test/db/derby/simple_test.rb +10 -2
  103. data/test/db/h2.rb +6 -8
  104. data/test/db/h2/identity_column_test.rb +35 -0
  105. data/test/db/h2/offset_test.rb +49 -0
  106. data/test/db/h2/rake_test.rb +98 -0
  107. data/test/db/h2/schema_dump_test.rb +5 -1
  108. data/test/db/hsqldb.rb +6 -10
  109. data/test/db/hsqldb/rake_test.rb +101 -0
  110. data/test/db/hsqldb/schema_dump_test.rb +5 -1
  111. data/test/db/hsqldb/simple_test.rb +8 -0
  112. data/test/db/jndi_config.rb +1 -3
  113. data/test/db/jndi_pooled_config.rb +1 -3
  114. data/test/db/mssql/limit_offset_test.rb +23 -14
  115. data/test/db/mssql/rake_test.rb +143 -0
  116. data/test/db/mysql/_rails_test_mysql.32.out +1069 -1252
  117. data/test/db/mysql/nonstandard_primary_key_test.rb +21 -24
  118. data/test/db/mysql/rake_test.rb +97 -0
  119. data/test/db/mysql/schema_dump_test.rb +11 -11
  120. data/test/db/mysql/simple_test.rb +52 -3
  121. data/test/db/mysql/statement_escaping_test.rb +46 -0
  122. data/test/db/oracle/rake_test.rb +100 -0
  123. data/test/db/oracle/simple_test.rb +48 -0
  124. data/test/db/postgres/_rails_test_postgres.32.out +998 -1370
  125. data/test/db/postgres/active_schema_unit_test.rb +68 -0
  126. data/test/db/postgres/connection_test.rb +10 -2
  127. data/test/db/postgres/data_types_test.rb +2 -2
  128. data/test/db/postgres/ltree_test.rb +6 -5
  129. data/test/db/postgres/native_types_test.rb +1 -5
  130. data/test/db/postgres/rake_test.rb +117 -0
  131. data/test/db/postgres/schema_dump_test.rb +9 -2
  132. data/test/db/postgres/schema_test.rb +4 -2
  133. data/test/db/postgres/simple_test.rb +57 -16
  134. data/test/db/sqlite3.rb +3 -10
  135. data/test/db/sqlite3/_rails_test_sqlite3.32.out +1070 -1298
  136. data/test/db/sqlite3/rake_test.rb +71 -0
  137. data/test/db/sqlite3/simple_test.rb +9 -9
  138. data/test/has_many_through.rb +4 -1
  139. data/test/jdbc/db2.rb +14 -1
  140. data/test/jdbc_column_test.rb +23 -0
  141. data/test/{generic_jdbc_connection_test.rb → jdbc_connection_test.rb} +22 -17
  142. data/test/jndi_callbacks_test.rb +26 -28
  143. data/test/jndi_test.rb +7 -16
  144. data/test/models/data_types.rb +2 -1
  145. data/test/models/thing.rb +1 -0
  146. data/test/rails/mysql.rb +13 -0
  147. data/test/rails/sqlite3/version.rb +6 -0
  148. data/test/rails_stub.rb +31 -0
  149. data/test/rake_test_support.rb +298 -0
  150. data/test/serialize.rb +2 -4
  151. data/test/{helper.rb → shared_helper.rb} +0 -0
  152. data/test/simple.rb +167 -93
  153. data/test/test_helper.rb +52 -16
  154. metadata +388 -354
  155. data/lib/pg.rb +0 -26
  156. data/test/abstract_db_create.rb +0 -139
  157. data/test/activerecord/connection_adapters/type_conversion_test.rb +0 -36
  158. data/test/db/mssql/db_create_test.rb +0 -29
  159. data/test/db/mysql/db_create_test.rb +0 -33
  160. data/test/db/postgres/db_create_test.rb +0 -44
  161. data/test/db/postgres/db_drop_test.rb +0 -17
data/lib/pg.rb DELETED
@@ -1,26 +0,0 @@
1
- # Stub library for postgresql -- allows Rails to load
2
- # postgresql_adapter without error. Other than postgres-pr, there's no
3
- # other way to use PostgreSQL on JRuby anyway, right? If you've
4
- # installed ar-jdbc you probably want to use that to connect to pg.
5
- #
6
- # If by chance this library is installed in another Ruby and this file
7
- # got required then we'll just continue to try to load the next pg.rb
8
- # in the $LOAD_PATH.
9
-
10
- unless defined?(JRUBY_VERSION)
11
- gem 'pg' if respond_to?(:gem) # make sure pg gem is activated
12
- after_current_file = false
13
- $LOAD_PATH.each do |p|
14
- require_file = File.join(p, 'pg.rb')
15
-
16
- if File.expand_path(require_file) == File.expand_path(__FILE__)
17
- after_current_file = true
18
- next
19
- end
20
-
21
- if after_current_file && File.exist?(require_file)
22
- load require_file
23
- break
24
- end
25
- end
26
- end
@@ -1,139 +0,0 @@
1
- require 'test_helper'
2
- require 'rake'
3
-
4
- module Rails
5
- class Configuration; end unless const_defined?(:Configuration)
6
- class Application
7
- def self.config
8
- @config ||= Object.new
9
- end
10
- def self.paths
11
- @paths ||= Hash.new { [] }
12
- end
13
- end
14
- def self.application
15
- Rails::Application
16
- end
17
- end
18
-
19
- module AbstractDbCreate
20
- def self.included(base)
21
- base.module_eval { include Rake::DSL } if defined?(Rake::DSL)
22
- end
23
-
24
- def setup
25
- @prev_app = Rake.application
26
- Rake.application = Rake::Application.new
27
- verbose(true)
28
- do_setup
29
- end
30
-
31
- def do_setup(env = 'unittest', db = 'test_rake_db_create')
32
- @env = env
33
- @prev_configs = ActiveRecord::Base.configurations
34
- ActiveRecord::Base.connection.disconnect!
35
- @db_name = db
36
- setup_rails
37
- set_rails_constant("env", @env)
38
- set_rails_constant("root", ".")
39
- load File.dirname(__FILE__) + '/../lib/arjdbc/jdbc/jdbc.rake' if defined?(JRUBY_VERSION)
40
- task :environment do
41
- ActiveRecord::Base.configurations = configurations
42
- @full_env_loaded = true
43
- end
44
- task :rails_env do
45
- @rails_env_set = true
46
- end
47
- end
48
-
49
- def teardown
50
- Rake::Task["db:drop"].invoke
51
- Rake.application = @prev_app
52
- restore_rails
53
- ActiveRecord::Base.configurations = @prev_configs
54
- ActiveRecord::Base.establish_connection(db_config)
55
- @rails_env_set = nil
56
- @full_env_loaded = nil
57
- end
58
-
59
- def setup_rails
60
- if ActiveRecord::VERSION::MAJOR <= 2
61
- setup_rails2
62
- else
63
- setup_rails3
64
- end
65
- end
66
-
67
- def configurations
68
- db_name = @db_name
69
- db_config = self.db_config
70
- db_config = db_config.merge({:database => db_name}) if db_name
71
- db_config.stringify_keys!
72
- @configs = { @env => db_config }
73
- @configs["test"] = @configs[@env].dup
74
- @configs
75
- end
76
-
77
- def setup_rails2
78
- configs = configurations
79
- Rails::Configuration.module_eval do
80
- define_method(:database_configuration) { configs }
81
- end
82
- ar_version = $LOADED_FEATURES.grep(%r{active_record/version}).first
83
- ar_lib_path = $LOAD_PATH.detect {|p| p if File.exist?File.join(p, ar_version)}
84
- # if the old style finder didn't work, assume we have the absolute path already
85
- if ar_lib_path.nil? && File.exist?(ar_version)
86
- ar_lib_path = ar_version.sub(%r{/active_record/version.*}, '')
87
- end
88
- ar_lib_path = ar_lib_path.sub(%r{activerecord/lib}, 'railties/lib') # edge rails
89
- rails_lib_path = ar_lib_path.sub(/activerecord-([\d\.]+)/, 'rails-\1') # gem rails
90
- load "#{rails_lib_path}/tasks/databases.rake"
91
- end
92
-
93
- def setup_rails3
94
- configs = configurations
95
- (class << Rails::Application.config; self ; end).instance_eval do
96
- define_method(:database_configuration) { configs }
97
- end
98
- require 'pathname'
99
- ar_version = $LOADED_FEATURES.grep(%r{active_record/version}).first
100
- ar_lib_path = $LOAD_PATH.detect do |p|
101
- Pathname.new(p).absolute? && ar_version.start_with?(p) ||
102
- File.exist?(File.join(p, ar_version))
103
- end
104
- load "#{ar_lib_path}/active_record/railties/databases.rake"
105
- end
106
-
107
- def set_rails_constant(name, value)
108
- cname ="RAILS_#{name.upcase}"
109
- @constants ||= {}
110
- @constants[name] = Object.const_get(cname) rescue nil
111
- silence_warnings { Object.const_set(cname, value) }
112
- Rails.instance_eval do
113
- if instance_methods(false).include?(name)
114
- alias_method "orig_#{name}", name
115
- define_method(name) { value }
116
- end
117
- end
118
- end
119
-
120
- def restore_rails
121
- @constants.each do |key,value|
122
- silence_warnings { Object.const_set("RAILS_#{key.upcase}", value) }
123
- Rails.instance_eval do
124
- if instance_methods(false).include?(name)
125
- remove_method name
126
- alias_method name, "orig_#{name}"
127
- end
128
- end
129
- end
130
- end
131
-
132
- def silence_warnings
133
- prev, $VERBOSE = $VERBOSE, nil
134
- yield
135
- ensure
136
- $VERBOSE = prev
137
- end
138
-
139
- end
@@ -1,36 +0,0 @@
1
- require 'java'
2
- require 'models/data_types'
3
- require 'arjdbc'
4
- require 'test/unit'
5
-
6
- class TypeConversionTest < Test::Unit::TestCase
7
-
8
- TEST_INT = 987654321
9
-
10
- TEST_TIME = Time.at(1169964202).gmtime
11
-
12
- def self.startup
13
- DbTypeMigration.up
14
- end
15
-
16
- def self.shutdown
17
- DbTypeMigration.down
18
- end
19
-
20
- def setup
21
- DbType.create(
22
- :sample_timestamp => TEST_TIME,
23
- :sample_decimal => TEST_INT) # DECIMAL(9,0)
24
- end
25
-
26
- def test_timestamp
27
- type = DbType.first
28
- assert_equal TEST_TIME, type.sample_timestamp.getutc
29
- end
30
-
31
- def test_decimal
32
- type = DbType.first
33
- assert_equal TEST_INT, type.sample_decimal
34
- end
35
-
36
- end
@@ -1,29 +0,0 @@
1
- require 'abstract_db_create'
2
- require 'db/mssql'
3
-
4
- class MSSQLDbCreateTest < Test::Unit::TestCase
5
- include AbstractDbCreate
6
-
7
- def db_config
8
- MSSQL_CONFIG
9
- end
10
-
11
- def test_rake_db_create
12
- begin
13
- Rake::Task["db:create"].invoke
14
- rescue => e
15
- if e.message =~ /CREATE DATABASE permission denied/
16
- puts "\nwarning: db:create test skipped; add 'dbcreator' role to user '#{db_config[:username]}' to run"
17
- return
18
- end
19
- end
20
- ActiveRecord::Base.establish_connection(db_config.merge(:database => "master"))
21
- if ActiveRecord::Base.connection.send(:sqlserver_2000?)
22
- select = "SELECT name FROM master..sysdatabases ORDER BY name"
23
- else
24
- select = "SELECT name FROM sys.sysdatabases"
25
- end
26
- databases = ActiveRecord::Base.connection.select_rows(select).flatten
27
- assert databases.include?(@db_name)
28
- end
29
- end
@@ -1,33 +0,0 @@
1
- require 'abstract_db_create'
2
- require 'db/mysql'
3
-
4
- class MysqlDbCreateTest < Test::Unit::TestCase
5
- include AbstractDbCreate
6
-
7
- def db_config
8
- MYSQL_CONFIG
9
- end
10
-
11
- def test_rake_db_create
12
- omit_unless find_executable?("mysql")
13
- Rake::Task["db:create"].invoke
14
- with_mysql do |mysql|
15
- mysql << "show databases where `Database` = '#{@db_name}';"
16
- mysql.close_write
17
- assert mysql.read =~ /#{@db_name}/m
18
- end
19
- end
20
-
21
- def test_rake_db_test_purge
22
- Rake::Task["db:create"].invoke
23
- Rake::Task["db:test:purge"].invoke
24
- end
25
-
26
- private
27
-
28
- def with_mysql(args = nil)
29
- exec = "mysql -u #{db_config[:username]} --password=#{db_config[:password]} #{args}"
30
- IO.popen(exec, "r+") { |mysql| yield(mysql) }
31
- end
32
-
33
- end
@@ -1,44 +0,0 @@
1
- require 'db/postgres'
2
- require 'abstract_db_create'
3
-
4
- class PostgresDbCreateTest < Test::Unit::TestCase
5
- include AbstractDbCreate
6
-
7
- def db_config
8
- POSTGRES_CONFIG
9
- end
10
-
11
- PSQL_EXECUTABLE = find_executable?("psql")
12
-
13
- def test_rake_db_create
14
- omit_unless PSQL_EXECUTABLE
15
- Rake::Task["db:create"].invoke
16
- assert_match /#{@db_name}/m, psql("-d template1 -c '\\\l'")
17
- end
18
-
19
- def test_rake_db_test_purge
20
- # omit_unless PSQL_EXECUTABLE
21
- Rake::Task["db:create"].invoke
22
- Rake::Task["db:test:purge"].invoke
23
- end
24
-
25
- def test_rake_db_create_does_not_load_full_environment
26
- Rake::Task["db:create"].invoke
27
- assert @rails_env_set
28
- assert !defined?(@full_environment_loaded) || !@full_environment_loaded
29
- end
30
-
31
- private
32
-
33
- def psql(args)
34
- args = args.join(' ') unless args.is_a?(String)
35
- if db_config[:host] != 'localhost'
36
- args = "--host=#{db_config[:host]} #{args}"
37
- end
38
- if username = ENV['PSQL_USERNAME']
39
- args = "--username=#{username} #{args}"
40
- end
41
- `psql #{args}`
42
- end
43
-
44
- end
@@ -1,17 +0,0 @@
1
- require 'db/postgres'
2
- require 'abstract_db_create'
3
-
4
- class PostgresDbDropTest < Test::Unit::TestCase
5
- include AbstractDbCreate
6
-
7
- def db_config
8
- POSTGRES_CONFIG
9
- end
10
-
11
- def test_dropping_nonexistent_database_does_not_raise_exception
12
- assert_nothing_raised do
13
- Rake::Task["db:drop"].invoke
14
- end
15
- end
16
-
17
- end