kb-activerecord-jdbc-adapter 0.9.7.1-java → 1.0.0.beta1-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.
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/cachedb/adapter.rb +20 -0
  17. data/lib/arjdbc/cachedb/connection_methods.rb +10 -0
  18. data/lib/arjdbc/cachedb.rb +3 -0
  19. data/lib/{jdbc_adapter/jdbc_db2.rb → arjdbc/db2/adapter.rb} +2 -17
  20. data/lib/arjdbc/db2.rb +2 -0
  21. data/lib/{jdbc_adapter/jdbc_derby.rb → arjdbc/derby/adapter.rb} +8 -26
  22. data/lib/arjdbc/derby/connection_methods.rb +18 -0
  23. data/lib/arjdbc/derby.rb +7 -0
  24. data/lib/arjdbc/discover.rb +99 -0
  25. data/lib/{jdbc_adapter/jdbc_firebird.rb → arjdbc/firebird/adapter.rb} +12 -16
  26. data/lib/arjdbc/firebird.rb +2 -0
  27. data/lib/arjdbc/h2/adapter.rb +15 -0
  28. data/lib/arjdbc/h2/connection_methods.rb +12 -0
  29. data/lib/arjdbc/h2.rb +4 -0
  30. data/lib/{jdbc_adapter/jdbc_hsqldb.rb → arjdbc/hsqldb/adapter.rb} +6 -58
  31. data/lib/arjdbc/hsqldb/connection_methods.rb +14 -0
  32. data/lib/arjdbc/hsqldb.rb +4 -0
  33. data/lib/{jdbc_adapter/jdbc_informix.rb → arjdbc/informix/adapter.rb} +6 -19
  34. data/lib/arjdbc/informix/connection_methods.rb +10 -0
  35. data/lib/arjdbc/informix.rb +3 -0
  36. data/lib/arjdbc/jdbc/adapter.rb +235 -0
  37. data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
  38. data/lib/arjdbc/jdbc/callbacks.rb +44 -0
  39. data/lib/arjdbc/jdbc/column.rb +38 -0
  40. data/lib/arjdbc/jdbc/compatibility.rb +51 -0
  41. data/lib/arjdbc/jdbc/connection.rb +97 -0
  42. data/lib/arjdbc/jdbc/connection_methods.rb +16 -0
  43. data/lib/arjdbc/jdbc/core_ext.rb +24 -0
  44. data/lib/arjdbc/jdbc/discover.rb +18 -0
  45. data/lib/arjdbc/jdbc/driver.rb +44 -0
  46. data/lib/arjdbc/jdbc/extension.rb +47 -0
  47. data/lib/arjdbc/jdbc/java.rb +14 -0
  48. data/lib/{jdbc_adapter → arjdbc/jdbc}/missing_functionality_helper.rb +5 -5
  49. data/lib/arjdbc/jdbc/quoted_primary_key.rb +28 -0
  50. data/lib/{jdbc_adapter → arjdbc/jdbc}/railtie.rb +1 -1
  51. data/lib/arjdbc/jdbc/require_driver.rb +16 -0
  52. data/lib/arjdbc/jdbc/type_converter.rb +119 -0
  53. data/lib/arjdbc/jdbc.rb +2 -0
  54. data/lib/{jdbc_adapter/jdbc_mimer.rb → arjdbc/mimer/adapter.rb} +16 -19
  55. data/lib/arjdbc/mimer.rb +2 -0
  56. data/lib/{jdbc_adapter/jdbc_mssql.rb → arjdbc/mssql/adapter.rb} +19 -31
  57. data/lib/arjdbc/mssql/connection_methods.rb +13 -0
  58. data/lib/arjdbc/mssql.rb +4 -0
  59. data/lib/arjdbc/mysql/adapter.rb +388 -0
  60. data/lib/arjdbc/mysql/connection_methods.rb +26 -0
  61. data/lib/arjdbc/mysql.rb +4 -0
  62. data/lib/{jdbc_adapter/jdbc_oracle.rb → arjdbc/oracle/adapter.rb} +9 -17
  63. data/lib/arjdbc/oracle/connection_methods.rb +11 -0
  64. data/lib/arjdbc/oracle.rb +3 -0
  65. data/lib/{jdbc_adapter/jdbc_postgre.rb → arjdbc/postgresql/adapter.rb} +7 -36
  66. data/lib/arjdbc/postgresql/connection_methods.rb +21 -0
  67. data/lib/arjdbc/postgresql.rb +4 -0
  68. data/lib/{jdbc_adapter/jdbc_sqlite3.rb → arjdbc/sqlite3/adapter.rb} +106 -104
  69. data/lib/arjdbc/sqlite3/connection_methods.rb +33 -0
  70. data/lib/arjdbc/sqlite3.rb +4 -0
  71. data/lib/arjdbc/sybase/adapter.rb +46 -0
  72. data/lib/arjdbc/sybase.rb +2 -0
  73. data/lib/arjdbc/version.rb +8 -0
  74. data/lib/arjdbc.rb +29 -0
  75. data/lib/jdbc_adapter/version.rb +3 -5
  76. data/lib/jdbc_adapter.rb +2 -27
  77. data/rails_generators/templates/config/initializers/jdbc.rb +1 -1
  78. data/rakelib/compile.rake +3 -2
  79. data/rakelib/package.rake +3 -3
  80. data/src/java/{jdbc_adapter/JdbcDerbySpec.java → arjdbc/derby/DerbyModule.java} +32 -32
  81. data/src/java/{jdbc_adapter/JdbcAdapterInternalService.java → arjdbc/jdbc/AdapterJavaService.java} +13 -7
  82. data/src/java/{jdbc_adapter → arjdbc/jdbc}/JdbcConnectionFactory.java +6 -6
  83. data/src/java/{jdbc_adapter → arjdbc/jdbc}/RubyJdbcConnection.java +91 -16
  84. data/src/java/arjdbc/jdbc/SQLBlock.java +48 -0
  85. data/src/java/{jdbc_adapter → arjdbc/mssql}/MssqlRubyJdbcConnection.java +5 -2
  86. data/src/java/{jdbc_adapter/JdbcMySQLSpec.java → arjdbc/mysql/MySQLModule.java} +12 -12
  87. data/src/java/{jdbc_adapter/PostgresRubyJdbcConnection.java → arjdbc/postgresql/PostgresqlRubyJdbcConnection.java} +11 -9
  88. data/src/java/arjdbc/sqlite3/Sqlite3RubyJdbcConnection.java +64 -0
  89. data/test/abstract_db_create.rb +4 -1
  90. data/test/activerecord/connection_adapters/type_conversion_test.rb +1 -1
  91. data/test/db/cachedb.rb +0 -0
  92. data/test/db/derby.rb +12 -14
  93. data/test/db/hsqldb.rb +3 -2
  94. data/test/db/jndi_config.rb +4 -4
  95. data/test/db/sqlite3.rb +2 -6
  96. data/test/db2_simple_test.rb +23 -0
  97. data/test/derby_migration_test.rb +50 -3
  98. data/test/jdbc_common.rb +1 -1
  99. data/test/jndi_callbacks_test.rb +1 -0
  100. data/test/postgres_nonseq_pkey_test.rb +0 -2
  101. data/test/postgres_schema_search_path_test.rb +0 -2
  102. data/test/simple.rb +3 -3
  103. data/test/sybase_jtds_simple_test.rb +22 -0
  104. metadata +81 -46
  105. data/lib/active_record/connection_adapters/jdbc_adapter_spec.rb +0 -26
  106. data/lib/jdbc_adapter/jdbc_adapter_internal.jar +0 -0
  107. data/lib/jdbc_adapter/jdbc_cachedb.rb +0 -33
  108. data/lib/jdbc_adapter/jdbc_mysql.rb +0 -260
  109. data/lib/jdbc_adapter/jdbc_sybase.rb +0 -50
  110. data/src/java/jdbc_adapter/SQLBlock.java +0 -27
  111. data/src/java/jdbc_adapter/Sqlite3RubyJdbcConnection.java +0 -41
  112. data/test/jdbc_adapter/jdbc_db2_test.rb +0 -26
  113. data/test/jdbc_adapter/jdbc_sybase_test.rb +0 -33
  114. data/test/minirunit/testConnect.rb +0 -14
  115. data/test/minirunit/testH2.rb +0 -73
  116. data/test/minirunit/testHsqldb.rb +0 -73
  117. data/test/minirunit/testLoadActiveRecord.rb +0 -3
  118. data/test/minirunit/testMysql.rb +0 -83
  119. data/test/minirunit/testRawSelect.rb +0 -24
  120. data/test/minirunit.rb +0 -109
  121. /data/lib/{jdbc_adapter → arjdbc/jdbc}/jdbc.rake +0 -0
  122. /data/lib/{jdbc_adapter → arjdbc/jdbc}/rake_tasks.rb +0 -0
  123. /data/lib/{jdbc_adapter → arjdbc/mssql}/tsql_helper.rb +0 -0
@@ -8,3 +8,26 @@ end
8
8
  class DB2HasManyThroughTest < Test::Unit::TestCase
9
9
  include HasManyThroughMethods
10
10
  end
11
+
12
+ class DB2Test < Test::Unit::TestCase
13
+ def setup
14
+ @inst = Object.new
15
+ @inst.extend ArJdbc::DB2
16
+ @column = Object.new
17
+ class << @column
18
+ attr_accessor :type
19
+ end
20
+ end
21
+
22
+ def test_quote_decimal
23
+ assert_equal %q{'123.45'}, @inst.quote("123.45")
24
+ @column.type = :decimal
25
+ assert_equal %q{123.45}, @inst.quote("123.45", @column), "decimal columns should not have quotes"
26
+ end
27
+
28
+ def test_primary_key_generation
29
+ @column.type = :primary_key
30
+ assert_equal 'int not null generated by default as identity (start with 1) primary key', @inst.modify_types({:string => {}, :integer => {}, :boolean => {}})[:primary_key]
31
+ end
32
+
33
+ end
@@ -8,14 +8,61 @@ class CreateDummies < ActiveRecord::Migration
8
8
  end
9
9
  add_index :dummies, :year, :unique => true
10
10
  end
11
-
11
+
12
+ end
13
+
14
+ class ChangeColumn < ActiveRecord::Migration
15
+ def self.up
16
+ create_table :people, :id => false, :force => true do |t|
17
+ t.string :id, :limit => 22, :null => false
18
+ t.string :name, :null => false
19
+ end
20
+ change_column(:people, :name, :string, {:limit=>22})
21
+ execute("SELECT id FROM people WHERE id = 'some string'")
22
+ end
23
+
24
+ def self.down
25
+ end
26
+
27
+ end
28
+
29
+ class CreateIndex < ActiveRecord::Migration
30
+ def self.up
31
+ create_table :people, :id => false, :force => true do |t|
32
+ t.string :id, :limit => 22, :null => false
33
+ t.string :first_name, :null => false
34
+ t.string :last_name, :null => false
35
+ t.string :nickname, :null => false
36
+ t.string :long_name, :null => false
37
+ t.string :very_long_name, :null => false
38
+ t.string :extremely_long_name, :null => false
39
+ end
40
+
41
+ add_index(:people, [:first_name, :last_name, :nickname, :long_name, :very_long_name, :extremely_long_name], :unique => true)
42
+
43
+ remove_index(:people, [:first_name, :last_name, :nickname, :long_name, :very_long_name, :extremely_long_name])
44
+ end
45
+
46
+ def self.down
47
+ end
48
+
12
49
  end
13
50
 
14
- class DerbyQuotingTest < Test::Unit::TestCase
51
+ class DerbyMigrationTest < Test::Unit::TestCase
15
52
  include FixtureSetup
16
53
 
17
54
  def test_create_table_column_quoting_vs_keywords
18
55
  CreateDummies.up
19
56
  end
20
-
57
+
58
+ def test_migrate_change_column_for_non_standard_id
59
+ ChangeColumn.up
60
+ ChangeColumn.down
61
+ end
62
+
63
+ def test_migrate_create_index
64
+ CreateIndex.up
65
+ CreateIndex.down
66
+ end
67
+
21
68
  end
data/test/jdbc_common.rb CHANGED
@@ -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
 
data/test/simple.rb CHANGED
@@ -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,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kb-activerecord-jdbc-adapter
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ prerelease: true
5
5
  segments:
6
- - 0
7
- - 9
8
- - 7
9
6
  - 1
10
- version: 0.9.7.1
7
+ - 0
8
+ - 0
9
+ - beta1
10
+ version: 1.0.0.beta1
11
11
  platform: java
12
12
  authors:
13
13
  - Nick Sieger, Ola Bini and JRuby contributors
@@ -67,6 +67,7 @@ files:
67
67
  - Rakefile
68
68
  - LICENSE.txt
69
69
  - lib/activerecord-jdbc-adapter.rb
70
+ - lib/arjdbc.rb
70
71
  - lib/jdbc_adapter.rb
71
72
  - lib/pg.rb
72
73
  - lib/active_record/connection_adapters/cachedb_adapter.rb
@@ -75,7 +76,6 @@ files:
75
76
  - lib/active_record/connection_adapters/hsqldb_adapter.rb
76
77
  - lib/active_record/connection_adapters/informix_adapter.rb
77
78
  - lib/active_record/connection_adapters/jdbc_adapter.rb
78
- - lib/active_record/connection_adapters/jdbc_adapter_spec.rb
79
79
  - lib/active_record/connection_adapters/jndi_adapter.rb
80
80
  - lib/active_record/connection_adapters/mssql_adapter.rb
81
81
  - lib/active_record/connection_adapters/mysql_adapter.rb
@@ -87,26 +87,68 @@ files:
87
87
  - lib/arel/engines/sql/compilers/h2_compiler.rb
88
88
  - lib/arel/engines/sql/compilers/hsqldb_compiler.rb
89
89
  - lib/arel/engines/sql/compilers/jdbc_compiler.rb
90
+ - lib/arjdbc/cachedb.rb
91
+ - lib/arjdbc/db2.rb
92
+ - lib/arjdbc/derby.rb
93
+ - lib/arjdbc/discover.rb
94
+ - lib/arjdbc/firebird.rb
95
+ - lib/arjdbc/h2.rb
96
+ - lib/arjdbc/hsqldb.rb
97
+ - lib/arjdbc/informix.rb
98
+ - lib/arjdbc/jdbc.rb
99
+ - lib/arjdbc/mimer.rb
100
+ - lib/arjdbc/mssql.rb
101
+ - lib/arjdbc/mysql.rb
102
+ - lib/arjdbc/oracle.rb
103
+ - lib/arjdbc/postgresql.rb
104
+ - lib/arjdbc/sqlite3.rb
105
+ - lib/arjdbc/sybase.rb
106
+ - lib/arjdbc/version.rb
107
+ - lib/arjdbc/cachedb/adapter.rb
108
+ - lib/arjdbc/cachedb/connection_methods.rb
109
+ - lib/arjdbc/db2/adapter.rb
110
+ - lib/arjdbc/derby/adapter.rb
111
+ - lib/arjdbc/derby/connection_methods.rb
112
+ - lib/arjdbc/firebird/adapter.rb
113
+ - lib/arjdbc/h2/adapter.rb
114
+ - lib/arjdbc/h2/connection_methods.rb
115
+ - lib/arjdbc/hsqldb/adapter.rb
116
+ - lib/arjdbc/hsqldb/connection_methods.rb
117
+ - lib/arjdbc/informix/adapter.rb
118
+ - lib/arjdbc/informix/connection_methods.rb
119
+ - lib/arjdbc/jdbc/adapter.rb
120
+ - lib/arjdbc/jdbc/callbacks.rb
121
+ - lib/arjdbc/jdbc/column.rb
122
+ - lib/arjdbc/jdbc/compatibility.rb
123
+ - lib/arjdbc/jdbc/connection.rb
124
+ - lib/arjdbc/jdbc/connection_methods.rb
125
+ - lib/arjdbc/jdbc/core_ext.rb
126
+ - lib/arjdbc/jdbc/discover.rb
127
+ - lib/arjdbc/jdbc/driver.rb
128
+ - lib/arjdbc/jdbc/extension.rb
129
+ - lib/arjdbc/jdbc/java.rb
130
+ - lib/arjdbc/jdbc/missing_functionality_helper.rb
131
+ - lib/arjdbc/jdbc/quoted_primary_key.rb
132
+ - lib/arjdbc/jdbc/railtie.rb
133
+ - lib/arjdbc/jdbc/rake_tasks.rb
134
+ - lib/arjdbc/jdbc/require_driver.rb
135
+ - lib/arjdbc/jdbc/type_converter.rb
136
+ - lib/arjdbc/mimer/adapter.rb
137
+ - lib/arjdbc/mssql/adapter.rb
138
+ - lib/arjdbc/mssql/connection_methods.rb
139
+ - lib/arjdbc/mssql/tsql_helper.rb
140
+ - lib/arjdbc/mysql/adapter.rb
141
+ - lib/arjdbc/mysql/connection_methods.rb
142
+ - lib/arjdbc/oracle/adapter.rb
143
+ - lib/arjdbc/oracle/connection_methods.rb
144
+ - lib/arjdbc/postgresql/adapter.rb
145
+ - lib/arjdbc/postgresql/connection_methods.rb
146
+ - lib/arjdbc/sqlite3/adapter.rb
147
+ - lib/arjdbc/sqlite3/connection_methods.rb
148
+ - lib/arjdbc/sybase/adapter.rb
90
149
  - lib/generators/jdbc/jdbc_generator.rb
91
- - lib/jdbc_adapter/jdbc_cachedb.rb
92
- - lib/jdbc_adapter/jdbc_db2.rb
93
- - lib/jdbc_adapter/jdbc_derby.rb
94
- - lib/jdbc_adapter/jdbc_firebird.rb
95
- - lib/jdbc_adapter/jdbc_hsqldb.rb
96
- - lib/jdbc_adapter/jdbc_informix.rb
97
- - lib/jdbc_adapter/jdbc_mimer.rb
98
- - lib/jdbc_adapter/jdbc_mssql.rb
99
- - lib/jdbc_adapter/jdbc_mysql.rb
100
- - lib/jdbc_adapter/jdbc_oracle.rb
101
- - lib/jdbc_adapter/jdbc_postgre.rb
102
- - lib/jdbc_adapter/jdbc_sqlite3.rb
103
- - lib/jdbc_adapter/jdbc_sybase.rb
104
- - lib/jdbc_adapter/missing_functionality_helper.rb
105
- - lib/jdbc_adapter/railtie.rb
106
- - lib/jdbc_adapter/rake_tasks.rb
107
- - lib/jdbc_adapter/tsql_helper.rb
108
150
  - lib/jdbc_adapter/version.rb
109
- - lib/jdbc_adapter/jdbc_adapter_internal.jar
151
+ - lib/arjdbc/jdbc/adapter_java.jar
110
152
  - test/abstract_db_create.rb
111
153
  - test/cachedb_simple_test.rb
112
154
  - test/db2_simple_test.rb
@@ -123,7 +165,6 @@ files:
123
165
  - test/jndi_callbacks_test.rb
124
166
  - test/jndi_test.rb
125
167
  - test/manualTestDatabase.rb
126
- - test/minirunit.rb
127
168
  - test/mssql_db_create_test.rb
128
169
  - test/mssql_identity_insert_test.rb
129
170
  - test/mssql_legacy_types_test.rb
@@ -162,14 +203,6 @@ files:
162
203
  - test/db/oracle.rb
163
204
  - test/db/postgres.rb
164
205
  - test/db/sqlite3.rb
165
- - test/jdbc_adapter/jdbc_db2_test.rb
166
- - test/jdbc_adapter/jdbc_sybase_test.rb
167
- - test/minirunit/testConnect.rb
168
- - test/minirunit/testH2.rb
169
- - test/minirunit/testHsqldb.rb
170
- - test/minirunit/testLoadActiveRecord.rb
171
- - test/minirunit/testMysql.rb
172
- - test/minirunit/testRawSelect.rb
173
206
  - test/models/add_not_null_column_to_table.rb
174
207
  - test/models/auto_id.rb
175
208
  - test/models/data_types.rb
@@ -178,16 +211,16 @@ files:
178
211
  - test/models/reserved_word.rb
179
212
  - test/models/string_id.rb
180
213
  - test/models/validates_uniqueness_of_string.rb
181
- - lib/jdbc_adapter/jdbc.rake
182
- - src/java/jdbc_adapter/JdbcAdapterInternalService.java
183
- - src/java/jdbc_adapter/JdbcConnectionFactory.java
184
- - src/java/jdbc_adapter/JdbcDerbySpec.java
185
- - src/java/jdbc_adapter/JdbcMySQLSpec.java
186
- - src/java/jdbc_adapter/MssqlRubyJdbcConnection.java
187
- - src/java/jdbc_adapter/PostgresRubyJdbcConnection.java
188
- - src/java/jdbc_adapter/RubyJdbcConnection.java
189
- - src/java/jdbc_adapter/SQLBlock.java
190
- - src/java/jdbc_adapter/Sqlite3RubyJdbcConnection.java
214
+ - lib/arjdbc/jdbc/jdbc.rake
215
+ - src/java/arjdbc/derby/DerbyModule.java
216
+ - src/java/arjdbc/jdbc/AdapterJavaService.java
217
+ - src/java/arjdbc/jdbc/JdbcConnectionFactory.java
218
+ - src/java/arjdbc/jdbc/RubyJdbcConnection.java
219
+ - src/java/arjdbc/jdbc/SQLBlock.java
220
+ - src/java/arjdbc/mssql/MssqlRubyJdbcConnection.java
221
+ - src/java/arjdbc/mysql/MySQLModule.java
222
+ - src/java/arjdbc/postgresql/PostgresqlRubyJdbcConnection.java
223
+ - src/java/arjdbc/sqlite3/Sqlite3RubyJdbcConnection.java
191
224
  - rakelib/compile.rake
192
225
  - rakelib/package.rake
193
226
  - rakelib/rails.rake
@@ -214,11 +247,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
214
247
  version: "0"
215
248
  required_rubygems_version: !ruby/object:Gem::Requirement
216
249
  requirements:
217
- - - ">="
250
+ - - ">"
218
251
  - !ruby/object:Gem::Version
219
252
  segments:
220
- - 0
221
- version: "0"
253
+ - 1
254
+ - 3
255
+ - 1
256
+ version: 1.3.1
222
257
  requirements: []
223
258
 
224
259
  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