ActiveRecord-JDBC 0.3 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/Rakefile +1 -1
- data/lib/jdbc_adapter/jdbc_db2.rb +1 -1
- data/lib/jdbc_adapter/jdbc_derby.rb +89 -7
- data/lib/jdbc_adapter/jdbc_hsqldb.rb +1 -1
- data/lib/jdbc_adapter/jdbc_mssql.rb +1 -1
- data/lib/jdbc_adapter/jdbc_oracle.rb +1 -26
- data/lib/jdbc_adapter/jdbc_postgre.rb +1 -1
- data/lib/jdbc_adapter_internal.jar +0 -0
- metadata +1 -1
data/History.txt
CHANGED
data/Rakefile
CHANGED
@@ -84,7 +84,7 @@ begin
|
|
84
84
|
Rake::Task['manifest'].invoke # Always regen manifest, so Hoe has up-to-date list of files
|
85
85
|
|
86
86
|
require 'hoe'
|
87
|
-
Hoe.new("ActiveRecord-JDBC", "0.3") do |p|
|
87
|
+
Hoe.new("ActiveRecord-JDBC", "0.3.1") do |p|
|
88
88
|
p.rubyforge_name = "jruby-extras"
|
89
89
|
p.url = "http://jruby-extras.rubyforge.org/ActiveRecord-JDBC"
|
90
90
|
p.author = "Nick Sieger, Ola Bini and JRuby contributors"
|
@@ -24,7 +24,7 @@ module JdbcSpec
|
|
24
24
|
return value if value.is_a? Time
|
25
25
|
time_array = ParseDate.parsedate value
|
26
26
|
time_array[0] ||= 2000; time_array[1] ||= 1; time_array[2] ||= 1;
|
27
|
-
Time.send(Base.default_timezone, *time_array) rescue nil
|
27
|
+
Time.send(ActiveRecord::Base.default_timezone, *time_array) rescue nil
|
28
28
|
end
|
29
29
|
|
30
30
|
def guess_date_or_time(value)
|
@@ -27,7 +27,7 @@ module JdbcSpec
|
|
27
27
|
return value if value.is_a? Time
|
28
28
|
time_array = ParseDate.parsedate value
|
29
29
|
time_array[0] ||= 2000; time_array[1] ||= 1; time_array[2] ||= 1;
|
30
|
-
Time.send(Base.default_timezone, *time_array) rescue nil
|
30
|
+
Time.send(ActiveRecord::Base.default_timezone, *time_array) rescue nil
|
31
31
|
end
|
32
32
|
|
33
33
|
def guess_date_or_time(value)
|
@@ -119,7 +119,88 @@ module JdbcSpec
|
|
119
119
|
def rename_table(name, new_name)
|
120
120
|
execute "RENAME TABLE #{name} TO #{new_name}"
|
121
121
|
end
|
122
|
+
|
123
|
+
COLUMN_INFO_STMT = "SELECT C.COLUMNNAME, C.REFERENCEID, C.COLUMNNUMBER FROM SYS.SYSCOLUMNS C, SYS.SYSTABLES T WHERE T.TABLEID = '%s' AND T.TABLEID = C.REFERENCEID ORDER BY C.COLUMNNUMBER"
|
124
|
+
|
125
|
+
COLUMN_TYPE_STMT = "SELECT COLUMNDATATYPE, COLUMNDEFAULT FROM SYS.SYSCOLUMNS WHERE REFERENCEID = '%s' AND COLUMNNAME = '%s'"
|
126
|
+
|
127
|
+
AUTO_INC_STMT = "SELECT AUTOINCREMENTSTART, AUTOINCREMENTINC, COLUMNNAME, REFERENCEID, COLUMNDEFAULT FROM SYS.SYSCOLUMNS WHERE REFERENCEID = '%s' AND COLUMNNAME = '%s'"
|
128
|
+
|
129
|
+
|
130
|
+
def add_quotes(name)
|
131
|
+
return name unless name
|
132
|
+
%Q{"#{name}"}
|
133
|
+
end
|
134
|
+
|
135
|
+
def strip_quotes(str)
|
136
|
+
return str unless str
|
137
|
+
return str unless /^(["']).*\1$/ =~ str
|
138
|
+
str[1..-2]
|
139
|
+
end
|
122
140
|
|
141
|
+
def expand_double_quotes(name)
|
142
|
+
return name unless name && name['"']
|
143
|
+
name.gsub(/"/,'""')
|
144
|
+
end
|
145
|
+
|
146
|
+
def reinstate_auto_increment(name, refid, coldef)
|
147
|
+
stmt = AUTO_INC_STMT % [refid, strip_quotes(name)]
|
148
|
+
data = execute(stmt).first
|
149
|
+
if data
|
150
|
+
start = data['autoincrementstart']
|
151
|
+
if start
|
152
|
+
coldef << " GENERATED " << (data['columndefault'].nil? ? "ALWAYS" : "BY DEFAULT ")
|
153
|
+
coldef << "AS IDENTITY (START WITH "
|
154
|
+
coldef << start
|
155
|
+
coldef << ", INCREMENT BY "
|
156
|
+
coldef << data['autoincrementinc']
|
157
|
+
coldef << ")"
|
158
|
+
return true
|
159
|
+
end
|
160
|
+
end
|
161
|
+
false
|
162
|
+
end
|
163
|
+
|
164
|
+
def create_column(name, refid, colno)
|
165
|
+
stmt = COLUMN_TYPE_STMT % [refid, strip_quotes(name)]
|
166
|
+
coldef = ""
|
167
|
+
data = execute(stmt).first
|
168
|
+
if data
|
169
|
+
coldef << add_quotes(expand_double_quotes(strip_quotes(name)))
|
170
|
+
coldef << " "
|
171
|
+
coldef << data['columndatatype']
|
172
|
+
if !reinstate_auto_increment(name, refid, coldef) && data['columndefault']
|
173
|
+
coldef << " DEFAULT " << data['columndefault']
|
174
|
+
end
|
175
|
+
end
|
176
|
+
coldef
|
177
|
+
end
|
178
|
+
|
179
|
+
def structure_dump #:nodoc:
|
180
|
+
data = ""
|
181
|
+
execute("select tablename, tableid from sys.systables where schemaid not in (select schemaid from sys.sysschemas where schemaname LIKE 'SYS%')").each do |tbl|
|
182
|
+
tid = tbl["tableid"]
|
183
|
+
tname = tbl["tablename"]
|
184
|
+
data << "CREATE TABLE #{tname} (\n"
|
185
|
+
first_col = true
|
186
|
+
execute(COLUMN_INFO_STMT % tid).each do |col|
|
187
|
+
col_name = add_quotes(col['columnname']);
|
188
|
+
create_col_string = create_column(col_name, col['referenceid'],col['columnnumber'].to_i)
|
189
|
+
if !first_col
|
190
|
+
create_col_string = ",\n #{create_col_string}"
|
191
|
+
else
|
192
|
+
create_col_string = " #{create_col_string}"
|
193
|
+
end
|
194
|
+
|
195
|
+
data << create_col_string
|
196
|
+
|
197
|
+
first_col = false
|
198
|
+
end
|
199
|
+
data << ");\n\n"
|
200
|
+
end
|
201
|
+
data
|
202
|
+
end
|
203
|
+
|
123
204
|
# Support for removing columns added via derby bug issue:
|
124
205
|
# https://issues.apache.org/jira/browse/DERBY-1489
|
125
206
|
#
|
@@ -184,6 +265,12 @@ module JdbcSpec
|
|
184
265
|
def primary_keys(table_name)
|
185
266
|
@connection.primary_keys table_name.to_s.upcase
|
186
267
|
end
|
268
|
+
|
269
|
+
def recreate_database(db_name)
|
270
|
+
tables.each do |t|
|
271
|
+
drop_table t rescue nil
|
272
|
+
end
|
273
|
+
end
|
187
274
|
|
188
275
|
# For migrations, exclude the primary key index as recommended
|
189
276
|
# by the HSQLDB docs. This is not a great test for primary key
|
@@ -212,12 +299,7 @@ module JdbcSpec
|
|
212
299
|
end
|
213
300
|
end
|
214
301
|
else
|
215
|
-
|
216
|
-
if vi.to_s == value
|
217
|
-
value
|
218
|
-
else
|
219
|
-
"'#{quote_string(value)}'"
|
220
|
-
end
|
302
|
+
super
|
221
303
|
end
|
222
304
|
else super
|
223
305
|
end
|
@@ -25,7 +25,7 @@ module JdbcSpec
|
|
25
25
|
return value if value.is_a? Time
|
26
26
|
time_array = ParseDate.parsedate value
|
27
27
|
time_array[0] ||= 2000; time_array[1] ||= 1; time_array[2] ||= 1;
|
28
|
-
Time.send(Base.default_timezone, *time_array) rescue nil
|
28
|
+
Time.send(ActiveRecord::Base.default_timezone, *time_array) rescue nil
|
29
29
|
end
|
30
30
|
|
31
31
|
def guess_date_or_time(value)
|
@@ -38,7 +38,7 @@ module JdbcSpec
|
|
38
38
|
time_array[0] ||= 2000
|
39
39
|
time_array[1] ||= 1
|
40
40
|
time_array[2] ||= 1
|
41
|
-
Time.send(Base.default_timezone, *time_array) rescue nil
|
41
|
+
Time.send(ActiveRecord::Base.default_timezone, *time_array) rescue nil
|
42
42
|
end
|
43
43
|
|
44
44
|
def cast_to_datetime(value)
|
@@ -35,7 +35,7 @@ module JdbcSpec
|
|
35
35
|
return value if value.is_a? Time
|
36
36
|
time_array = ParseDate.parsedate value
|
37
37
|
time_array[0] ||= 2000; time_array[1] ||= 1; time_array[2] ||= 1;
|
38
|
-
Time.send(Base.default_timezone, *time_array) rescue nil
|
38
|
+
Time.send(ActiveRecord::Base.default_timezone, *time_array) rescue nil
|
39
39
|
end
|
40
40
|
|
41
41
|
def guess_date_or_time(value)
|
@@ -111,31 +111,6 @@ module JdbcSpec
|
|
111
111
|
select_one("select sys_context('userenv','db_name') db from dual")["db"]
|
112
112
|
end
|
113
113
|
|
114
|
-
def indexes(table_name, name = nil) #:nodoc:
|
115
|
-
result = select_all(<<-SQL, name)
|
116
|
-
SELECT lower(i.index_name) as index_name, i.uniqueness, lower(c.column_name) as column_name
|
117
|
-
FROM user_indexes i, user_ind_columns c
|
118
|
-
WHERE i.table_name = '#{table_name.to_s.upcase}'
|
119
|
-
AND c.index_name = i.index_name
|
120
|
-
AND i.index_name NOT IN (SELECT index_name FROM user_constraints WHERE constraint_type = 'P')
|
121
|
-
ORDER BY i.index_name, c.column_position
|
122
|
-
SQL
|
123
|
-
|
124
|
-
current_index = nil
|
125
|
-
indexes = []
|
126
|
-
|
127
|
-
result.each do |row|
|
128
|
-
if current_index != row['index_name']
|
129
|
-
indexes << IndexDefinition.new(table_name, row['index_name'], row['uniqueness'] == "UNIQUE", [])
|
130
|
-
current_index = row['index_name']
|
131
|
-
end
|
132
|
-
|
133
|
-
indexes.last.columns << row['column_name']
|
134
|
-
end
|
135
|
-
|
136
|
-
indexes
|
137
|
-
end
|
138
|
-
|
139
114
|
def remove_index(table_name, options = {}) #:nodoc:
|
140
115
|
execute "DROP INDEX #{index_name(table_name, options)}"
|
141
116
|
end
|
@@ -16,7 +16,7 @@ module JdbcSpec
|
|
16
16
|
return value if value.is_a? Time
|
17
17
|
time_array = ParseDate.parsedate value
|
18
18
|
time_array[0] ||= 2000; time_array[1] ||= 1; time_array[2] ||= 1;
|
19
|
-
Time.send(Base.default_timezone, *time_array) rescue nil
|
19
|
+
Time.send(ActiveRecord::Base.default_timezone, *time_array) rescue nil
|
20
20
|
end
|
21
21
|
|
22
22
|
def guess_date_or_time(value)
|
Binary file
|
metadata
CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: ActiveRecord-JDBC
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version:
|
6
|
+
version: 0.3.1
|
7
7
|
date: 2007-05-07 00:00:00 -05:00
|
8
8
|
summary: JDBC adapter for ActiveRecord, for use within JRuby on Rails.
|
9
9
|
require_paths:
|