activerecord-jdbc-adapter 0.9.7-java → 1.0.0.beta1-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. data/History.txt +11 -0
  2. data/Manifest.txt +71 -38
  3. data/lib/active_record/connection_adapters/cachedb_adapter.rb +1 -1
  4. data/lib/active_record/connection_adapters/derby_adapter.rb +1 -13
  5. data/lib/active_record/connection_adapters/h2_adapter.rb +1 -13
  6. data/lib/active_record/connection_adapters/hsqldb_adapter.rb +1 -13
  7. data/lib/active_record/connection_adapters/informix_adapter.rb +1 -1
  8. data/lib/active_record/connection_adapters/jdbc_adapter.rb +1 -661
  9. data/lib/active_record/connection_adapters/jndi_adapter.rb +1 -1
  10. data/lib/active_record/connection_adapters/mssql_adapter.rb +1 -13
  11. data/lib/active_record/connection_adapters/mysql_adapter.rb +1 -13
  12. data/lib/active_record/connection_adapters/oracle_adapter.rb +1 -1
  13. data/lib/active_record/connection_adapters/postgresql_adapter.rb +1 -13
  14. data/lib/active_record/connection_adapters/sqlite3_adapter.rb +1 -13
  15. data/lib/activerecord-jdbc-adapter.rb +2 -2
  16. data/lib/arjdbc.rb +29 -0
  17. data/lib/arjdbc/cachedb.rb +3 -0
  18. data/lib/arjdbc/cachedb/adapter.rb +20 -0
  19. data/lib/arjdbc/cachedb/connection_methods.rb +10 -0
  20. data/lib/arjdbc/db2.rb +2 -0
  21. data/lib/{jdbc_adapter/jdbc_db2.rb → arjdbc/db2/adapter.rb} +1 -17
  22. data/lib/arjdbc/derby.rb +7 -0
  23. data/lib/{jdbc_adapter/jdbc_derby.rb → arjdbc/derby/adapter.rb} +8 -26
  24. data/lib/arjdbc/derby/connection_methods.rb +18 -0
  25. data/lib/arjdbc/discover.rb +99 -0
  26. data/lib/arjdbc/firebird.rb +2 -0
  27. data/lib/{jdbc_adapter/jdbc_firebird.rb → arjdbc/firebird/adapter.rb} +12 -16
  28. data/lib/arjdbc/h2.rb +4 -0
  29. data/lib/arjdbc/h2/adapter.rb +15 -0
  30. data/lib/arjdbc/h2/connection_methods.rb +12 -0
  31. data/lib/arjdbc/hsqldb.rb +4 -0
  32. data/lib/{jdbc_adapter/jdbc_hsqldb.rb → arjdbc/hsqldb/adapter.rb} +6 -58
  33. data/lib/arjdbc/hsqldb/connection_methods.rb +14 -0
  34. data/lib/arjdbc/informix.rb +3 -0
  35. data/lib/{jdbc_adapter/jdbc_informix.rb → arjdbc/informix/adapter.rb} +6 -19
  36. data/lib/arjdbc/informix/connection_methods.rb +10 -0
  37. data/lib/arjdbc/jdbc.rb +2 -0
  38. data/lib/arjdbc/jdbc/adapter.rb +235 -0
  39. data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
  40. data/lib/arjdbc/jdbc/callbacks.rb +44 -0
  41. data/lib/arjdbc/jdbc/column.rb +38 -0
  42. data/lib/arjdbc/jdbc/compatibility.rb +51 -0
  43. data/lib/arjdbc/jdbc/connection.rb +97 -0
  44. data/lib/arjdbc/jdbc/connection_methods.rb +16 -0
  45. data/lib/arjdbc/jdbc/core_ext.rb +24 -0
  46. data/lib/arjdbc/jdbc/discover.rb +18 -0
  47. data/lib/arjdbc/jdbc/driver.rb +44 -0
  48. data/lib/arjdbc/jdbc/extension.rb +47 -0
  49. data/lib/arjdbc/jdbc/java.rb +14 -0
  50. data/lib/{jdbc_adapter → arjdbc/jdbc}/jdbc.rake +0 -0
  51. data/lib/{jdbc_adapter → arjdbc/jdbc}/missing_functionality_helper.rb +5 -5
  52. data/lib/arjdbc/jdbc/quoted_primary_key.rb +28 -0
  53. data/lib/{jdbc_adapter → arjdbc/jdbc}/railtie.rb +1 -1
  54. data/lib/{jdbc_adapter → arjdbc/jdbc}/rake_tasks.rb +0 -0
  55. data/lib/arjdbc/jdbc/require_driver.rb +16 -0
  56. data/lib/arjdbc/jdbc/type_converter.rb +119 -0
  57. data/lib/arjdbc/mimer.rb +2 -0
  58. data/lib/{jdbc_adapter/jdbc_mimer.rb → arjdbc/mimer/adapter.rb} +16 -19
  59. data/lib/arjdbc/mssql.rb +4 -0
  60. data/lib/{jdbc_adapter/jdbc_mssql.rb → arjdbc/mssql/adapter.rb} +19 -31
  61. data/lib/arjdbc/mssql/connection_methods.rb +13 -0
  62. data/lib/{jdbc_adapter → arjdbc/mssql}/tsql_helper.rb +1 -1
  63. data/lib/arjdbc/mysql.rb +4 -0
  64. data/lib/arjdbc/mysql/adapter.rb +388 -0
  65. data/lib/arjdbc/mysql/connection_methods.rb +26 -0
  66. data/lib/arjdbc/oracle.rb +3 -0
  67. data/lib/{jdbc_adapter/jdbc_oracle.rb → arjdbc/oracle/adapter.rb} +9 -17
  68. data/lib/arjdbc/oracle/connection_methods.rb +11 -0
  69. data/lib/arjdbc/postgresql.rb +4 -0
  70. data/lib/{jdbc_adapter/jdbc_postgre.rb → arjdbc/postgresql/adapter.rb} +7 -36
  71. data/lib/arjdbc/postgresql/connection_methods.rb +21 -0
  72. data/lib/arjdbc/sqlite3.rb +4 -0
  73. data/lib/{jdbc_adapter/jdbc_sqlite3.rb → arjdbc/sqlite3/adapter.rb} +106 -104
  74. data/lib/arjdbc/sqlite3/connection_methods.rb +33 -0
  75. data/lib/arjdbc/sybase.rb +2 -0
  76. data/lib/arjdbc/sybase/adapter.rb +46 -0
  77. data/lib/arjdbc/version.rb +8 -0
  78. data/lib/jdbc_adapter.rb +2 -27
  79. data/lib/jdbc_adapter/version.rb +3 -5
  80. data/rails_generators/templates/config/initializers/jdbc.rb +1 -1
  81. data/rakelib/compile.rake +3 -2
  82. data/rakelib/package.rake +3 -3
  83. data/src/java/{jdbc_adapter/JdbcDerbySpec.java → arjdbc/derby/DerbyModule.java} +32 -32
  84. data/src/java/{jdbc_adapter/JdbcAdapterInternalService.java → arjdbc/jdbc/AdapterJavaService.java} +13 -7
  85. data/src/java/{jdbc_adapter → arjdbc/jdbc}/JdbcConnectionFactory.java +6 -6
  86. data/src/java/{jdbc_adapter → arjdbc/jdbc}/RubyJdbcConnection.java +91 -16
  87. data/src/java/arjdbc/jdbc/SQLBlock.java +48 -0
  88. data/src/java/{jdbc_adapter → arjdbc/mssql}/MssqlRubyJdbcConnection.java +5 -2
  89. data/src/java/{jdbc_adapter/JdbcMySQLSpec.java → arjdbc/mysql/MySQLModule.java} +12 -12
  90. data/src/java/{jdbc_adapter/PostgresRubyJdbcConnection.java → arjdbc/postgresql/PostgresqlRubyJdbcConnection.java} +11 -9
  91. data/src/java/arjdbc/sqlite3/Sqlite3RubyJdbcConnection.java +64 -0
  92. data/test/abstract_db_create.rb +4 -1
  93. data/test/activerecord/connection_adapters/type_conversion_test.rb +1 -1
  94. data/test/db/cachedb.rb +0 -0
  95. data/test/db/derby.rb +12 -14
  96. data/test/db/hsqldb.rb +3 -2
  97. data/test/db/jndi_config.rb +4 -4
  98. data/test/db/sqlite3.rb +2 -6
  99. data/test/db2_simple_test.rb +23 -0
  100. data/test/derby_migration_test.rb +50 -3
  101. data/test/jdbc_common.rb +1 -1
  102. data/test/jndi_callbacks_test.rb +1 -0
  103. data/test/postgres_nonseq_pkey_test.rb +0 -2
  104. data/test/postgres_schema_search_path_test.rb +0 -2
  105. data/test/simple.rb +3 -3
  106. data/test/sybase_jtds_simple_test.rb +22 -0
  107. metadata +82 -46
  108. data/lib/active_record/connection_adapters/jdbc_adapter_spec.rb +0 -26
  109. data/lib/jdbc_adapter/jdbc_adapter_internal.jar +0 -0
  110. data/lib/jdbc_adapter/jdbc_cachedb.rb +0 -33
  111. data/lib/jdbc_adapter/jdbc_mysql.rb +0 -260
  112. data/lib/jdbc_adapter/jdbc_sybase.rb +0 -50
  113. data/src/java/jdbc_adapter/SQLBlock.java +0 -27
  114. data/src/java/jdbc_adapter/Sqlite3RubyJdbcConnection.java +0 -41
  115. data/test/jdbc_adapter/jdbc_db2_test.rb +0 -26
  116. data/test/jdbc_adapter/jdbc_sybase_test.rb +0 -33
  117. data/test/minirunit.rb +0 -109
  118. data/test/minirunit/testConnect.rb +0 -14
  119. data/test/minirunit/testH2.rb +0 -73
  120. data/test/minirunit/testHsqldb.rb +0 -73
  121. data/test/minirunit/testLoadActiveRecord.rb +0 -3
  122. data/test/minirunit/testMysql.rb +0 -83
  123. data/test/minirunit/testRawSelect.rb +0 -24
@@ -5,7 +5,7 @@ end
5
5
 
6
6
  require 'rubygems'
7
7
  require 'pick_rails_version'
8
- require 'jdbc_adapter' if jruby?
8
+ require 'arjdbc' if jruby?
9
9
  puts "Using activerecord version #{ActiveRecord::VERSION::STRING}"
10
10
  puts "Specify version with AR_VERSION=={version} or RUBYLIB={path}"
11
11
  require 'models/auto_id'
@@ -21,6 +21,7 @@ class JndiConnectionPoolCallbacksTest < Test::Unit::TestCase
21
21
  end
22
22
 
23
23
  def test_should_call_hooks_on_checkout_and_checkin
24
+ @connection.stubs(:active?).returns(true)
24
25
  @connection.expects(:disconnect!)
25
26
  @adapter = ActiveRecord::ConnectionAdapters::JdbcAdapter.new @connection, @logger, @config
26
27
  Entry.connection_pool.instance_variable_set "@connections", [@adapter]
@@ -1,5 +1,3 @@
1
- require 'rubygems'
2
- require 'active_record'
3
1
  require 'jdbc_common'
4
2
  require 'db/postgres'
5
3
 
@@ -1,5 +1,3 @@
1
- require 'rubygems'
2
- require 'active_record'
3
1
  require 'jdbc_common'
4
2
  require 'db/postgres'
5
3
 
@@ -62,7 +62,7 @@ module SimpleTestMethods
62
62
  value = ActiveRecord::Base.connection.insert("INSERT INTO entries (title, content, rating) VALUES('insert_title', 'some content', 1)")
63
63
  assert !value.nil?
64
64
  entry = Entry.find_by_title('insert_title')
65
- assert_equal value, entry.id
65
+ assert_equal entry.id, value
66
66
  end
67
67
  end
68
68
 
@@ -287,7 +287,7 @@ module SimpleTestMethods
287
287
 
288
288
  if jruby?
289
289
  def test_connection_valid
290
- assert_raises(ActiveRecord::ActiveRecordError) do
290
+ assert_raises(ActiveRecord::JDBCError) do
291
291
  @connection.raw_connection.with_connection_retry_guard do |c|
292
292
  begin
293
293
  stmt = c.createStatement
@@ -303,7 +303,7 @@ module SimpleTestMethods
303
303
 
304
304
  # ENEBO: Is this really ar-jdbc-specific or a bug in our adapter?
305
305
  def test_fetching_columns_for_nonexistent_table_should_raise
306
- assert_raises(ActiveRecord::ActiveRecordError) do
306
+ assert_raises(ActiveRecord::JDBCError) do
307
307
  Animal.columns
308
308
  end
309
309
  end
@@ -4,3 +4,25 @@ require 'db/sybase_jtds'
4
4
  class SybaseJtdsSimpleTest < Test::Unit::TestCase
5
5
  include SimpleTestMethods
6
6
  end
7
+
8
+ class SybaseAdapterSelectionTest < Test::Unit::TestCase
9
+ class MockConnection
10
+ def adapter=(adapt)
11
+ end
12
+ end
13
+
14
+ def test_jtds_selection_using_dialect
15
+ config = {
16
+ :driver => 'net.sourceforge.jtds.Driver',
17
+ :dialect => 'sybase'
18
+ }
19
+ adapt = JdbcAdapter.new(MockConnection.new, nil, config)
20
+ assert adapt.kind_of?(ArJdbc::Sybase), "Should be a sybase adapter"
21
+ end
22
+
23
+ def test_jtds_selection_not_using_dialect
24
+ config = { :driver => 'net.sourceforge.jtds.Driver' }
25
+ adapt = JdbcAdapter.new(MockConnection.new, nil, config)
26
+ assert adapt.kind_of?(ArJdbc::MsSQL), "Should be a MsSQL apdater"
27
+ end
28
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-jdbc-adapter
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ prerelease: true
5
5
  segments:
6
+ - 1
6
7
  - 0
7
- - 9
8
- - 7
9
- version: 0.9.7
8
+ - 0
9
+ - beta1
10
+ version: 1.0.0.beta1
10
11
  platform: java
11
12
  authors:
12
13
  - Nick Sieger, Ola Bini and JRuby contributors
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-05-25 00:00:00 -05:00
18
+ date: 2010-07-20 00:00:00 -05:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
@@ -53,6 +54,7 @@ files:
53
54
  - Rakefile
54
55
  - LICENSE.txt
55
56
  - lib/activerecord-jdbc-adapter.rb
57
+ - lib/arjdbc.rb
56
58
  - lib/jdbc_adapter.rb
57
59
  - lib/pg.rb
58
60
  - lib/active_record/connection_adapters/cachedb_adapter.rb
@@ -61,7 +63,6 @@ files:
61
63
  - lib/active_record/connection_adapters/hsqldb_adapter.rb
62
64
  - lib/active_record/connection_adapters/informix_adapter.rb
63
65
  - lib/active_record/connection_adapters/jdbc_adapter.rb
64
- - lib/active_record/connection_adapters/jdbc_adapter_spec.rb
65
66
  - lib/active_record/connection_adapters/jndi_adapter.rb
66
67
  - lib/active_record/connection_adapters/mssql_adapter.rb
67
68
  - lib/active_record/connection_adapters/mysql_adapter.rb
@@ -73,26 +74,68 @@ files:
73
74
  - lib/arel/engines/sql/compilers/h2_compiler.rb
74
75
  - lib/arel/engines/sql/compilers/hsqldb_compiler.rb
75
76
  - lib/arel/engines/sql/compilers/jdbc_compiler.rb
77
+ - lib/arjdbc/cachedb.rb
78
+ - lib/arjdbc/db2.rb
79
+ - lib/arjdbc/derby.rb
80
+ - lib/arjdbc/discover.rb
81
+ - lib/arjdbc/firebird.rb
82
+ - lib/arjdbc/h2.rb
83
+ - lib/arjdbc/hsqldb.rb
84
+ - lib/arjdbc/informix.rb
85
+ - lib/arjdbc/jdbc.rb
86
+ - lib/arjdbc/mimer.rb
87
+ - lib/arjdbc/mssql.rb
88
+ - lib/arjdbc/mysql.rb
89
+ - lib/arjdbc/oracle.rb
90
+ - lib/arjdbc/postgresql.rb
91
+ - lib/arjdbc/sqlite3.rb
92
+ - lib/arjdbc/sybase.rb
93
+ - lib/arjdbc/version.rb
94
+ - lib/arjdbc/cachedb/adapter.rb
95
+ - lib/arjdbc/cachedb/connection_methods.rb
96
+ - lib/arjdbc/db2/adapter.rb
97
+ - lib/arjdbc/derby/adapter.rb
98
+ - lib/arjdbc/derby/connection_methods.rb
99
+ - lib/arjdbc/firebird/adapter.rb
100
+ - lib/arjdbc/h2/adapter.rb
101
+ - lib/arjdbc/h2/connection_methods.rb
102
+ - lib/arjdbc/hsqldb/adapter.rb
103
+ - lib/arjdbc/hsqldb/connection_methods.rb
104
+ - lib/arjdbc/informix/adapter.rb
105
+ - lib/arjdbc/informix/connection_methods.rb
106
+ - lib/arjdbc/jdbc/adapter.rb
107
+ - lib/arjdbc/jdbc/callbacks.rb
108
+ - lib/arjdbc/jdbc/column.rb
109
+ - lib/arjdbc/jdbc/compatibility.rb
110
+ - lib/arjdbc/jdbc/connection.rb
111
+ - lib/arjdbc/jdbc/connection_methods.rb
112
+ - lib/arjdbc/jdbc/core_ext.rb
113
+ - lib/arjdbc/jdbc/discover.rb
114
+ - lib/arjdbc/jdbc/driver.rb
115
+ - lib/arjdbc/jdbc/extension.rb
116
+ - lib/arjdbc/jdbc/java.rb
117
+ - lib/arjdbc/jdbc/missing_functionality_helper.rb
118
+ - lib/arjdbc/jdbc/quoted_primary_key.rb
119
+ - lib/arjdbc/jdbc/railtie.rb
120
+ - lib/arjdbc/jdbc/rake_tasks.rb
121
+ - lib/arjdbc/jdbc/require_driver.rb
122
+ - lib/arjdbc/jdbc/type_converter.rb
123
+ - lib/arjdbc/mimer/adapter.rb
124
+ - lib/arjdbc/mssql/adapter.rb
125
+ - lib/arjdbc/mssql/connection_methods.rb
126
+ - lib/arjdbc/mssql/tsql_helper.rb
127
+ - lib/arjdbc/mysql/adapter.rb
128
+ - lib/arjdbc/mysql/connection_methods.rb
129
+ - lib/arjdbc/oracle/adapter.rb
130
+ - lib/arjdbc/oracle/connection_methods.rb
131
+ - lib/arjdbc/postgresql/adapter.rb
132
+ - lib/arjdbc/postgresql/connection_methods.rb
133
+ - lib/arjdbc/sqlite3/adapter.rb
134
+ - lib/arjdbc/sqlite3/connection_methods.rb
135
+ - lib/arjdbc/sybase/adapter.rb
76
136
  - lib/generators/jdbc/jdbc_generator.rb
77
- - lib/jdbc_adapter/jdbc_cachedb.rb
78
- - lib/jdbc_adapter/jdbc_db2.rb
79
- - lib/jdbc_adapter/jdbc_derby.rb
80
- - lib/jdbc_adapter/jdbc_firebird.rb
81
- - lib/jdbc_adapter/jdbc_hsqldb.rb
82
- - lib/jdbc_adapter/jdbc_informix.rb
83
- - lib/jdbc_adapter/jdbc_mimer.rb
84
- - lib/jdbc_adapter/jdbc_mssql.rb
85
- - lib/jdbc_adapter/jdbc_mysql.rb
86
- - lib/jdbc_adapter/jdbc_oracle.rb
87
- - lib/jdbc_adapter/jdbc_postgre.rb
88
- - lib/jdbc_adapter/jdbc_sqlite3.rb
89
- - lib/jdbc_adapter/jdbc_sybase.rb
90
- - lib/jdbc_adapter/missing_functionality_helper.rb
91
- - lib/jdbc_adapter/railtie.rb
92
- - lib/jdbc_adapter/rake_tasks.rb
93
- - lib/jdbc_adapter/tsql_helper.rb
94
137
  - lib/jdbc_adapter/version.rb
95
- - lib/jdbc_adapter/jdbc_adapter_internal.jar
138
+ - lib/arjdbc/jdbc/adapter_java.jar
96
139
  - test/abstract_db_create.rb
97
140
  - test/cachedb_simple_test.rb
98
141
  - test/db2_simple_test.rb
@@ -109,7 +152,6 @@ files:
109
152
  - test/jndi_callbacks_test.rb
110
153
  - test/jndi_test.rb
111
154
  - test/manualTestDatabase.rb
112
- - test/minirunit.rb
113
155
  - test/mssql_db_create_test.rb
114
156
  - test/mssql_identity_insert_test.rb
115
157
  - test/mssql_legacy_types_test.rb
@@ -148,14 +190,6 @@ files:
148
190
  - test/db/oracle.rb
149
191
  - test/db/postgres.rb
150
192
  - test/db/sqlite3.rb
151
- - test/jdbc_adapter/jdbc_db2_test.rb
152
- - test/jdbc_adapter/jdbc_sybase_test.rb
153
- - test/minirunit/testConnect.rb
154
- - test/minirunit/testH2.rb
155
- - test/minirunit/testHsqldb.rb
156
- - test/minirunit/testLoadActiveRecord.rb
157
- - test/minirunit/testMysql.rb
158
- - test/minirunit/testRawSelect.rb
159
193
  - test/models/add_not_null_column_to_table.rb
160
194
  - test/models/auto_id.rb
161
195
  - test/models/data_types.rb
@@ -164,16 +198,16 @@ files:
164
198
  - test/models/reserved_word.rb
165
199
  - test/models/string_id.rb
166
200
  - test/models/validates_uniqueness_of_string.rb
167
- - lib/jdbc_adapter/jdbc.rake
168
- - src/java/jdbc_adapter/JdbcAdapterInternalService.java
169
- - src/java/jdbc_adapter/JdbcConnectionFactory.java
170
- - src/java/jdbc_adapter/JdbcDerbySpec.java
171
- - src/java/jdbc_adapter/JdbcMySQLSpec.java
172
- - src/java/jdbc_adapter/MssqlRubyJdbcConnection.java
173
- - src/java/jdbc_adapter/PostgresRubyJdbcConnection.java
174
- - src/java/jdbc_adapter/RubyJdbcConnection.java
175
- - src/java/jdbc_adapter/SQLBlock.java
176
- - src/java/jdbc_adapter/Sqlite3RubyJdbcConnection.java
201
+ - lib/arjdbc/jdbc/jdbc.rake
202
+ - src/java/arjdbc/derby/DerbyModule.java
203
+ - src/java/arjdbc/jdbc/AdapterJavaService.java
204
+ - src/java/arjdbc/jdbc/JdbcConnectionFactory.java
205
+ - src/java/arjdbc/jdbc/RubyJdbcConnection.java
206
+ - src/java/arjdbc/jdbc/SQLBlock.java
207
+ - src/java/arjdbc/mssql/MssqlRubyJdbcConnection.java
208
+ - src/java/arjdbc/mysql/MySQLModule.java
209
+ - src/java/arjdbc/postgresql/PostgresqlRubyJdbcConnection.java
210
+ - src/java/arjdbc/sqlite3/Sqlite3RubyJdbcConnection.java
177
211
  - rakelib/compile.rake
178
212
  - rakelib/package.rake
179
213
  - rakelib/rails.rake
@@ -202,11 +236,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
202
236
  required_rubygems_version: !ruby/object:Gem::Requirement
203
237
  none: false
204
238
  requirements:
205
- - - ">="
239
+ - - ">"
206
240
  - !ruby/object:Gem::Version
207
241
  segments:
208
- - 0
209
- version: "0"
242
+ - 1
243
+ - 3
244
+ - 1
245
+ version: 1.3.1
210
246
  requirements: []
211
247
 
212
248
  rubyforge_project: jruby-extras
@@ -1,26 +0,0 @@
1
- module JdbcSpec
2
- module ActiveRecordExtensions
3
- def self.add_method_to_remove_from_ar_base(meth)
4
- @methods ||= []
5
- @methods << meth
6
- end
7
-
8
- def self.extended(klass)
9
- (@methods || []).each {|m| (class << klass; self; end).instance_eval { remove_method(m) rescue nil } }
10
- end
11
- end
12
- end
13
-
14
- require 'jdbc_adapter/jdbc_mimer'
15
- require 'jdbc_adapter/jdbc_hsqldb'
16
- require 'jdbc_adapter/jdbc_oracle'
17
- require 'jdbc_adapter/jdbc_postgre'
18
- require 'jdbc_adapter/jdbc_mysql'
19
- require 'jdbc_adapter/jdbc_derby'
20
- require 'jdbc_adapter/jdbc_firebird'
21
- require 'jdbc_adapter/jdbc_db2'
22
- require 'jdbc_adapter/jdbc_mssql'
23
- require 'jdbc_adapter/jdbc_cachedb'
24
- require 'jdbc_adapter/jdbc_sqlite3'
25
- require 'jdbc_adapter/jdbc_sybase'
26
- require 'jdbc_adapter/jdbc_informix'
@@ -1,33 +0,0 @@
1
- require 'jdbc_adapter/tsql_helper'
2
-
3
- module ::JdbcSpec
4
- module ActiveRecordExtensions
5
- def cachedb_connection( config )
6
- config[:port] ||= 1972
7
- config[:url] ||= "jdbc:Cache://#{config[:host]}:#{config[:port]}/#{ config[:database]}"
8
- config[:driver] ||= "com.intersys.jdbc.CacheDriver"
9
- jdbc_connection( config )
10
- end
11
- end
12
-
13
- module CacheDB
14
- include TSqlMethods
15
-
16
- def self.adapter_matcher(name, *)
17
- name =~ /cache/i ? self : false
18
- end
19
-
20
- def self.column_selector
21
- [ /cache/i, lambda { | cfg, col | col.extend( ::JdbcSpec::CacheDB::Column ) } ]
22
- end
23
-
24
- module Column
25
- end
26
-
27
- def create_table(name, options = { })
28
- super(name, options)
29
- primary_key = options[:primary_key] || "id"
30
- execute "ALTER TABLE #{name} ADD CONSTRAINT #{name}_PK PRIMARY KEY(#{primary_key})" unless options[:id] == false
31
- end
32
- end
33
- end
@@ -1,260 +0,0 @@
1
- require 'active_record/connection_adapters/abstract/schema_definitions'
2
-
3
- module ::JdbcSpec
4
- # Don't need to load native mysql adapter
5
- $LOADED_FEATURES << "active_record/connection_adapters/mysql_adapter.rb"
6
-
7
- module ActiveRecordExtensions
8
- add_method_to_remove_from_ar_base(:mysql_connection)
9
-
10
- def mysql_connection(config)
11
- require File.dirname(__FILE__) + "/../active_record/connection_adapters/mysql_adapter"
12
- config[:port] ||= 3306
13
- url_options = "zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=false&useUnicode=true&characterEncoding="
14
- url_options << (config[:encoding] || 'utf8')
15
- if config[:url]
16
- config[:url] = config[:url]['?'] ? "#{config[:url]}&#{url_options}" : "#{config[:url]}?#{url_options}"
17
- else
18
- config[:url] = "jdbc:mysql://#{config[:host]}:#{config[:port]}/#{config[:database]}?#{url_options}"
19
- end
20
- config[:driver] = "com.mysql.jdbc.Driver"
21
- connection = jdbc_connection(config)
22
- ::JdbcSpec::MySQL.kill_cancel_timer(connection.raw_connection)
23
- connection
24
- end
25
- end
26
-
27
- module MySQL
28
- def self.adapter_matcher(name, *)
29
- name =~ /mysql/i ? self : false
30
- end
31
-
32
- def self.column_selector
33
- [/mysql/i, lambda {|cfg,col| col.extend(::JdbcSpec::MySQL::Column)}]
34
- end
35
-
36
- def self.extended(adapter)
37
- adapter.execute("SET SQL_AUTO_IS_NULL=0")
38
- end
39
-
40
- module Column
41
- TYPES_ALLOWING_EMPTY_STRING_DEFAULT = Set.new([:binary, :string, :text])
42
-
43
- def simplified_type(field_type)
44
- return :boolean if field_type =~ /tinyint\(1\)|bit/i
45
- return :string if field_type =~ /enum/i
46
- super
47
- end
48
-
49
- def init_column(name, default, *args)
50
- @original_default = default
51
- @default = nil if missing_default_forged_as_empty_string?
52
- end
53
-
54
- # MySQL misreports NOT NULL column default when none is given.
55
- # We can't detect this for columns which may have a legitimate ''
56
- # default (string, text, binary) but we can for others (integer,
57
- # datetime, boolean, and the rest).
58
- #
59
- # Test whether the column has default '', is not null, and is not
60
- # a type allowing default ''.
61
- def missing_default_forged_as_empty_string?
62
- !null && @original_default == '' && !TYPES_ALLOWING_EMPTY_STRING_DEFAULT.include?(type)
63
- end
64
- end
65
-
66
- def modify_types(tp)
67
- tp[:primary_key] = "int(11) DEFAULT NULL auto_increment PRIMARY KEY"
68
- tp[:decimal] = { :name => "decimal" }
69
- tp[:timestamp] = { :name => "datetime" }
70
- tp[:datetime][:limit] = nil
71
- tp
72
- end
73
-
74
- def adapter_name #:nodoc:
75
- 'mysql'
76
- end
77
-
78
- # QUOTING ==================================================
79
-
80
- def quote(value, column = nil)
81
- return value.quoted_id if value.respond_to?(:quoted_id)
82
-
83
- if column && column.type == :primary_key
84
- value.to_s
85
- elsif column && String === value && column.type == :binary && column.class.respond_to?(:string_to_binary)
86
- s = column.class.string_to_binary(value).unpack("H*")[0]
87
- "x'#{s}'"
88
- elsif BigDecimal === value
89
- "'#{value.to_s("F")}'"
90
- else
91
- super
92
- end
93
- end
94
-
95
- def quoted_true
96
- "1"
97
- end
98
-
99
- def quoted_false
100
- "0"
101
- end
102
-
103
- def begin_db_transaction #:nodoc:
104
- @connection.begin
105
- rescue Exception
106
- # Transactions aren't supported
107
- end
108
-
109
- def commit_db_transaction #:nodoc:
110
- @connection.commit
111
- rescue Exception
112
- # Transactions aren't supported
113
- end
114
-
115
- def rollback_db_transaction #:nodoc:
116
- @connection.rollback
117
- rescue Exception
118
- # Transactions aren't supported
119
- end
120
-
121
- def supports_savepoints? #:nodoc:
122
- true
123
- end
124
-
125
- def create_savepoint
126
- execute("SAVEPOINT #{current_savepoint_name}")
127
- end
128
-
129
- def rollback_to_savepoint
130
- execute("ROLLBACK TO SAVEPOINT #{current_savepoint_name}")
131
- end
132
-
133
- def release_savepoint
134
- execute("RELEASE SAVEPOINT #{current_savepoint_name}")
135
- end
136
-
137
- def disable_referential_integrity(&block) #:nodoc:
138
- old = select_value("SELECT @@FOREIGN_KEY_CHECKS")
139
- begin
140
- update("SET FOREIGN_KEY_CHECKS = 0")
141
- yield
142
- ensure
143
- update("SET FOREIGN_KEY_CHECKS = #{old}")
144
- end
145
- end
146
-
147
- # SCHEMA STATEMENTS ========================================
148
-
149
- def structure_dump #:nodoc:
150
- if supports_views?
151
- sql = "SHOW FULL TABLES WHERE Table_type = 'BASE TABLE'"
152
- else
153
- sql = "SHOW TABLES"
154
- end
155
-
156
- select_all(sql).inject("") do |structure, table|
157
- table.delete('Table_type')
158
-
159
- hash = show_create_table(table.to_a.first.last)
160
-
161
- if(table = hash["Create Table"])
162
- structure += table + ";\n\n"
163
- elsif(view = hash["Create View"])
164
- structure += view + ";\n\n"
165
- end
166
- end
167
- end
168
-
169
- def recreate_database(name, options = {}) #:nodoc:
170
- drop_database(name)
171
- create_database(name, options)
172
- end
173
-
174
- def character_set(options) #:nodoc:
175
- str = "CHARACTER SET `#{options[:charset] || 'utf8'}`"
176
- str += " COLLATE `#{options[:collation]}`" if options[:collation]
177
- str
178
- end
179
- private :character_set
180
-
181
- def create_database(name, options = {}) #:nodoc:
182
- execute "CREATE DATABASE `#{name}` DEFAULT #{character_set(options)}"
183
- end
184
-
185
- def drop_database(name) #:nodoc:
186
- execute "DROP DATABASE IF EXISTS `#{name}`"
187
- end
188
-
189
- def current_database
190
- select_one("SELECT DATABASE() as db")["db"]
191
- end
192
-
193
- def create_table(name, options = {}) #:nodoc:
194
- super(name, {:options => "ENGINE=InnoDB #{character_set(options)}"}.merge(options))
195
- end
196
-
197
- def rename_table(name, new_name)
198
- execute "RENAME TABLE #{quote_table_name(name)} TO #{quote_table_name(new_name)}"
199
- end
200
-
201
- def change_column_default(table_name, column_name, default) #:nodoc:
202
- current_type = select_one("SHOW COLUMNS FROM #{quote_table_name(table_name)} LIKE '#{column_name}'")["Type"]
203
-
204
- execute("ALTER TABLE #{quote_table_name(table_name)} CHANGE #{quote_column_name(column_name)} #{quote_column_name(column_name)} #{current_type} DEFAULT #{quote(default)}")
205
- end
206
-
207
- def change_column(table_name, column_name, type, options = {}) #:nodoc:
208
- unless options_include_default?(options)
209
- if column = columns(table_name).find { |c| c.name == column_name.to_s }
210
- options[:default] = column.default
211
- else
212
- raise "No such column: #{table_name}.#{column_name}"
213
- end
214
- end
215
-
216
- change_column_sql = "ALTER TABLE #{quote_table_name(table_name)} CHANGE #{quote_column_name(column_name)} #{quote_column_name(column_name)} #{type_to_sql(type, options[:limit], options[:precision], options[:scale])}"
217
- add_column_options!(change_column_sql, options)
218
- execute(change_column_sql)
219
- end
220
-
221
- def rename_column(table_name, column_name, new_column_name) #:nodoc:
222
- cols = select_one("SHOW COLUMNS FROM #{quote_table_name(table_name)} LIKE '#{column_name}'")
223
- current_type = cols["Type"] || cols["COLUMN_TYPE"]
224
- execute "ALTER TABLE #{quote_table_name(table_name)} CHANGE #{quote_table_name(column_name)} #{quote_column_name(new_column_name)} #{current_type}"
225
- end
226
-
227
- def add_limit_offset!(sql, options) #:nodoc:
228
- if limit = options[:limit]
229
- unless offset = options[:offset]
230
- sql << " LIMIT #{limit}"
231
- else
232
- sql << " LIMIT #{offset}, #{limit}"
233
- end
234
- end
235
- end
236
-
237
- def show_variable(var)
238
- res = execute("show variables like '#{var}'")
239
- row = res.detect {|row| row["Variable_name"] == var }
240
- row && row["Value"]
241
- end
242
-
243
- def charset
244
- show_variable("character_set_database")
245
- end
246
-
247
- def collation
248
- show_variable("collation_database")
249
- end
250
-
251
- private
252
- def show_create_table(table)
253
- select_one("SHOW CREATE TABLE #{quote_table_name(table)}")
254
- end
255
-
256
- def supports_views?
257
- false
258
- end
259
- end
260
- end