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.
- data/History.txt +11 -0
- data/Manifest.txt +71 -38
- data/lib/active_record/connection_adapters/cachedb_adapter.rb +1 -1
- data/lib/active_record/connection_adapters/derby_adapter.rb +1 -13
- data/lib/active_record/connection_adapters/h2_adapter.rb +1 -13
- data/lib/active_record/connection_adapters/hsqldb_adapter.rb +1 -13
- data/lib/active_record/connection_adapters/informix_adapter.rb +1 -1
- data/lib/active_record/connection_adapters/jdbc_adapter.rb +1 -661
- data/lib/active_record/connection_adapters/jndi_adapter.rb +1 -1
- data/lib/active_record/connection_adapters/mssql_adapter.rb +1 -13
- data/lib/active_record/connection_adapters/mysql_adapter.rb +1 -13
- data/lib/active_record/connection_adapters/oracle_adapter.rb +1 -1
- data/lib/active_record/connection_adapters/postgresql_adapter.rb +1 -13
- data/lib/active_record/connection_adapters/sqlite3_adapter.rb +1 -13
- data/lib/activerecord-jdbc-adapter.rb +2 -2
- data/lib/arjdbc/cachedb/adapter.rb +20 -0
- data/lib/arjdbc/cachedb/connection_methods.rb +10 -0
- data/lib/arjdbc/cachedb.rb +3 -0
- data/lib/{jdbc_adapter/jdbc_db2.rb → arjdbc/db2/adapter.rb} +2 -17
- data/lib/arjdbc/db2.rb +2 -0
- data/lib/{jdbc_adapter/jdbc_derby.rb → arjdbc/derby/adapter.rb} +8 -26
- data/lib/arjdbc/derby/connection_methods.rb +18 -0
- data/lib/arjdbc/derby.rb +7 -0
- data/lib/arjdbc/discover.rb +99 -0
- data/lib/{jdbc_adapter/jdbc_firebird.rb → arjdbc/firebird/adapter.rb} +12 -16
- data/lib/arjdbc/firebird.rb +2 -0
- data/lib/arjdbc/h2/adapter.rb +15 -0
- data/lib/arjdbc/h2/connection_methods.rb +12 -0
- data/lib/arjdbc/h2.rb +4 -0
- data/lib/{jdbc_adapter/jdbc_hsqldb.rb → arjdbc/hsqldb/adapter.rb} +6 -58
- data/lib/arjdbc/hsqldb/connection_methods.rb +14 -0
- data/lib/arjdbc/hsqldb.rb +4 -0
- data/lib/{jdbc_adapter/jdbc_informix.rb → arjdbc/informix/adapter.rb} +6 -19
- data/lib/arjdbc/informix/connection_methods.rb +10 -0
- data/lib/arjdbc/informix.rb +3 -0
- data/lib/arjdbc/jdbc/adapter.rb +235 -0
- data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
- data/lib/arjdbc/jdbc/callbacks.rb +44 -0
- data/lib/arjdbc/jdbc/column.rb +38 -0
- data/lib/arjdbc/jdbc/compatibility.rb +51 -0
- data/lib/arjdbc/jdbc/connection.rb +97 -0
- data/lib/arjdbc/jdbc/connection_methods.rb +16 -0
- data/lib/arjdbc/jdbc/core_ext.rb +24 -0
- data/lib/arjdbc/jdbc/discover.rb +18 -0
- data/lib/arjdbc/jdbc/driver.rb +44 -0
- data/lib/arjdbc/jdbc/extension.rb +47 -0
- data/lib/arjdbc/jdbc/java.rb +14 -0
- data/lib/{jdbc_adapter → arjdbc/jdbc}/missing_functionality_helper.rb +5 -5
- data/lib/arjdbc/jdbc/quoted_primary_key.rb +28 -0
- data/lib/{jdbc_adapter → arjdbc/jdbc}/railtie.rb +1 -1
- data/lib/arjdbc/jdbc/require_driver.rb +16 -0
- data/lib/arjdbc/jdbc/type_converter.rb +119 -0
- data/lib/arjdbc/jdbc.rb +2 -0
- data/lib/{jdbc_adapter/jdbc_mimer.rb → arjdbc/mimer/adapter.rb} +16 -19
- data/lib/arjdbc/mimer.rb +2 -0
- data/lib/{jdbc_adapter/jdbc_mssql.rb → arjdbc/mssql/adapter.rb} +19 -31
- data/lib/arjdbc/mssql/connection_methods.rb +13 -0
- data/lib/arjdbc/mssql.rb +4 -0
- data/lib/arjdbc/mysql/adapter.rb +388 -0
- data/lib/arjdbc/mysql/connection_methods.rb +26 -0
- data/lib/arjdbc/mysql.rb +4 -0
- data/lib/{jdbc_adapter/jdbc_oracle.rb → arjdbc/oracle/adapter.rb} +9 -17
- data/lib/arjdbc/oracle/connection_methods.rb +11 -0
- data/lib/arjdbc/oracle.rb +3 -0
- data/lib/{jdbc_adapter/jdbc_postgre.rb → arjdbc/postgresql/adapter.rb} +7 -36
- data/lib/arjdbc/postgresql/connection_methods.rb +21 -0
- data/lib/arjdbc/postgresql.rb +4 -0
- data/lib/{jdbc_adapter/jdbc_sqlite3.rb → arjdbc/sqlite3/adapter.rb} +106 -104
- data/lib/arjdbc/sqlite3/connection_methods.rb +33 -0
- data/lib/arjdbc/sqlite3.rb +4 -0
- data/lib/arjdbc/sybase/adapter.rb +46 -0
- data/lib/arjdbc/sybase.rb +2 -0
- data/lib/arjdbc/version.rb +8 -0
- data/lib/arjdbc.rb +29 -0
- data/lib/jdbc_adapter/version.rb +3 -5
- data/lib/jdbc_adapter.rb +2 -27
- data/rails_generators/templates/config/initializers/jdbc.rb +1 -1
- data/rakelib/compile.rake +3 -2
- data/rakelib/package.rake +3 -3
- data/src/java/{jdbc_adapter/JdbcDerbySpec.java → arjdbc/derby/DerbyModule.java} +32 -32
- data/src/java/{jdbc_adapter/JdbcAdapterInternalService.java → arjdbc/jdbc/AdapterJavaService.java} +13 -7
- data/src/java/{jdbc_adapter → arjdbc/jdbc}/JdbcConnectionFactory.java +6 -6
- data/src/java/{jdbc_adapter → arjdbc/jdbc}/RubyJdbcConnection.java +91 -16
- data/src/java/arjdbc/jdbc/SQLBlock.java +48 -0
- data/src/java/{jdbc_adapter → arjdbc/mssql}/MssqlRubyJdbcConnection.java +5 -2
- data/src/java/{jdbc_adapter/JdbcMySQLSpec.java → arjdbc/mysql/MySQLModule.java} +12 -12
- data/src/java/{jdbc_adapter/PostgresRubyJdbcConnection.java → arjdbc/postgresql/PostgresqlRubyJdbcConnection.java} +11 -9
- data/src/java/arjdbc/sqlite3/Sqlite3RubyJdbcConnection.java +64 -0
- data/test/abstract_db_create.rb +4 -1
- data/test/activerecord/connection_adapters/type_conversion_test.rb +1 -1
- data/test/db/cachedb.rb +0 -0
- data/test/db/derby.rb +12 -14
- data/test/db/hsqldb.rb +3 -2
- data/test/db/jndi_config.rb +4 -4
- data/test/db/sqlite3.rb +2 -6
- data/test/db2_simple_test.rb +23 -0
- data/test/derby_migration_test.rb +50 -3
- data/test/jdbc_common.rb +1 -1
- data/test/jndi_callbacks_test.rb +1 -0
- data/test/postgres_nonseq_pkey_test.rb +0 -2
- data/test/postgres_schema_search_path_test.rb +0 -2
- data/test/simple.rb +3 -3
- data/test/sybase_jtds_simple_test.rb +22 -0
- metadata +81 -46
- data/lib/active_record/connection_adapters/jdbc_adapter_spec.rb +0 -26
- data/lib/jdbc_adapter/jdbc_adapter_internal.jar +0 -0
- data/lib/jdbc_adapter/jdbc_cachedb.rb +0 -33
- data/lib/jdbc_adapter/jdbc_mysql.rb +0 -260
- data/lib/jdbc_adapter/jdbc_sybase.rb +0 -50
- data/src/java/jdbc_adapter/SQLBlock.java +0 -27
- data/src/java/jdbc_adapter/Sqlite3RubyJdbcConnection.java +0 -41
- data/test/jdbc_adapter/jdbc_db2_test.rb +0 -26
- data/test/jdbc_adapter/jdbc_sybase_test.rb +0 -33
- data/test/minirunit/testConnect.rb +0 -14
- data/test/minirunit/testH2.rb +0 -73
- data/test/minirunit/testHsqldb.rb +0 -73
- data/test/minirunit/testLoadActiveRecord.rb +0 -3
- data/test/minirunit/testMysql.rb +0 -83
- data/test/minirunit/testRawSelect.rb +0 -24
- data/test/minirunit.rb +0 -109
- /data/lib/{jdbc_adapter → arjdbc/jdbc}/jdbc.rake +0 -0
- /data/lib/{jdbc_adapter → arjdbc/jdbc}/rake_tasks.rb +0 -0
- /data/lib/{jdbc_adapter → arjdbc/mssql}/tsql_helper.rb +0 -0
@@ -1,13 +1 @@
|
|
1
|
-
|
2
|
-
begin
|
3
|
-
require "jdbc/postgres"
|
4
|
-
rescue LoadError
|
5
|
-
unless tried_gem
|
6
|
-
require 'rubygems'
|
7
|
-
gem "jdbc-postgres"
|
8
|
-
tried_gem = true
|
9
|
-
retry
|
10
|
-
end
|
11
|
-
# trust that the postgres jar is already present
|
12
|
-
end
|
13
|
-
require 'active_record/connection_adapters/jdbc_adapter'
|
1
|
+
require 'arjdbc/postgresql'
|
@@ -1,13 +1 @@
|
|
1
|
-
|
2
|
-
begin
|
3
|
-
require "jdbc/sqlite3"
|
4
|
-
rescue LoadError
|
5
|
-
unless tried_gem
|
6
|
-
require 'rubygems'
|
7
|
-
gem "jdbc-sqlite3"
|
8
|
-
tried_gem = true
|
9
|
-
retry
|
10
|
-
end
|
11
|
-
# trust that the sqlite jar is already present
|
12
|
-
end
|
13
|
-
require 'active_record/connection_adapters/jdbc_adapter'
|
1
|
+
require 'arjdbc/sqlite3'
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'arjdbc/mssql/tsql_helper'
|
2
|
+
|
3
|
+
module ::ArJdbc
|
4
|
+
module CacheDB
|
5
|
+
include TSqlMethods
|
6
|
+
|
7
|
+
def self.column_selector
|
8
|
+
[ /cache/i, lambda { | cfg, col | col.extend( ::ArJdbc::CacheDB::Column ) } ]
|
9
|
+
end
|
10
|
+
|
11
|
+
module Column
|
12
|
+
end
|
13
|
+
|
14
|
+
def create_table(name, options = { })
|
15
|
+
super(name, options)
|
16
|
+
primary_key = options[:primary_key] || "id"
|
17
|
+
execute "ALTER TABLE #{name} ADD CONSTRAINT #{name}_PK PRIMARY KEY(#{primary_key})" unless options[:id] == false
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class ActiveRecord::Base
|
2
|
+
class << self
|
3
|
+
def cachedb_connection( config )
|
4
|
+
config[:port] ||= 1972
|
5
|
+
config[:url] ||= "jdbc:Cache://#{config[:host]}:#{config[:port]}/#{ config[:database]}"
|
6
|
+
config[:driver] ||= "com.intersys.jdbc.CacheDriver"
|
7
|
+
jdbc_connection(config)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -1,21 +1,5 @@
|
|
1
|
-
module
|
1
|
+
module ArJdbc
|
2
2
|
module DB2
|
3
|
-
def self.adapter_matcher(name, config)
|
4
|
-
if name =~ /db2/i
|
5
|
-
return config[:url] =~ /^jdbc:derby:net:/ ? ::JdbcSpec::Derby : self
|
6
|
-
end
|
7
|
-
false
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.adapter_selector
|
11
|
-
[/db2/i, lambda {|cfg,adapt|
|
12
|
-
if cfg[:url] =~ /^jdbc:derby:net:/
|
13
|
-
adapt.extend(::JdbcSpec::Derby)
|
14
|
-
else
|
15
|
-
adapt.extend(::JdbcSpec::DB2)
|
16
|
-
end }]
|
17
|
-
end
|
18
|
-
|
19
3
|
def self.extended(obj)
|
20
4
|
# Ignore these 4 system tables
|
21
5
|
ActiveRecord::SchemaDumper.ignore_tables |= %w{hmon_atm_info hmon_collection policy stmg_dbsize_info}
|
@@ -69,6 +53,7 @@ module JdbcSpec
|
|
69
53
|
def modify_types(tp)
|
70
54
|
tp[:primary_key] = 'int not null generated by default as identity (start with 1) primary key'
|
71
55
|
tp[:string][:limit] = 255
|
56
|
+
tp[:integer] ||= {}
|
72
57
|
tp[:integer][:limit] = nil
|
73
58
|
tp[:boolean][:limit] = nil
|
74
59
|
tp
|
data/lib/arjdbc/db2.rb
ADDED
@@ -1,30 +1,9 @@
|
|
1
|
-
require '
|
2
|
-
|
3
|
-
module ::JdbcSpec
|
4
|
-
module ActiveRecordExtensions
|
5
|
-
def derby_connection(config)
|
6
|
-
require File.dirname(__FILE__) + "/../active_record/connection_adapters/derby_adapter"
|
7
|
-
config[:url] ||= "jdbc:derby:#{config[:database]};create=true"
|
8
|
-
config[:driver] ||= "org.apache.derby.jdbc.EmbeddedDriver"
|
9
|
-
check_version(embedded_driver(config))
|
10
|
-
end
|
11
|
-
|
12
|
-
def check_version(conn)
|
13
|
-
md = conn.raw_connection.connection.meta_data
|
14
|
-
if md.database_major_version < 10 || md.database_minor_version < 5
|
15
|
-
raise ::ActiveRecord::ConnectionFailed, "Derby adapter requires Derby 10.5 or later"
|
16
|
-
end
|
17
|
-
conn
|
18
|
-
end
|
19
|
-
end
|
1
|
+
require 'arjdbc/jdbc/missing_functionality_helper'
|
20
2
|
|
3
|
+
module ::ArJdbc
|
21
4
|
module Derby
|
22
|
-
def self.adapter_matcher(name, *)
|
23
|
-
name =~ /derby/i ? self : false
|
24
|
-
end
|
25
|
-
|
26
5
|
def self.column_selector
|
27
|
-
[/derby/i, lambda {|cfg,col| col.extend(::
|
6
|
+
[/derby/i, lambda {|cfg,col| col.extend(::ArJdbc::Derby::Column)}]
|
28
7
|
end
|
29
8
|
|
30
9
|
def self.monkey_rails
|
@@ -76,7 +55,11 @@ module ::JdbcSpec
|
|
76
55
|
'Derby'
|
77
56
|
end
|
78
57
|
|
79
|
-
include
|
58
|
+
include ArJdbc::MissingFunctionalityHelper
|
59
|
+
|
60
|
+
def index_name_length
|
61
|
+
128
|
62
|
+
end
|
80
63
|
|
81
64
|
# Convert the speficied column type to a SQL string. In Derby, :integers cannot specify
|
82
65
|
# a limit.
|
@@ -232,7 +215,6 @@ module ::JdbcSpec
|
|
232
215
|
super
|
233
216
|
end
|
234
217
|
|
235
|
-
|
236
218
|
# I don't think this method is ever called ??? (stepheneb)
|
237
219
|
def create_column(name, refid, colno)
|
238
220
|
stmt = COLUMN_TYPE_STMT % [refid, strip_quotes(name)]
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module ActiveRecord
|
2
|
+
class Base
|
3
|
+
class << self
|
4
|
+
def derby_connection(config)
|
5
|
+
config[:url] ||= "jdbc:derby:#{config[:database]};create=true"
|
6
|
+
config[:driver] ||= "org.apache.derby.jdbc.EmbeddedDriver"
|
7
|
+
conn = embedded_driver(config)
|
8
|
+
md = conn.raw_connection.connection.meta_data
|
9
|
+
if md.database_major_version < 10 || md.database_minor_version < 5
|
10
|
+
raise ::ActiveRecord::ConnectionFailed, "Derby adapter requires Derby 10.5 or later"
|
11
|
+
end
|
12
|
+
conn
|
13
|
+
end
|
14
|
+
|
15
|
+
alias_method :jdbcderby_connection, :derby_connection
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/arjdbc/derby.rb
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
# arjdbc/discover.rb: Declare ArJdbc.extension modules in this file
|
2
|
+
# that loads a custom module and adapter.
|
3
|
+
|
4
|
+
module ::ArJdbc
|
5
|
+
# Adapters built-in to AR are required up-front so we can override
|
6
|
+
# the native ones
|
7
|
+
require 'arjdbc/mysql'
|
8
|
+
extension :MySQL do |name|
|
9
|
+
name =~ /mysql/i
|
10
|
+
end
|
11
|
+
|
12
|
+
require 'arjdbc/postgresql'
|
13
|
+
extension :PostgreSQL do |name|
|
14
|
+
name =~ /postgre/i
|
15
|
+
end
|
16
|
+
|
17
|
+
require 'arjdbc/sqlite3'
|
18
|
+
extension :SQLite3 do |name|
|
19
|
+
name =~ /sqlite/i
|
20
|
+
end
|
21
|
+
|
22
|
+
# Other adapters are lazy-loaded
|
23
|
+
extension :CacheDB do |name|
|
24
|
+
if name =~ /cache/i
|
25
|
+
require 'arjdbc/cachedb'
|
26
|
+
true
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
extension :DB2 do |name, config|
|
31
|
+
if name =~ /db2/i && config[:url] !~ /^jdbc:derby:net:/
|
32
|
+
require 'arjdbc/db2'
|
33
|
+
true
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
extension :Derby do |name|
|
38
|
+
if name =~ /derby/i
|
39
|
+
require 'arjdbc/derby'
|
40
|
+
true
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
extension :FireBird do |name|
|
45
|
+
if name =~ /firebird/i
|
46
|
+
require 'arjdbc/firebird'
|
47
|
+
true
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
extension :H2 do |name|
|
52
|
+
if name =~ /\.h2\./i
|
53
|
+
require 'arjdbc/h2'
|
54
|
+
true
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
extension :HSQLDB do |name|
|
59
|
+
if name =~ /hsqldb/i
|
60
|
+
require 'arjdbc/hsqldb'
|
61
|
+
true
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
extension :Informix do |name|
|
66
|
+
if name =~ /informix/i
|
67
|
+
require 'arjdbc/informix'
|
68
|
+
true
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
extension :Mimer do |name|
|
73
|
+
if name =~ /mimer/i
|
74
|
+
require 'arjdbc/mimer'
|
75
|
+
true
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
extension :MsSQL do |name|
|
80
|
+
if name =~ /sqlserver|tds/i
|
81
|
+
require 'arjdbc/mssql'
|
82
|
+
true
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
extension :Oracle do |name|
|
87
|
+
if name =~ /oracle/i
|
88
|
+
require 'arjdbc/oracle'
|
89
|
+
true
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
extension :Sybase do |name|
|
94
|
+
if name =~ /sybase|tds/i
|
95
|
+
require 'arjdbc/sybase'
|
96
|
+
true
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -1,16 +1,12 @@
|
|
1
|
-
module ::
|
1
|
+
module ::ArJdbc
|
2
2
|
module FireBird
|
3
|
-
def self.adapter_matcher(name, *)
|
4
|
-
name =~ /firebird/i ? self : false
|
5
|
-
end
|
6
|
-
|
7
3
|
def modify_types(tp)
|
8
4
|
tp[:primary_key] = 'INTEGER NOT NULL PRIMARY KEY'
|
9
5
|
tp[:string][:limit] = 252
|
10
6
|
tp[:integer][:limit] = nil
|
11
7
|
tp
|
12
8
|
end
|
13
|
-
|
9
|
+
|
14
10
|
def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) # :nodoc:
|
15
11
|
execute(sql, name)
|
16
12
|
id_value
|
@@ -31,11 +27,11 @@ module ::JdbcSpec
|
|
31
27
|
def default_sequence_name(table_name, primary_key) # :nodoc:
|
32
28
|
"#{table_name}_seq"
|
33
29
|
end
|
34
|
-
|
30
|
+
|
35
31
|
def next_sequence_value(sequence_name)
|
36
32
|
select_one("SELECT GEN_ID(#{sequence_name}, 1 ) FROM RDB$DATABASE;")["gen_id"]
|
37
33
|
end
|
38
|
-
|
34
|
+
|
39
35
|
def create_table(name, options = {}) #:nodoc:
|
40
36
|
super(name, options)
|
41
37
|
execute "CREATE GENERATOR #{name}_seq"
|
@@ -44,7 +40,7 @@ module ::JdbcSpec
|
|
44
40
|
def rename_table(name, new_name) #:nodoc:
|
45
41
|
execute "RENAME #{name} TO #{new_name}"
|
46
42
|
execute "UPDATE RDB$GENERATORS SET RDB$GENERATOR_NAME='#{new_name}_seq' WHERE RDB$GENERATOR_NAME='#{name}_seq'" rescue nil
|
47
|
-
end
|
43
|
+
end
|
48
44
|
|
49
45
|
def drop_table(name, options = {}) #:nodoc:
|
50
46
|
super(name)
|
@@ -62,10 +58,10 @@ module ::JdbcSpec
|
|
62
58
|
def remove_index(table_name, options) #:nodoc:
|
63
59
|
execute "DROP INDEX #{index_name(table_name, options)}"
|
64
60
|
end
|
65
|
-
|
61
|
+
|
66
62
|
def quote(value, column = nil) # :nodoc:
|
67
63
|
return value.quoted_id if value.respond_to?(:quoted_id)
|
68
|
-
|
64
|
+
|
69
65
|
if [Time, DateTime].include?(value.class)
|
70
66
|
"CAST('#{value.strftime("%Y-%m-%d %H:%M:%S")}' AS TIMESTAMP)"
|
71
67
|
else
|
@@ -79,27 +75,27 @@ module ::JdbcSpec
|
|
79
75
|
def quote_string(string) # :nodoc:
|
80
76
|
string.gsub(/'/, "''")
|
81
77
|
end
|
82
|
-
|
78
|
+
|
83
79
|
def quote_column_name(column_name) # :nodoc:
|
84
80
|
%Q("#{ar_to_fb_case(column_name)}")
|
85
81
|
end
|
86
|
-
|
82
|
+
|
87
83
|
def quoted_true # :nodoc:
|
88
84
|
quote(1)
|
89
85
|
end
|
90
|
-
|
86
|
+
|
91
87
|
def quoted_false # :nodoc:
|
92
88
|
quote(0)
|
93
89
|
end
|
94
90
|
|
95
91
|
private
|
96
|
-
|
92
|
+
|
97
93
|
# Maps uppercase Firebird column names to lowercase for ActiveRecord;
|
98
94
|
# mixed-case columns retain their original case.
|
99
95
|
def fb_to_ar_case(column_name)
|
100
96
|
column_name =~ /[[:lower:]]/ ? column_name : column_name.to_s.downcase
|
101
97
|
end
|
102
|
-
|
98
|
+
|
103
99
|
# Maps lowercase ActiveRecord column names to uppercase for Fierbird;
|
104
100
|
# mixed-case columns retain their original case.
|
105
101
|
def ar_to_fb_case(column_name)
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module ActiveRecord
|
2
|
+
class Base
|
3
|
+
class << self
|
4
|
+
def h2_connection(config)
|
5
|
+
config[:url] ||= "jdbc:h2:#{config[:database]}"
|
6
|
+
config[:driver] ||= "org.h2.Driver"
|
7
|
+
embedded_driver(config)
|
8
|
+
end
|
9
|
+
alias_method :jdbch2_connection, :h2_connection
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/arjdbc/h2.rb
ADDED
@@ -1,33 +1,7 @@
|
|
1
|
-
module ::
|
2
|
-
module ActiveRecordExtensions
|
3
|
-
def hsqldb_connection(config)
|
4
|
-
require File.dirname(__FILE__) + "/../active_record/connection_adapters/hsqldb_adapter"
|
5
|
-
config[:url] ||= "jdbc:hsqldb:#{config[:database]}"
|
6
|
-
config[:driver] ||= "org.hsqldb.jdbcDriver"
|
7
|
-
embedded_driver(config)
|
8
|
-
end
|
9
|
-
|
10
|
-
def h2_connection(config)
|
11
|
-
require File.dirname(__FILE__) + "/../active_record/connection_adapters/h2_adapter"
|
12
|
-
config[:url] ||= "jdbc:h2:#{config[:database]}"
|
13
|
-
config[:driver] ||= "org.h2.Driver"
|
14
|
-
embedded_driver(config)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
1
|
+
module ::ArJdbc
|
18
2
|
module HSQLDB
|
19
|
-
def self.extended(mod)
|
20
|
-
mod.class.class_eval do
|
21
|
-
alias_chained_method :insert, :query_dirty, :insert
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.adapter_matcher(name, *)
|
26
|
-
name =~ /hsqldb/i ? self : false
|
27
|
-
end
|
28
|
-
|
29
3
|
def self.column_selector
|
30
|
-
[/hsqldb|\.h2\./i, lambda {|cfg,col| col.extend(::
|
4
|
+
[/hsqldb|\.h2\./i, lambda {|cfg,col| col.extend(::ArJdbc::HSQLDB::Column)}]
|
31
5
|
end
|
32
6
|
|
33
7
|
module Column
|
@@ -63,7 +37,7 @@ module ::JdbcSpec
|
|
63
37
|
end
|
64
38
|
|
65
39
|
def adapter_name #:nodoc:
|
66
|
-
|
40
|
+
'Hsqldb'
|
67
41
|
end
|
68
42
|
|
69
43
|
def modify_types(tp)
|
@@ -159,27 +133,13 @@ module ::JdbcSpec
|
|
159
133
|
execute "ALTER TABLE #{name} RENAME TO #{new_name}"
|
160
134
|
end
|
161
135
|
|
162
|
-
def
|
163
|
-
log(sql,name) do
|
164
|
-
@connection.execute_update(sql)
|
165
|
-
end
|
166
|
-
table = sql.split(" ", 4)[2]
|
167
|
-
id_value || last_insert_id(table, nil)
|
168
|
-
end
|
169
|
-
|
170
|
-
def last_insert_id(table, sequence_name)
|
136
|
+
def last_insert_id
|
171
137
|
Integer(select_value("CALL IDENTITY()"))
|
172
138
|
end
|
173
139
|
|
174
|
-
# Override normal #_execute: See Rubyforge #11567
|
175
140
|
def _execute(sql, name = nil)
|
176
|
-
|
177
|
-
|
178
|
-
elsif ::ActiveRecord::ConnectionAdapters::JdbcConnection::insert?(sql)
|
179
|
-
insert(sql, name)
|
180
|
-
else
|
181
|
-
@connection.execute_update(sql)
|
182
|
-
end
|
141
|
+
result = super
|
142
|
+
ActiveRecord::ConnectionAdapters::JdbcConnection::insert?(sql) ? last_insert_id : result
|
183
143
|
end
|
184
144
|
|
185
145
|
def add_limit_offset!(sql, options) #:nodoc:
|
@@ -206,16 +166,4 @@ module ::JdbcSpec
|
|
206
166
|
execute "DROP INDEX #{quote_column_name(index_name(table_name, options))}"
|
207
167
|
end
|
208
168
|
end
|
209
|
-
|
210
|
-
module H2
|
211
|
-
include HSQLDB
|
212
|
-
|
213
|
-
def self.adapter_matcher(name, *)
|
214
|
-
name =~ /\.h2\./i ? self : false
|
215
|
-
end
|
216
|
-
|
217
|
-
def h2_adapter
|
218
|
-
true
|
219
|
-
end
|
220
|
-
end
|
221
169
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module ActiveRecord
|
2
|
+
class Base
|
3
|
+
class << self
|
4
|
+
def hsqldb_connection(config)
|
5
|
+
require "arjdbc/hsqldb"
|
6
|
+
config[:url] ||= "jdbc:hsqldb:#{config[:database]}"
|
7
|
+
config[:driver] ||= "org.hsqldb.jdbcDriver"
|
8
|
+
embedded_driver(config)
|
9
|
+
end
|
10
|
+
|
11
|
+
alias_method :jdbchsqldb_connection, :hsqldb_connection
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -4,7 +4,7 @@ module ::ActiveRecord
|
|
4
4
|
|
5
5
|
private
|
6
6
|
def write_lobs
|
7
|
-
if connection.is_a?(
|
7
|
+
if connection.is_a?(ArJdbc::Informix)
|
8
8
|
self.class.columns.each do |c|
|
9
9
|
if [:text, :binary].include? c.type
|
10
10
|
value = self[c.name]
|
@@ -25,28 +25,15 @@ module ::ActiveRecord
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
module ::
|
29
|
-
module ActiveRecordExtensions
|
30
|
-
def informix_connection(config)
|
31
|
-
config[:port] ||= 9088
|
32
|
-
config[:url] ||= "jdbc:informix-sqli://#{config[:host]}:#{config[:port]}/#{config[:database]}:INFORMIXSERVER=#{config[:servername]}"
|
33
|
-
config[:driver] = 'com.informix.jdbc.IfxDriver'
|
34
|
-
jdbc_connection(config)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
28
|
+
module ::ArJdbc
|
38
29
|
module Informix
|
39
30
|
def self.extended(base)
|
40
31
|
@@db_major_version = base.select_one("SELECT dbinfo('version', 'major') version FROM systables WHERE tabid = 1")['version'].to_i
|
41
32
|
end
|
42
33
|
|
43
|
-
def self.adapter_matcher(name, *)
|
44
|
-
name =~ /informix/i ? self : false
|
45
|
-
end
|
46
|
-
|
47
34
|
def self.column_selector
|
48
35
|
[ /informix/i,
|
49
|
-
lambda { |cfg, column| column.extend(::
|
36
|
+
lambda { |cfg, column| column.extend(::ArJdbc::Informix::Column) } ]
|
50
37
|
end
|
51
38
|
|
52
39
|
module Column
|
@@ -123,12 +110,12 @@ module ::JdbcSpec
|
|
123
110
|
super(name, options)
|
124
111
|
execute("CREATE SEQUENCE #{name}_seq")
|
125
112
|
end
|
126
|
-
|
113
|
+
|
127
114
|
def rename_table(name, new_name)
|
128
115
|
execute("RENAME TABLE #{name} TO #{new_name}")
|
129
116
|
execute("RENAME SEQUENCE #{name}_seq TO #{new_name}_seq")
|
130
117
|
end
|
131
|
-
|
118
|
+
|
132
119
|
def drop_table(name)
|
133
120
|
super(name)
|
134
121
|
execute("DROP SEQUENCE #{name}_seq")
|
@@ -144,4 +131,4 @@ module ::JdbcSpec
|
|
144
131
|
execute(sql.gsub(/(!=|<>)\s*null/i, "IS NOT NULL").gsub(/=\s*null/i, "IS NULL"), name)
|
145
132
|
end
|
146
133
|
end # module Informix
|
147
|
-
end # module ::
|
134
|
+
end # module ::ArJdbc
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class ActiveRecord::Base
|
2
|
+
class << self
|
3
|
+
def informix_connection(config)
|
4
|
+
config[:port] ||= 9088
|
5
|
+
config[:url] ||= "jdbc:informix-sqli://#{config[:host]}:#{config[:port]}/#{config[:database]}:INFORMIXSERVER=#{config[:servername]}"
|
6
|
+
config[:driver] = 'com.informix.jdbc.IfxDriver'
|
7
|
+
jdbc_connection(config)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|