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
@@ -1,87 +0,0 @@
1
- module ArJdbc
2
- module MissingFunctionalityHelper
3
- #Taken from SQLite adapter
4
-
5
- def alter_table(table_name, options = {}) #:nodoc:
6
- table_name = table_name.to_s.downcase
7
- altered_table_name = "altered_#{table_name}"
8
- caller = lambda {|definition| yield definition if block_given?}
9
-
10
- transaction do
11
- # A temporary table might improve performance here, but
12
- # it doesn't seem to maintain indices across the whole move.
13
- move_table(table_name, altered_table_name,
14
- options)
15
- move_table(altered_table_name, table_name, &caller)
16
- end
17
- end
18
-
19
- def move_table(from, to, options = {}, &block) #:nodoc:
20
- copy_table(from, to, options, &block)
21
- drop_table(from)
22
- end
23
-
24
- def copy_table(from, to, options = {}) #:nodoc:
25
- options = options.merge(:id => (!columns(from).detect{|c| c.name == 'id'}.nil? && 'id' == primary_key(from).to_s))
26
- create_table(to, options) do |definition|
27
- @definition = definition
28
- columns(from).each do |column|
29
- column_name = options[:rename] ?
30
- (options[:rename][column.name] ||
31
- options[:rename][column.name.to_sym] ||
32
- column.name) : column.name
33
-
34
- @definition.column(column_name, column.type,
35
- :limit => column.limit, :default => column.default,
36
- :null => column.null)
37
- end
38
- @definition.primary_key(primary_key(from)) if primary_key(from)
39
- yield @definition if block_given?
40
- end
41
-
42
- copy_table_indexes(from, to, options[:rename] || {})
43
- copy_table_contents(from, to,
44
- @definition.columns.map {|column| column.name},
45
- options[:rename] || {})
46
- end
47
-
48
- def copy_table_indexes(from, to, rename = {}) #:nodoc:
49
- indexes(from).each do |index|
50
- name = index.name.downcase
51
- if to == "altered_#{from}"
52
- name = "temp_#{name}"
53
- elsif from == "altered_#{to}"
54
- name = name[5..-1]
55
- end
56
-
57
- to_column_names = columns(to).map(&:name)
58
- columns = index.columns.map {|c| rename[c] || c }.select do |column|
59
- to_column_names.include?(column)
60
- end
61
-
62
- unless columns.empty?
63
- # index name can't be the same
64
- opts = { :name => name.gsub(/(_?)(#{from})_/, "\\1#{to}_") }
65
- opts[:unique] = true if index.unique
66
- add_index(to, columns, opts)
67
- end
68
- end
69
- end
70
-
71
- def copy_table_contents(from, to, columns, rename = {}) #:nodoc:
72
- column_mappings = Hash[*columns.map {|name| [name, name]}.flatten]
73
- rename.inject(column_mappings) {|map, a| map[a.last] = a.first; map}
74
- from_columns = columns(from).collect {|col| col.name}
75
- columns = columns.find_all{|col| from_columns.include?(column_mappings[col])}
76
- quoted_columns = columns.map { |col| quote_column_name(col) } * ','
77
-
78
- quoted_to = quote_table_name(to)
79
- execute("SELECT * FROM #{quote_table_name(from)}").each do |row|
80
- sql = "INSERT INTO #{quoted_to} (#{quoted_columns}) VALUES ("
81
- sql << columns.map {|col| quote row[column_mappings[col]]} * ', '
82
- sql << ')'
83
- execute sql
84
- end
85
- end
86
- end
87
- end
@@ -1,28 +0,0 @@
1
- module ArJdbc
2
- module QuotedPrimaryKeyExtension
3
- def self.extended(base)
4
- # Rails 3 method Rails 2 method
5
- meth = [:arel_attributes_values, :attributes_with_quotes].detect do |m|
6
- base.private_instance_methods.include?(m.to_s)
7
- end
8
- pk_hash_key = "self.class.primary_key"
9
- pk_hash_value = '"?"'
10
- if meth == :arel_attributes_values
11
- pk_hash_key = "self.class.arel_table[#{pk_hash_key}]"
12
- pk_hash_value = "Arel::SqlLiteral.new(#{pk_hash_value})"
13
- end
14
- if meth
15
- base.module_eval <<-PK, __FILE__, __LINE__
16
- alias :#{meth}_pre_pk :#{meth}
17
- def #{meth}(include_primary_key = true, *args) #:nodoc:
18
- aq = #{meth}_pre_pk(include_primary_key, *args)
19
- if connection.is_a?(ArJdbc::Oracle) || connection.is_a?(ArJdbc::Mimer)
20
- aq[#{pk_hash_key}] = #{pk_hash_value} if include_primary_key && aq[#{pk_hash_key}].nil?
21
- end
22
- aq
23
- end
24
- PK
25
- end
26
- end
27
- end
28
- end
@@ -1,16 +0,0 @@
1
- module Kernel
2
- # load a JDBC driver library/gem, failing silently. If failed, trust
3
- # that the driver jar is already present through some other means
4
- def jdbc_require_driver(path, gem_name = nil)
5
- gem_name ||= path.sub('/', '-')
6
- 2.times do
7
- begin
8
- require path
9
- break
10
- rescue LoadError
11
- require 'rubygems'
12
- begin; gem gem_name; rescue LoadError; end
13
- end
14
- end
15
- end
16
- end
@@ -1,2 +0,0 @@
1
- require 'arjdbc/jdbc'
2
- require 'arjdbc/mimer/adapter'
@@ -1,142 +0,0 @@
1
- module ArJdbc
2
- module Mimer
3
- def self.extended(mod)
4
- require 'arjdbc/jdbc/quoted_primary_key'
5
- ActiveRecord::Base.extend ArJdbc::QuotedPrimaryKeyExtension
6
- end
7
-
8
- def modify_types(tp)
9
- tp[:primary_key] = "INTEGER NOT NULL PRIMARY KEY"
10
- tp[:boolean][:limit] = nil
11
- tp[:string][:limit] = 255
12
- tp[:binary] = {:name => "BINARY VARYING", :limit => 4096}
13
- tp[:text] = {:name => "VARCHAR", :limit => 4096}
14
- tp[:datetime] = { :name => "TIMESTAMP" }
15
- tp[:timestamp] = { :name => "TIMESTAMP" }
16
- tp[:time] = { :name => "TIMESTAMP" }
17
- tp[:date] = { :name => "TIMESTAMP" }
18
- tp
19
- end
20
-
21
- def default_sequence_name(table, column) #:nodoc:
22
- "#{table}_seq"
23
- end
24
-
25
- def create_table(name, options = {}) #:nodoc:
26
- super(name, options)
27
- execute "CREATE SEQUENCE #{name}_seq" unless options[:id] == false
28
- end
29
-
30
- def drop_table(name, options = {}) #:nodoc:
31
- super(name) rescue nil
32
- execute "DROP SEQUENCE #{name}_seq" rescue nil
33
- end
34
-
35
- def change_column(table_name, column_name, type, options = {}) #:nodoc:
36
- execute "ALTER TABLE #{table_name} ALTER COLUMN #{column_name} #{type_to_sql(type, options[:limit])}"
37
- end
38
-
39
- def change_column_default(table_name, column_name, default) #:nodoc:
40
- execute "ALTER TABLE #{table_name} ALTER COLUMN #{column_name} SET DEFAULT #{quote(default)}"
41
- end
42
-
43
- def remove_index(table_name, options = {}) #:nodoc:
44
- execute "DROP INDEX #{index_name(table_name, options)}"
45
- end
46
-
47
- def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) #:nodoc:
48
- if pk.nil? # Who called us? What does the sql look like? No idea!
49
- execute sql, name
50
- elsif id_value # Pre-assigned id
51
- log(sql, name) { @connection.execute_insert sql,pk }
52
- else # Assume the sql contains a bind-variable for the id
53
- id_value = select_one("SELECT NEXT_VALUE OF #{sequence_name} AS val FROM MIMER.ONEROW")['val']
54
- log(sql, name) {
55
- execute_prepared_insert(sql,id_value)
56
- }
57
- end
58
- id_value
59
- end
60
-
61
- def execute_prepared_insert(sql, id)
62
- @stmts ||= {}
63
- @stmts[sql] ||= @connection.ps(sql)
64
- stmt = @stmts[sql]
65
- stmt.setLong(1,id)
66
- stmt.executeUpdate
67
- id
68
- end
69
-
70
- def quote(value, column = nil) #:nodoc:
71
- return value.quoted_id if value.respond_to?(:quoted_id)
72
-
73
- if String === value && column && column.type == :binary
74
- return "X'#{quote_string(value.unpack("C*").collect {|v| v.to_s(16)}.join)}'"
75
- end
76
- case value
77
- when String
78
- %Q{'#{quote_string(value)}'}
79
- when NilClass
80
- 'NULL'
81
- when TrueClass
82
- '1'
83
- when FalseClass
84
- '0'
85
- when Numeric
86
- value.to_s
87
- when Date, Time
88
- %Q{TIMESTAMP '#{value.strftime("%Y-%m-%d %H:%M:%S")}'}
89
- else
90
- %Q{'#{quote_string(value.to_yaml)}'}
91
- end
92
- end
93
-
94
- def quoted_true
95
- '1'
96
- end
97
-
98
- def quoted_false
99
- '0'
100
- end
101
-
102
- def add_limit_offset!(sql, options) # :nodoc:
103
- @limit = options[:limit]
104
- @offset = options[:offset]
105
- end
106
-
107
- def select_all(sql, name = nil)
108
- @offset ||= 0
109
- if !@limit || @limit == -1
110
- range = @offset..-1
111
- else
112
- range = @offset...(@offset+@limit)
113
- end
114
- select(sql, name)[range]
115
- ensure
116
- @limit = @offset = nil
117
- end
118
-
119
- def select_one(sql, name = nil)
120
- @offset ||= 0
121
- select(sql, name)[@offset]
122
- ensure
123
- @limit = @offset = nil
124
- end
125
-
126
- def _execute(sql, name = nil)
127
- if sql =~ /^select/i
128
- @offset ||= 0
129
- if !@limit || @limit == -1
130
- range = @offset..-1
131
- else
132
- range = @offset...(@offset+@limit)
133
- end
134
- @connection.execute_query(sql)[range]
135
- else
136
- @connection.execute_update(sql)
137
- end
138
- ensure
139
- @limit = @offset = nil
140
- end
141
- end
142
- end
@@ -1,61 +0,0 @@
1
- # Common methods for handling TSQL databases.
2
- module TSqlMethods
3
-
4
- def modify_types(tp) #:nodoc:
5
- tp[:primary_key] = "int NOT NULL IDENTITY(1, 1) PRIMARY KEY"
6
- tp[:integer][:limit] = nil
7
- tp[:boolean] = {:name => "bit"}
8
- tp[:binary] = { :name => "image"}
9
- tp
10
- end
11
-
12
- def type_to_sql(type, limit = nil, precision = nil, scale = nil) #:nodoc:
13
- limit = nil if %w(text binary).include? type.to_s
14
- return 'uniqueidentifier' if (type.to_s == 'uniqueidentifier')
15
- return super unless type.to_s == 'integer'
16
-
17
- if limit.nil? || limit == 4
18
- 'int'
19
- elsif limit == 2
20
- 'smallint'
21
- elsif limit == 1
22
- 'tinyint'
23
- else
24
- 'bigint'
25
- end
26
- end
27
-
28
- def add_limit_offset!(sql, options)
29
- if options[:limit] and options[:offset]
30
- total_rows = select_all("SELECT count(*) as TotalRows from (#{sql.gsub(/\bSELECT(\s+DISTINCT)?\b/i, "SELECT\\1 TOP 1000000000")}) tally")[0]["TotalRows"].to_i
31
- if (options[:limit] + options[:offset]) >= total_rows
32
- options[:limit] = (total_rows - options[:offset] >= 0) ? (total_rows - options[:offset]) : 0
33
- end
34
- sql.sub!(/^\s*SELECT(\s+DISTINCT)?/i, "SELECT * FROM (SELECT TOP #{options[:limit]} * FROM (SELECT\\1 TOP #{options[:limit] + options[:offset]} ")
35
- sql << ") AS tmp1"
36
- if options[:order]
37
- options[:order] = options[:order].split(',').map do |field|
38
- parts = field.split(" ")
39
- tc = parts[0]
40
- if sql =~ /\.\[/ and tc =~ /\./ # if column quoting used in query
41
- tc.gsub!(/\./, '\\.\\[')
42
- tc << '\\]'
43
- end
44
- if sql =~ /#{tc} AS (t\d_r\d\d?)/
45
- parts[0] = $1
46
- elsif parts[0] =~ /\w+\.(\w+)/
47
- parts[0] = $1
48
- end
49
- parts.join(' ')
50
- end.join(', ')
51
- sql << " ORDER BY #{change_order_direction(options[:order])}) AS tmp2 ORDER BY #{options[:order]}"
52
- else
53
- sql << " ) AS tmp2"
54
- end
55
- elsif sql !~ /^\s*SELECT (@@|COUNT\()/i
56
- sql.sub!(/^\s*SELECT(\s+DISTINCT)?/i) do
57
- "SELECT#{$1} TOP #{options[:limit]}"
58
- end unless options[:limit].nil?
59
- end
60
- end
61
- end
@@ -1,3 +0,0 @@
1
- require 'arjdbc/jdbc'
2
- require 'arjdbc/oracle/connection_methods'
3
- require 'arjdbc/oracle/adapter'
@@ -1,11 +0,0 @@
1
- class ActiveRecord::Base
2
- class << self
3
- def oracle_connection(config)
4
- config[:port] ||= 1521
5
- config[:url] ||= "jdbc:oracle:thin:@#{config[:host]}:#{config[:port]}:#{config[:database]}"
6
- config[:driver] ||= "oracle.jdbc.driver.OracleDriver"
7
- jdbc_connection(config)
8
- end
9
- end
10
- end
11
-
data/lib/pg.rb DELETED
@@ -1,4 +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.
@@ -1,92 +0,0 @@
1
- MANIFEST = FileList["History.txt", "Manifest.txt", "README.txt",
2
- "Rakefile", "LICENSE.txt", "lib/**/*.rb", "lib/arjdbc/jdbc/adapter_java.jar", "test/**/*.rb",
3
- "lib/**/*.rake", "src/**/*.java", "rakelib/*.rake", "rails_generators/**/*"]
4
-
5
- file "Manifest.txt" => :manifest
6
- task :manifest do
7
- File.open("Manifest.txt", "w") {|f| MANIFEST.each {|n| f << "#{n}\n"} }
8
- end
9
- Rake::Task['manifest'].invoke # Always regen manifest, so Hoe has up-to-date list of files
10
-
11
- require File.dirname(__FILE__) + "/../lib/arjdbc/version"
12
- begin
13
- require 'hoe'
14
- Hoe.plugin :gemcutter
15
- hoe = Hoe.spec("activerecord-jdbc-adapter") do |p|
16
- p.version = ArJdbc::Version::VERSION
17
- p.spec_extras[:platform] = Gem::Platform.new("java")
18
- p.spec_extras[:files] = MANIFEST
19
- p.rubyforge_name = "jruby-extras"
20
- p.url = "http://jruby-extras.rubyforge.org/activerecord-jdbc-adapter"
21
- p.author = "Nick Sieger, Ola Bini and JRuby contributors"
22
- p.email = "nick@nicksieger.com, ola.bini@gmail.com"
23
- p.summary = "JDBC adapter for ActiveRecord, for use within JRuby on Rails."
24
- p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
25
- p.description = p.paragraphs_of('README.txt', 0...1).join("\n\n")
26
- end
27
- hoe.spec.rdoc_options += ["-SHN", "-f", "darkfish"]
28
-
29
- task :gemspec do
30
- File.open("#{hoe.name}.gemspec", "w") {|f| f << hoe.spec.to_ruby }
31
- end
32
- task :package => :gemspec
33
- rescue LoadError => le
34
- puts le.to_s, *le.backtrace
35
- puts "Problem loading Hoe; please check the error above to ensure that Hoe is installed correctly"
36
- rescue => e
37
- puts "ignoring error while loading Hoe: #{e.to_s}"
38
- end
39
-
40
- def rake(*args)
41
- ruby "-S", "rake", *args
42
- end
43
-
44
- %w(test package install_gem release clean).each do |task|
45
- desc "Run rake #{task} on all available adapters and drivers"
46
- task "all:#{task}" => task
47
- task "adapters:#{task}" => task
48
- end
49
-
50
- (Dir["drivers/*/Rakefile"] + Dir["adapters/*/Rakefile"]).each do |rakefile|
51
- dir = File.dirname(rakefile)
52
- prefix = dir.sub(%r{/}, ':')
53
- tasks = %w(package install_gem debug_gem clean gemspec)
54
- tasks << "test" if File.directory?(File.join(dir, "test"))
55
- tasks.each do |task|
56
- desc "Run rake #{task} on #{dir}"
57
- task "#{prefix}:#{task}" do
58
- Dir.chdir(dir) do
59
- rake task
60
- end
61
- end
62
-
63
- task "#{File.dirname(dir)}:#{task}" => "#{prefix}:#{task}"
64
- task "all:#{task}" => "#{prefix}:#{task}"
65
- end
66
-
67
- # Copy all generated gems to the top-level pkg directory for convenience
68
- task "#{prefix}:package" do
69
- FileList["#{dir}/pkg/*.gem"].each {|gem| cp gem, "pkg"}
70
- end
71
-
72
- desc "Run rake release on #{dir}"
73
- task "#{prefix}:release" do
74
- Dir.chdir(dir) do
75
- version = nil
76
- if dir =~ /adapters/
77
- version = ENV['VERSION']
78
- else
79
- Dir["lib/**/*.rb"].each do |file|
80
- version ||= File.open(file) {|f| f.read =~ /VERSION = "([^"]+)"/ && $1}
81
- end
82
- end
83
- rake "release", "VERSION=#{version}"
84
- end
85
- end
86
- # Only release adapters synchronously with main release. Drivers are versioned
87
- # according to their JDBC driver versions.
88
- if dir =~ /adapters/
89
- task "adapters:release" => "#{prefix}:release"
90
- task "all:release" => "#{prefix}:release"
91
- end
92
- end