Title: [691] trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_mssql.rb: Fix some SQL Server problems.
Revision
691
Author
olabini
Date
2007-08-17 12:44:36 -0400 (Fri, 17 Aug 2007)

Log Message

Fix some SQL Server problems. Fixes by Nolan Evans

Modified Paths


Diff

Modified: trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_mssql.rb (690 => 691)


--- trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_mssql.rb	2007-08-17 16:40:41 UTC (rev 690)
+++ trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_mssql.rb	2007-08-17 16:44:36 UTC (rev 691)
@@ -101,7 +101,7 @@
         return value.to_s
       end
         case value
-          when String                
+          when String, ActiveSupport::Multibyte::Chars
             if column && column.type == :binary && column.class.respond_to?(:string_to_binary)
               val = quote_string(column.class.string_to_binary(value))
               "'#{val}'"
@@ -137,9 +137,6 @@
       def add_limit_offset!(sql, options)
         if options[:limit] and options[:offset]
           total_rows = select_all("SELECT count(*) as TotalRows from (#{sql.gsub(/\bSELECT\b/i, "SELECT TOP 1000000000")}) tally")[0][:TotalRows].to_i
-          if (options[:limit] + options[:offset]) >= total_rows
-            options[:limit] = (total_rows - options[:offset] >= 0) ? (total_rows - options[:offset]) : 0
-          end
           sql.sub!(/^\s*SELECT/i, "SELECT * FROM (SELECT TOP #{options[:limit]} * FROM (SELECT TOP #{options[:limit] + options[:offset]} ")
           sql << ") AS tmp1"
           if options[:order]
@@ -166,6 +163,16 @@
         end
       end
       
+          def change_order_direction(order)
+            order.split(",").collect {|fragment|
+              case fragment
+                when  /\bDESC\b/i     then fragment.gsub(/\bDESC\b/i, "ASC")
+                when  /\bASC\b/i      then fragment.gsub(/\bASC\b/i, "DESC")
+                else                  String.new(fragment).split(',').join(' DESC,') + ' DESC'
+              end
+            }.join(",")
+          end
+      
     def recreate_database(name)
       drop_database(name)
       create_database(name)
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to