Skip to content

Commit 74a13ba

Browse files
committed
re-use column/table quoting that's already available on structure_dump
1 parent 967ad6b commit 74a13ba

File tree

3 files changed

+20
-33
lines changed

3 files changed

+20
-33
lines changed

lib/arjdbc/derby/adapter.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ def drop_database(name = nil) # :nodoc:
304304
end
305305

306306
def quote_column_name(name) # :nodoc:
307-
%Q{"#{name.to_s.upcase.gsub(/\"/, '""')}"}
307+
%Q{"#{name.to_s.upcase.gsub('"', '""')}"}
308308
end
309309

310310
def add_limit_offset!(sql, options) # :nodoc:

lib/arjdbc/tasks/derby_database_tasks.rb

Lines changed: 18 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -22,31 +22,33 @@ def drop
2222
def structure_dump(filename)
2323
establish_connection(config)
2424
dump = File.open(filename, "w:utf-8")
25+
2526
meta_data = connection.jdbc_connection.meta_data
26-
tables_rs = meta_data.getTables(nil, nil, nil, ["TABLE"].to_java(:string))
27+
tables_rs = meta_data.getTables(nil, nil, nil, ["TABLE"].to_java(:String))
28+
2729
while tables_rs.next
28-
table_name = tables_rs.getString(3)
29-
dump << "CREATE TABLE #{table_name} (\n"
30+
table_name = tables_rs.getString('TABLE_NAME') # getString(3)
31+
dump << "CREATE TABLE #{connection.quote_table_name(table_name)} (\n"
32+
3033
columns_rs = meta_data.getColumns(nil, nil, table_name, nil)
3134
first_col = true
3235
while columns_rs.next
33-
column_name = add_quotes(columns_rs.getString(4));
34-
default = ''
35-
d1 = columns_rs.getString(13)
36-
if d1 =~ /^GENERATED_/
36+
column_name = columns_rs.getString(4)
37+
default = columns_rs.getString(13)
38+
if default =~ /^GENERATED_/
3739
default = column_auto_increment_def(table_name, column_name)
38-
elsif d1
39-
default = " DEFAULT #{d1}"
40+
elsif default
41+
default = " DEFAULT #{default}"
4042
end
41-
4243
type = columns_rs.getString(6)
4344
column_size = columns_rs.getString(7)
44-
nulling = (columns_rs.getString(18) == 'NO' ? " NOT NULL" : "")
45-
create_column = add_quotes(expand_double_quotes(strip_quotes(column_name)))
45+
nulling = ( columns_rs.getString(18) == 'NO' ? " NOT NULL" : nil )
46+
47+
create_column = connection.quote_column_name(column_name)
4648
create_column << " #{type}"
4749
create_column << ( SIZEABLE.include?(type) ? "(#{column_size})" : "" )
48-
create_column << nulling
49-
create_column << default
50+
create_column << nulling.to_s
51+
create_column << default.to_s
5052

5153
create_column = first_col ? " #{create_column}" : ",\n #{create_column}"
5254
dump << create_column
@@ -55,6 +57,7 @@ def structure_dump(filename)
5557
end
5658
dump << "\n);\n\n"
5759
end
60+
5861
dump.close
5962
end
6063

@@ -71,7 +74,7 @@ def structure_load(filename)
7174
"(SELECT T.TABLEID FROM SYS.SYSTABLES T WHERE T.TABLENAME = '%s') AND COLUMNNAME = '%s'"
7275

7376
def column_auto_increment_def(table_name, column_name)
74-
sql = AUTO_INCREMENT_SQL % [ table_name, strip_quotes(column_name) ]
77+
sql = AUTO_INCREMENT_SQL % [ table_name, column_name ]
7578
if data = connection.execute(sql).first
7679
if start = data['autoincrementstart']
7780
ai_def = ' GENERATED '
@@ -87,22 +90,6 @@ def column_auto_increment_def(table_name, column_name)
8790
''
8891
end
8992

90-
def add_quotes(name)
91-
return name unless name
92-
%Q{"#{name}"}
93-
end
94-
95-
def strip_quotes(str)
96-
return str unless str
97-
return str unless /^(["']).*\1$/ =~ str
98-
str[1..-2]
99-
end
100-
101-
def expand_double_quotes(name)
102-
return name unless name && name['"']
103-
name.gsub('"', '""')
104-
end
105-
10693
end
10794
end
10895
end

test/db/derby/rake_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def do_teardown
5151
Rake::Task["db:structure:dump"].invoke
5252

5353
assert File.exists?(structure_sql)
54-
assert_match /CREATE TABLE USERS/i, File.read(structure_sql)
54+
assert_match /CREATE TABLE "?USERS"?/i, File.read(structure_sql)
5555

5656
# db:structure:load
5757
ActiveRecord::Base.connection.disconnect!

0 commit comments

Comments
 (0)