@@ -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
10895end
0 commit comments