activerecord-jdbc-adapter 1.0.3-java → 50.1-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 (268) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +33 -0
  3. data/.travis.yml +79 -0
  4. data/.yardopts +4 -0
  5. data/CONTRIBUTING.md +50 -0
  6. data/Gemfile +91 -0
  7. data/History.md +1191 -0
  8. data/LICENSE.txt +22 -17
  9. data/README.md +169 -0
  10. data/RUNNING_TESTS.md +127 -0
  11. data/Rakefile +294 -5
  12. data/Rakefile.jdbc +20 -0
  13. data/activerecord-jdbc-adapter.gemspec +55 -0
  14. data/lib/active_record/connection_adapters/as400_adapter.rb +2 -0
  15. data/lib/active_record/connection_adapters/db2_adapter.rb +1 -0
  16. data/lib/active_record/connection_adapters/firebird_adapter.rb +1 -0
  17. data/lib/active_record/connection_adapters/mariadb_adapter.rb +1 -0
  18. data/lib/active_record/connection_adapters/sqlserver_adapter.rb +1 -0
  19. data/lib/activerecord-jdbc-adapter.rb +0 -5
  20. data/lib/arel/visitors/compat.rb +60 -0
  21. data/lib/arel/visitors/db2.rb +128 -6
  22. data/lib/arel/visitors/derby.rb +103 -10
  23. data/lib/arel/visitors/firebird.rb +79 -0
  24. data/lib/arel/visitors/h2.rb +25 -0
  25. data/lib/arel/visitors/hsqldb.rb +18 -10
  26. data/lib/arel/visitors/postgresql_jdbc.rb +6 -0
  27. data/lib/arel/visitors/sql_server.rb +225 -0
  28. data/lib/arel/visitors/sql_server/ng42.rb +293 -0
  29. data/lib/arjdbc.rb +11 -21
  30. data/lib/arjdbc/abstract/connection_management.rb +35 -0
  31. data/lib/arjdbc/abstract/core.rb +64 -0
  32. data/lib/arjdbc/abstract/database_statements.rb +64 -0
  33. data/lib/arjdbc/abstract/statement_cache.rb +58 -0
  34. data/lib/arjdbc/abstract/transaction_support.rb +86 -0
  35. data/lib/arjdbc/db2.rb +3 -1
  36. data/lib/arjdbc/db2/adapter.rb +630 -250
  37. data/lib/arjdbc/db2/as400.rb +130 -0
  38. data/lib/arjdbc/db2/column.rb +167 -0
  39. data/lib/arjdbc/db2/connection_methods.rb +44 -0
  40. data/lib/arjdbc/derby.rb +1 -5
  41. data/lib/arjdbc/derby/active_record_patch.rb +13 -0
  42. data/lib/arjdbc/derby/adapter.rb +409 -217
  43. data/lib/arjdbc/derby/connection_methods.rb +16 -14
  44. data/lib/arjdbc/derby/schema_creation.rb +15 -0
  45. data/lib/arjdbc/discover.rb +62 -50
  46. data/lib/arjdbc/firebird.rb +3 -1
  47. data/lib/arjdbc/firebird/adapter.rb +365 -62
  48. data/lib/arjdbc/firebird/connection_methods.rb +23 -0
  49. data/lib/arjdbc/h2.rb +2 -3
  50. data/lib/arjdbc/h2/adapter.rb +273 -6
  51. data/lib/arjdbc/h2/connection_methods.rb +23 -8
  52. data/lib/arjdbc/hsqldb.rb +2 -3
  53. data/lib/arjdbc/hsqldb/adapter.rb +204 -77
  54. data/lib/arjdbc/hsqldb/connection_methods.rb +24 -10
  55. data/lib/arjdbc/hsqldb/explain_support.rb +35 -0
  56. data/lib/arjdbc/hsqldb/schema_creation.rb +11 -0
  57. data/lib/arjdbc/informix.rb +4 -2
  58. data/lib/arjdbc/informix/adapter.rb +78 -54
  59. data/lib/arjdbc/informix/connection_methods.rb +8 -9
  60. data/lib/arjdbc/jdbc.rb +59 -2
  61. data/lib/arjdbc/jdbc/adapter.rb +356 -166
  62. data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
  63. data/lib/arjdbc/jdbc/adapter_require.rb +46 -0
  64. data/lib/arjdbc/jdbc/base_ext.rb +15 -0
  65. data/lib/arjdbc/jdbc/callbacks.rb +27 -18
  66. data/lib/arjdbc/jdbc/column.rb +79 -20
  67. data/lib/arjdbc/jdbc/connection.rb +5 -119
  68. data/lib/arjdbc/jdbc/connection_methods.rb +32 -4
  69. data/lib/arjdbc/jdbc/error.rb +65 -0
  70. data/lib/arjdbc/jdbc/extension.rb +41 -29
  71. data/lib/arjdbc/jdbc/java.rb +5 -6
  72. data/lib/arjdbc/jdbc/jdbc.rake +3 -126
  73. data/lib/arjdbc/jdbc/railtie.rb +2 -9
  74. data/lib/arjdbc/jdbc/rake_tasks.rb +3 -10
  75. data/lib/arjdbc/jdbc/serialized_attributes_helper.rb +3 -0
  76. data/lib/arjdbc/jdbc/type_cast.rb +166 -0
  77. data/lib/arjdbc/jdbc/type_converter.rb +35 -19
  78. data/lib/arjdbc/mssql.rb +6 -3
  79. data/lib/arjdbc/mssql/adapter.rb +630 -298
  80. data/lib/arjdbc/mssql/column.rb +200 -0
  81. data/lib/arjdbc/mssql/connection_methods.rb +66 -17
  82. data/lib/arjdbc/mssql/explain_support.rb +99 -0
  83. data/lib/arjdbc/mssql/limit_helpers.rb +189 -50
  84. data/lib/arjdbc/mssql/lock_methods.rb +77 -0
  85. data/lib/arjdbc/mssql/types.rb +343 -0
  86. data/lib/arjdbc/mssql/utils.rb +82 -0
  87. data/lib/arjdbc/mysql.rb +2 -3
  88. data/lib/arjdbc/mysql/adapter.rb +86 -356
  89. data/lib/arjdbc/mysql/connection_methods.rb +159 -23
  90. data/lib/arjdbc/oracle/adapter.rb +714 -263
  91. data/lib/arjdbc/postgresql.rb +2 -3
  92. data/lib/arjdbc/postgresql/_bc_time_cast_patch.rb +24 -0
  93. data/lib/arjdbc/postgresql/adapter.rb +570 -400
  94. data/lib/arjdbc/postgresql/base/array_decoder.rb +26 -0
  95. data/lib/arjdbc/postgresql/base/array_encoder.rb +25 -0
  96. data/lib/arjdbc/postgresql/base/array_parser.rb +95 -0
  97. data/lib/arjdbc/postgresql/base/pgconn.rb +11 -0
  98. data/lib/arjdbc/postgresql/column.rb +51 -0
  99. data/lib/arjdbc/postgresql/connection_methods.rb +57 -18
  100. data/lib/arjdbc/postgresql/name.rb +24 -0
  101. data/lib/arjdbc/postgresql/oid_types.rb +192 -0
  102. data/lib/arjdbc/railtie.rb +11 -0
  103. data/lib/arjdbc/sqlite3.rb +2 -3
  104. data/lib/arjdbc/sqlite3/adapter.rb +518 -198
  105. data/lib/arjdbc/sqlite3/connection_methods.rb +49 -24
  106. data/lib/arjdbc/sybase.rb +2 -2
  107. data/lib/arjdbc/sybase/adapter.rb +7 -6
  108. data/lib/arjdbc/tasks.rb +13 -0
  109. data/lib/arjdbc/tasks/database_tasks.rb +52 -0
  110. data/lib/arjdbc/tasks/databases.rake +91 -0
  111. data/lib/arjdbc/tasks/databases3.rake +215 -0
  112. data/lib/arjdbc/tasks/databases4.rake +39 -0
  113. data/lib/arjdbc/tasks/db2_database_tasks.rb +104 -0
  114. data/lib/arjdbc/tasks/derby_database_tasks.rb +95 -0
  115. data/lib/arjdbc/tasks/h2_database_tasks.rb +31 -0
  116. data/lib/arjdbc/tasks/hsqldb_database_tasks.rb +70 -0
  117. data/lib/arjdbc/tasks/jdbc_database_tasks.rb +169 -0
  118. data/lib/arjdbc/tasks/mssql_database_tasks.rb +46 -0
  119. data/lib/arjdbc/util/quoted_cache.rb +60 -0
  120. data/lib/arjdbc/util/serialized_attributes.rb +98 -0
  121. data/lib/arjdbc/util/table_copier.rb +110 -0
  122. data/lib/arjdbc/version.rb +1 -6
  123. data/lib/generators/jdbc/USAGE +9 -0
  124. data/lib/generators/jdbc/jdbc_generator.rb +8 -0
  125. data/lib/jdbc_adapter.rb +1 -1
  126. data/lib/jdbc_adapter/rake_tasks.rb +3 -2
  127. data/lib/jdbc_adapter/version.rb +2 -1
  128. data/pom.xml +114 -0
  129. data/rails_generators/jdbc_generator.rb +1 -1
  130. data/rails_generators/templates/config/initializers/jdbc.rb +8 -5
  131. data/rails_generators/templates/lib/tasks/jdbc.rake +7 -4
  132. data/rakelib/01-tomcat.rake +51 -0
  133. data/rakelib/02-test.rake +132 -0
  134. data/rakelib/bundler_ext.rb +11 -0
  135. data/rakelib/compile.rake +67 -22
  136. data/rakelib/db.rake +61 -0
  137. data/rakelib/rails.rake +204 -29
  138. data/src/java/arjdbc/ArJdbcModule.java +286 -0
  139. data/src/java/arjdbc/db2/DB2Module.java +76 -0
  140. data/src/java/arjdbc/db2/DB2RubyJdbcConnection.java +126 -0
  141. data/src/java/arjdbc/derby/DerbyModule.java +99 -243
  142. data/src/java/arjdbc/derby/DerbyRubyJdbcConnection.java +152 -0
  143. data/src/java/arjdbc/firebird/FirebirdRubyJdbcConnection.java +174 -0
  144. data/src/java/arjdbc/{jdbc/JdbcConnectionFactory.java → h2/H2Module.java} +20 -6
  145. data/src/java/arjdbc/h2/H2RubyJdbcConnection.java +27 -12
  146. data/src/java/arjdbc/hsqldb/HSQLDBModule.java +73 -0
  147. data/src/java/arjdbc/informix/InformixRubyJdbcConnection.java +7 -6
  148. data/src/java/arjdbc/jdbc/AdapterJavaService.java +7 -29
  149. data/src/java/arjdbc/jdbc/Callable.java +44 -0
  150. data/src/java/arjdbc/jdbc/ConnectionFactory.java +132 -0
  151. data/src/java/arjdbc/jdbc/DataSourceConnectionFactory.java +157 -0
  152. data/src/java/arjdbc/jdbc/DriverConnectionFactory.java +63 -0
  153. data/src/java/arjdbc/jdbc/DriverWrapper.java +119 -0
  154. data/src/java/arjdbc/jdbc/JdbcResult.java +130 -0
  155. data/src/java/arjdbc/jdbc/RubyJdbcConnection.java +3622 -948
  156. data/src/java/arjdbc/mssql/MSSQLModule.java +90 -0
  157. data/src/java/arjdbc/mssql/MSSQLRubyJdbcConnection.java +181 -0
  158. data/src/java/arjdbc/mysql/MySQLModule.java +99 -81
  159. data/src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java +294 -0
  160. data/src/java/arjdbc/oracle/OracleModule.java +80 -0
  161. data/src/java/arjdbc/oracle/OracleRubyJdbcConnection.java +387 -17
  162. data/src/java/arjdbc/postgresql/ByteaUtils.java +157 -0
  163. data/src/java/arjdbc/postgresql/PgResultSetMetaDataWrapper.java +23 -0
  164. data/src/java/arjdbc/postgresql/PostgreSQLModule.java +77 -0
  165. data/src/java/arjdbc/postgresql/PostgreSQLResult.java +184 -0
  166. data/src/java/arjdbc/postgresql/PostgreSQLRubyJdbcConnection.java +952 -0
  167. data/src/java/arjdbc/sqlite3/SQLite3Module.java +73 -0
  168. data/src/java/arjdbc/sqlite3/SQLite3RubyJdbcConnection.java +525 -0
  169. data/src/java/arjdbc/util/CallResultSet.java +826 -0
  170. data/src/java/arjdbc/util/DateTimeUtils.java +580 -0
  171. data/src/java/arjdbc/util/ObjectSupport.java +65 -0
  172. data/src/java/arjdbc/util/QuotingUtils.java +138 -0
  173. data/src/java/arjdbc/util/StringCache.java +63 -0
  174. data/src/java/arjdbc/util/StringHelper.java +159 -0
  175. metadata +245 -268
  176. data/History.txt +0 -369
  177. data/Manifest.txt +0 -180
  178. data/README.txt +0 -181
  179. data/lib/active_record/connection_adapters/oracle_adapter.rb +0 -1
  180. data/lib/arel/engines/sql/compilers/db2_compiler.rb +0 -9
  181. data/lib/arel/engines/sql/compilers/derby_compiler.rb +0 -6
  182. data/lib/arel/engines/sql/compilers/h2_compiler.rb +0 -6
  183. data/lib/arel/engines/sql/compilers/hsqldb_compiler.rb +0 -15
  184. data/lib/arel/engines/sql/compilers/jdbc_compiler.rb +0 -6
  185. data/lib/arel/engines/sql/compilers/mssql_compiler.rb +0 -46
  186. data/lib/arel/visitors/mssql.rb +0 -44
  187. data/lib/arjdbc/jdbc/compatibility.rb +0 -51
  188. data/lib/arjdbc/jdbc/core_ext.rb +0 -24
  189. data/lib/arjdbc/jdbc/discover.rb +0 -18
  190. data/lib/arjdbc/jdbc/driver.rb +0 -44
  191. data/lib/arjdbc/jdbc/missing_functionality_helper.rb +0 -87
  192. data/lib/arjdbc/jdbc/quoted_primary_key.rb +0 -28
  193. data/lib/arjdbc/jdbc/require_driver.rb +0 -16
  194. data/lib/arjdbc/mimer.rb +0 -2
  195. data/lib/arjdbc/mimer/adapter.rb +0 -142
  196. data/lib/arjdbc/mssql/tsql_helper.rb +0 -61
  197. data/lib/arjdbc/oracle.rb +0 -3
  198. data/lib/arjdbc/oracle/connection_methods.rb +0 -11
  199. data/lib/pg.rb +0 -4
  200. data/rakelib/package.rake +0 -92
  201. data/rakelib/test.rake +0 -81
  202. data/src/java/arjdbc/jdbc/SQLBlock.java +0 -48
  203. data/src/java/arjdbc/mssql/MssqlRubyJdbcConnection.java +0 -127
  204. data/src/java/arjdbc/postgresql/PostgresqlRubyJdbcConnection.java +0 -57
  205. data/src/java/arjdbc/sqlite3/Sqlite3RubyJdbcConnection.java +0 -64
  206. data/test/abstract_db_create.rb +0 -117
  207. data/test/activerecord/connection_adapters/type_conversion_test.rb +0 -31
  208. data/test/activerecord/connections/native_jdbc_mysql/connection.rb +0 -25
  209. data/test/db/db2.rb +0 -11
  210. data/test/db/derby.rb +0 -12
  211. data/test/db/h2.rb +0 -11
  212. data/test/db/hsqldb.rb +0 -13
  213. data/test/db/informix.rb +0 -11
  214. data/test/db/jdbc.rb +0 -11
  215. data/test/db/jndi_config.rb +0 -40
  216. data/test/db/logger.rb +0 -3
  217. data/test/db/mssql.rb +0 -9
  218. data/test/db/mysql.rb +0 -10
  219. data/test/db/oracle.rb +0 -34
  220. data/test/db/postgres.rb +0 -9
  221. data/test/db/sqlite3.rb +0 -11
  222. data/test/db2_simple_test.rb +0 -66
  223. data/test/derby_migration_test.rb +0 -68
  224. data/test/derby_multibyte_test.rb +0 -12
  225. data/test/derby_simple_test.rb +0 -99
  226. data/test/generic_jdbc_connection_test.rb +0 -29
  227. data/test/h2_simple_test.rb +0 -41
  228. data/test/has_many_through.rb +0 -79
  229. data/test/helper.rb +0 -5
  230. data/test/hsqldb_simple_test.rb +0 -6
  231. data/test/informix_simple_test.rb +0 -48
  232. data/test/jdbc_common.rb +0 -25
  233. data/test/jndi_callbacks_test.rb +0 -40
  234. data/test/jndi_test.rb +0 -25
  235. data/test/manualTestDatabase.rb +0 -191
  236. data/test/models/add_not_null_column_to_table.rb +0 -12
  237. data/test/models/auto_id.rb +0 -18
  238. data/test/models/data_types.rb +0 -28
  239. data/test/models/entry.rb +0 -43
  240. data/test/models/mixed_case.rb +0 -25
  241. data/test/models/reserved_word.rb +0 -18
  242. data/test/models/string_id.rb +0 -18
  243. data/test/models/validates_uniqueness_of_string.rb +0 -19
  244. data/test/mssql_db_create_test.rb +0 -26
  245. data/test/mssql_identity_insert_test.rb +0 -19
  246. data/test/mssql_legacy_types_test.rb +0 -58
  247. data/test/mssql_limit_offset_test.rb +0 -136
  248. data/test/mssql_multibyte_test.rb +0 -18
  249. data/test/mssql_simple_test.rb +0 -55
  250. data/test/mysql_db_create_test.rb +0 -27
  251. data/test/mysql_info_test.rb +0 -113
  252. data/test/mysql_multibyte_test.rb +0 -10
  253. data/test/mysql_nonstandard_primary_key_test.rb +0 -42
  254. data/test/mysql_simple_test.rb +0 -49
  255. data/test/oracle_simple_test.rb +0 -18
  256. data/test/oracle_specific_test.rb +0 -83
  257. data/test/pick_rails_version.rb +0 -3
  258. data/test/postgres_db_create_test.rb +0 -32
  259. data/test/postgres_drop_db_test.rb +0 -16
  260. data/test/postgres_mixed_case_test.rb +0 -29
  261. data/test/postgres_nonseq_pkey_test.rb +0 -38
  262. data/test/postgres_reserved_test.rb +0 -22
  263. data/test/postgres_schema_search_path_test.rb +0 -44
  264. data/test/postgres_simple_test.rb +0 -51
  265. data/test/postgres_table_alias_length_test.rb +0 -15
  266. data/test/simple.rb +0 -546
  267. data/test/sqlite3_simple_test.rb +0 -233
  268. data/test/sybase_jtds_simple_test.rb +0 -28
data/README.txt DELETED
@@ -1,181 +0,0 @@
1
- activerecord-jdbc-adapter is a database adapter for Rails' ActiveRecord
2
- component that can be used with JRuby[http://www.jruby.org/]. It allows use of
3
- virtually any JDBC-compliant database with your JRuby on Rails application.
4
-
5
- == Databases
6
-
7
- Activerecord-jdbc-adapter provides full or nearly full support for:
8
- MySQL, PostgreSQL, SQLite3, Oracle, Microsoft SQL Server, DB2,
9
- FireBird, Derby, HSQLDB, H2, and Informix.
10
-
11
- Other databases will require testing and likely a custom configuration module.
12
- Please join the activerecord-jdbc
13
- mailing-lists[http://kenai.com/projects/activerecord-jdbc/lists] to help us discover
14
- support for more databases.
15
-
16
- == Using ActiveRecord JDBC
17
-
18
- === Inside Rails
19
-
20
- To use activerecord-jdbc-adapter with JRuby on Rails:
21
-
22
- 1. Choose the adapter you wish to gem install. The following pre-packaged
23
- adapters are available:
24
-
25
- * base jdbc (<tt>activerecord-jdbc-adapter</tt>). Supports all available databases via JDBC, but requires you to download and manually install the database vendor's JDBC driver .jar file.
26
- * mysql (<tt>activerecord-jdbcmysql-adapter</tt>)
27
- * postgresql (<tt>activerecord-jdbcpostgresql-adapter</tt>)
28
- * sqlite3 (<tt>activerecord-jdbcsqlite3-adapter</tt>)
29
- * derby (<tt>activerecord-jdbcderby-adapter</tt>)
30
- * hsqldb (<tt>activerecord-jdbchsqldb-adapter</tt>)
31
- * h2 (<tt>activerecord-jdbch2-adapter</tt>)
32
- * mssql (<tt>activerecord-jdbcmssql-adapter</tt>)
33
-
34
- 2a. For Rails 3, if you're generating a new application, use the
35
- following command to generate your application:
36
-
37
- jruby -S rails new sweetapp -m http://jruby.org/rails3.rb
38
-
39
- 2b. Otherwise, you'll need to perform some extra configuration steps
40
- to prepare your Rails application for JDBC.
41
-
42
- If you're using Rails 3, you'll need to modify your Gemfile to use the
43
- activerecord-jdbc-adapter gem under JRuby. Change your Gemfile to look
44
- like the following (using sqlite3 as an example):
45
-
46
- if defined?(JRUBY_VERSION)
47
- gem 'activerecord-jdbc-adapter'
48
- gem 'jdbc-sqlite3'
49
- else
50
- gem 'sqlite3-ruby', :require => 'sqlite3'
51
- end
52
-
53
- If you're using Rails 2:
54
-
55
- jruby script/generate jdbc
56
-
57
- 3. Configure your database.yml in the normal Rails style.
58
-
59
- Legacy configuration: If you use one of the convenience
60
- 'activerecord-jdbcXXX-adapter' adapters, you can still put a 'jdbc'
61
- prefix in front of the database adapter name as below.
62
-
63
- development:
64
- adapter: jdbcmysql
65
- username: blog
66
- password:
67
- hostname: localhost
68
- database: weblog_development
69
-
70
- For other databases, you'll need to know the database driver class and
71
- URL. Example:
72
-
73
- development:
74
- adapter: jdbc
75
- username: blog
76
- password:
77
- driver: com.mysql.jdbc.Driver
78
- url: jdbc:mysql://localhost:3306/weblog_development
79
-
80
- For JNDI data sources, you may simply specify the JNDI location as follows
81
- (the adapter will be automatically detected):
82
-
83
- production:
84
- adapter: jdbc
85
- jndi: jdbc/mysqldb
86
-
87
- === Standalone, with ActiveRecord
88
-
89
- 1. Install the gem with JRuby:
90
-
91
- jruby -S gem install activerecord-jdbc-adapter
92
-
93
- If you wish to use the adapter for a specific database, you can
94
- install it directly and a driver gem will be installed as well:
95
-
96
- jruby -S gem install activerecord-jdbcderby-adapter
97
-
98
- 2. After this you can establish a JDBC connection like this:
99
-
100
- ActiveRecord::Base.establish_connection(
101
- :adapter => 'jdbcderby',
102
- :database => "db/my-database"
103
- )
104
-
105
- or like this (but requires that you manually put the driver jar on the classpath):
106
-
107
- ActiveRecord::Base.establish_connection(
108
- :adapter => 'jdbc',
109
- :driver => 'org.apache.derby.jdbc.EmbeddedDriver',
110
- :url => 'jdbc:derby:test_ar;create=true'
111
- )
112
-
113
- == Extending AR-JDBC
114
-
115
- You can create your own extension to AR-JDBC for a JDBC-based database
116
- that core AR-JDBC does not support. We've created an example project
117
- for the Intersystems Cache database that you can examine as a
118
- template. See the project for more information at the following URL:
119
-
120
- http://github.com/nicksieger/activerecord-cachedb-adapter
121
-
122
- == Getting the source
123
-
124
- The source for activerecord-jdbc-adapter is available using git.
125
-
126
- git clone git://github.com/nicksieger/activerecord-jdbc-adapter.git
127
-
128
- == Feedback
129
-
130
- Please file bug reports at
131
- http://kenai.com/jira/browse/ACTIVERECORD_JDBC. If you're not sure if
132
- something's a bug, feel free to pre-report it on the mailing lists.
133
-
134
- == Project Info
135
-
136
- * Mailing Lists: http://kenai.com/projects/activerecord-jdbc/lists
137
- * Issues: http://kenai.com/jira/browse/ACTIVERECORD_JDBC
138
- * Source:
139
- git://github.com/nicksieger/activerecord-jdbc-adapter.git
140
- git://kenai.com/activerecord-jdbc~main
141
-
142
- == Running AR-JDBC's Tests
143
-
144
- Drivers for 6 open-source databases are included. Provided you have
145
- MySQL installed, you can simply type <tt>jruby -S rake</tt> to run the
146
- tests. A database named <tt>weblog_development</tt> is needed
147
- beforehand with a connection user of "blog" and an empty password. You
148
- alse need to grant "blog" create privileges on
149
- 'test_rake_db_create.*'.
150
-
151
- If you also have PostgreSQL available, those tests will be run if the
152
- `psql' executable can be found. Also ensure you have a database named
153
- <tt>weblog_development</tt> and a user named "blog" and an empty
154
- password.
155
-
156
- If you want rails logging enabled during these test runs you can edit
157
- test/jdbc_common.rb and add the following line:
158
-
159
- require 'db/logger'
160
-
161
- == Running AR Tests
162
-
163
- To run the current AR-JDBC sources with ActiveRecord, just use the
164
- included "rails:test" task. Be sure to specify a driver and a path to
165
- the ActiveRecord sources.
166
-
167
- jruby -S rake rails:test DRIVER=mysql RAILS=/path/activerecord_source_dir
168
-
169
- == Authors
170
-
171
- This project was written by Nick Sieger <nick@nicksieger.com> and Ola Bini
172
- <olabini@gmail.com> with lots of help from the JRuby community.
173
-
174
- == License
175
-
176
- activerecord-jdbc-adapter is released under a BSD license. See the LICENSE file
177
- included with the distribution for details.
178
-
179
- Open-source driver gems for activerecord-jdbc-adapter are licensed under the
180
- same license the database's drivers are licensed. See each driver gem's
181
- LICENSE.txt file for details.
@@ -1 +0,0 @@
1
- require 'arjdbc/oracle'
@@ -1,9 +0,0 @@
1
- require 'arel/engines/sql/compilers/ibm_db_compiler'
2
-
3
- module Arel
4
- module SqlCompiler
5
- class DB2Compiler < IBM_DBCompiler
6
- end
7
- end
8
- end
9
-
@@ -1,6 +0,0 @@
1
- module Arel
2
- module SqlCompiler
3
- class DerbyCompiler < GenericCompiler
4
- end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Arel
2
- module SqlCompiler
3
- class H2Compiler < GenericCompiler
4
- end
5
- end
6
- end
@@ -1,15 +0,0 @@
1
- module Arel
2
- module SqlCompiler
3
- class HsqldbCompiler < GenericCompiler
4
- def select_sql
5
- # HSQLDB needs to add LIMIT in right after SELECT
6
- query = super
7
- offset = relation.skipped
8
- limit = relation.taken
9
- @engine.connection.add_limit_offset!(query, :limit => limit,
10
- :offset => offset) if offset || limit
11
- query
12
- end
13
- end
14
- end
15
- end
@@ -1,6 +0,0 @@
1
- module Arel
2
- module SqlCompiler
3
- class JDBCCompiler < GenericCompiler
4
- end
5
- end
6
- end
@@ -1,46 +0,0 @@
1
- module Arel
2
- module SqlCompiler
3
- class MsSQLCompiler < GenericCompiler
4
- def select_sql
5
- projections = @relation.projections
6
- offset = relation.skipped
7
- limit = relation.taken
8
- if Count === projections.first && projections.size == 1 &&
9
- (relation.taken.present? || relation.wheres.present?) && relation.joins(self).blank?
10
- subquery = [
11
- "SELECT * FROM #{relation.from_clauses}", build_clauses
12
- ].join ' '
13
- @engine.connection.add_limit_offset!(subquery, :limit => limit, :offset => offset) if offset || limit
14
- query = "SELECT COUNT(*) AS count_id FROM (#{subquery}) AS subquery"
15
- else
16
- query = [
17
- "SELECT #{relation.select_clauses.join(', ')}",
18
- "FROM #{relation.from_clauses}",
19
- build_clauses
20
- ].compact.join ' '
21
- @engine.connection.add_limit_offset!(query, :limit => limit, :offset => offset) if offset || limit
22
- end
23
- query
24
- end
25
-
26
- def build_clauses
27
- joins = relation.joins(self)
28
- wheres = relation.where_clauses
29
- groups = relation.group_clauses
30
- havings = relation.having_clauses
31
- orders = relation.order_clauses
32
-
33
- clauses = [ "",
34
- joins,
35
- ("WHERE #{wheres.join(' AND ')}" unless wheres.empty?),
36
- ("GROUP BY #{groups.join(', ')}" unless groups.empty?),
37
- ("HAVING #{havings.join(' AND ')}" unless havings.empty?),
38
- ("ORDER BY #{orders.join(', ')}" unless orders.empty?)
39
- ].compact.join ' '
40
-
41
- clauses << " #{locked}" unless locked.blank?
42
- clauses unless clauses.blank?
43
- end
44
- end
45
- end
46
- end
@@ -1,44 +0,0 @@
1
- module Arel
2
- module Visitors
3
- class SQLServer < Arel::Visitors::ToSql
4
- include ArJdbc::MsSQL::LimitHelpers::SqlServerReplaceLimitOffset
5
-
6
- def select_count? o
7
- sel = o.cores.length == 1 && o.cores.first
8
- projections = sel.projections.length == 1 && sel.projections
9
- Arel::Nodes::Count === projections.first
10
- end
11
-
12
- # Need to mimic the subquery logic in ARel 1.x for select count with limit
13
- # See arel/engines/sql/compilers/mssql_compiler.rb for details
14
- def visit_Arel_Nodes_SelectStatement o
15
- order = "ORDER BY #{o.orders.map { |x| visit x }.join(', ')}" unless o.orders.empty?
16
- if o.limit
17
- if select_count?(o)
18
- subquery = true
19
- sql = o.cores.map do |x|
20
- x = x.dup
21
- x.projections = [Arel::Nodes::SqlLiteral.new("*")]
22
- visit_Arel_Nodes_SelectCore x
23
- end.join
24
- else
25
- sql = o.cores.map { |x| visit_Arel_Nodes_SelectCore x }.join
26
- end
27
-
28
- order ||= "ORDER BY #{@connection.determine_order_clause(sql)}"
29
- replace_limit_offset!(sql, o.limit.to_i, o.offset && o.offset.value.to_i, order)
30
- sql = "SELECT COUNT(*) AS count_id FROM (#{sql}) AS subquery" if subquery
31
- elsif order
32
- sql << " #{order}"
33
- else
34
- sql = super
35
- end
36
- sql
37
- end
38
- end
39
-
40
- class SQLServer2000 < SQLServer
41
- include ArJdbc::MsSQL::LimitHelpers::SqlServer2000ReplaceLimitOffset
42
- end
43
- end
44
- end
@@ -1,51 +0,0 @@
1
- # AR's 2.2 version of this method is sufficient, but we need it for
2
- # older versions
3
- if ActiveRecord::VERSION::MAJOR <= 2 && ActiveRecord::VERSION::MINOR < 2
4
- module ActiveRecord
5
- module ConnectionAdapters # :nodoc:
6
- module SchemaStatements
7
- # Convert the speficied column type to a SQL string.
8
- def type_to_sql(type, limit = nil, precision = nil, scale = nil)
9
- if native = native_database_types[type]
10
- column_type_sql = (native.is_a?(Hash) ? native[:name] : native).dup
11
-
12
- if type == :decimal # ignore limit, use precision and scale
13
- scale ||= native[:scale]
14
-
15
- if precision ||= native[:precision]
16
- if scale
17
- column_type_sql << "(#{precision},#{scale})"
18
- else
19
- column_type_sql << "(#{precision})"
20
- end
21
- elsif scale
22
- raise ArgumentError, "Error adding decimal column: precision cannot be empty if scale if specified"
23
- end
24
-
25
- elsif limit ||= native.is_a?(Hash) && native[:limit]
26
- column_type_sql << "(#{limit})"
27
- end
28
-
29
- column_type_sql
30
- else
31
- type
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
38
-
39
- module ActiveRecord
40
- module ConnectionAdapters
41
- module CompatibilityMethods
42
- def self.needed?(base)
43
- !base.instance_methods.include?("quote_table_name")
44
- end
45
-
46
- def quote_table_name(name)
47
- quote_column_name(name)
48
- end
49
- end
50
- end
51
- end
@@ -1,24 +0,0 @@
1
- module ActiveRecord # :nodoc:
2
- # Represents exceptions that have propagated up through the JDBC API.
3
- class JDBCError < ActiveRecordError
4
- # The vendor code or error number that came from the database
5
- attr_accessor :errno
6
-
7
- # The full Java SQLException object that was raised
8
- attr_accessor :sql_exception
9
- end
10
-
11
- module ConnectionAdapters # :nodoc:
12
- # Allows properly re-wrapping/re-defining methods that may already
13
- # be alias_method_chain'd.
14
- module ShadowCoreMethods
15
- def alias_chained_method(meth, feature, target)
16
- if instance_methods.include?("#{meth}_without_#{feature}")
17
- alias_method "#{meth}_without_#{feature}".to_sym, target
18
- else
19
- alias_method meth, target if meth != target
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,18 +0,0 @@
1
- module ArJdbc
2
- def self.discover_extensions
3
- if defined?(::Gem)
4
- files = Gem.find_files('arjdbc/discover')
5
- else
6
- files = $LOAD_PATH.map do |p|
7
- discover = File.join(p, 'arjdbc','discover.rb')
8
- File.exist?(p) ? discover : nil
9
- end.compact
10
- end
11
- files.each do |f|
12
- puts "Loading #{f}" if $DEBUG
13
- require f
14
- end
15
- end
16
-
17
- discover_extensions
18
- end
@@ -1,44 +0,0 @@
1
- module ActiveRecord
2
- module ConnectionAdapters
3
- class JdbcDriver
4
- def initialize(name)
5
- @name = name
6
- end
7
-
8
- def driver_class
9
- @driver_class ||= begin
10
- driver_class_const = (@name[0...1].capitalize + @name[1..@name.length]).gsub(/\./, '_')
11
- Jdbc::Mutex.synchronized do
12
- unless Jdbc.const_defined?(driver_class_const)
13
- driver_class_name = @name
14
- Jdbc.module_eval do
15
- include_class(driver_class_name) { driver_class_const }
16
- end
17
- end
18
- end
19
- driver_class = Jdbc.const_get(driver_class_const)
20
- raise "You specify a driver for your JDBC connection" unless driver_class
21
- driver_class
22
- end
23
- end
24
-
25
- def load
26
- Jdbc::DriverManager.registerDriver(create)
27
- end
28
-
29
- def connection(url, user, pass)
30
- Jdbc::DriverManager.getConnection(url, user, pass)
31
- rescue
32
- # bypass DriverManager to get around problem with dynamically loaded jdbc drivers
33
- props = java.util.Properties.new
34
- props.setProperty("user", user)
35
- props.setProperty("password", pass)
36
- create.connect(url, props)
37
- end
38
-
39
- def create
40
- driver_class.new
41
- end
42
- end
43
- end
44
- end