@@ -29,36 +29,40 @@ def coerced_sqlserver_time_columns
2929 end
3030
3131 def reset_column_information_with_sqlserver_cache_support
32- connection . send ( :initialize_sqlserver_caches )
32+ connection . send ( :initialize_sqlserver_caches ) if connection . respond_to? ( :sqlserver? )
3333 reset_column_information_without_sqlserver_cache_support
3434 end
3535
3636 private
3737
3838 def add_order_with_sqlserver_unique_checking! ( sql , order , scope = :auto )
39- order_sql = ''
40- add_order_without_sqlserver_unique_checking! ( order_sql , order , scope )
41- unless order_sql . blank?
42- unique_order_hash = { }
43- select_table_name = connection . send ( :get_table_name , sql )
44- select_table_name . tr! ( '[]' , '' ) if select_table_name
45- orders_and_dirs_set = connection . send ( :orders_and_dirs_set , order_sql )
46- unique_order_sql = orders_and_dirs_set . inject ( [ ] ) do |array , order_dir |
47- ord , dir = order_dir
48- ord_tn_and_cn = ord . to_s . split ( '.' ) . map { |o |o . tr ( '[]' , '' ) }
49- ord_table_name , ord_column_name = if ord_tn_and_cn . size > 1
50- ord_tn_and_cn
51- else
52- [ nil , ord_tn_and_cn . first ]
53- end
54- if ( ord_table_name && ord_table_name == select_table_name && unique_order_hash [ ord_column_name ] ) || unique_order_hash [ ord_column_name ]
55- array
56- else
57- unique_order_hash [ ord_column_name ] = true
58- array << "#{ ord } #{ dir } " . strip
59- end
60- end . join ( ', ' )
61- sql << " ORDER BY #{ unique_order_sql } "
39+ if connection . respond_to? ( :sqlserver? )
40+ order_sql = ''
41+ add_order_without_sqlserver_unique_checking! ( order_sql , order , scope )
42+ unless order_sql . blank?
43+ unique_order_hash = { }
44+ select_table_name = connection . send ( :get_table_name , sql )
45+ select_table_name . tr! ( '[]' , '' ) if select_table_name
46+ orders_and_dirs_set = connection . send ( :orders_and_dirs_set , order_sql )
47+ unique_order_sql = orders_and_dirs_set . inject ( [ ] ) do |array , order_dir |
48+ ord , dir = order_dir
49+ ord_tn_and_cn = ord . to_s . split ( '.' ) . map { |o |o . tr ( '[]' , '' ) }
50+ ord_table_name , ord_column_name = if ord_tn_and_cn . size > 1
51+ ord_tn_and_cn
52+ else
53+ [ nil , ord_tn_and_cn . first ]
54+ end
55+ if ( ord_table_name && ord_table_name == select_table_name && unique_order_hash [ ord_column_name ] ) || unique_order_hash [ ord_column_name ]
56+ array
57+ else
58+ unique_order_hash [ ord_column_name ] = true
59+ array << "#{ ord } #{ dir } " . strip
60+ end
61+ end . join ( ', ' )
62+ sql << " ORDER BY #{ unique_order_sql } "
63+ end
64+ else
65+ add_order_without_sqlserver_unique_checking! ( order_sql , order , scope )
6266 end
6367 end
6468
0 commit comments