Sha256: f5d4c8d4bb3bd5541bbefb0d61ff15cf549a3d436c96598a2b6217464612dbf9

Contents?: true

Size: 1.49 KB

Versions: 15

Compression:

Stored size: 1.49 KB

Contents

module JdbcSpec
  module Sybase
    def self.adapter_matcher(name, *)
      name =~ /sybase|tds/i ? self : false
    end

      def add_limit_offset!(sql, options) # :nodoc:
        @limit = options[:limit]
        @offset = options[:offset]
        if use_temp_table?
          # Use temp table to hack offset with Sybase
          sql.sub!(/ FROM /i, ' INTO #artemp FROM ')
        elsif zero_limit?
          # "SET ROWCOUNT 0" turns off limits, so we havesy
          # to use a cheap trick.
          if sql =~ /WHERE/i
            sql.sub!(/WHERE/i, 'WHERE 1 = 2 AND ')
          elsif sql =~ /ORDER\s+BY/i
            sql.sub!(/ORDER\s+BY/i, 'WHERE 1 = 2 ORDER BY')
          else
            sql << 'WHERE 1 = 2'
          end
        end
      end

      # If limit is not set at all, we can ignore offset;
      # if limit *is* set but offset is zero, use normal select
      # with simple SET ROWCOUNT.  Thus, only use the temp table
      # if limit is set and offset > 0.
      def use_temp_table?
        !@limit.nil? && !@offset.nil? && @offset > 0
      end

      def zero_limit?
        !@limit.nil? && @limit == 0
      end

      def modify_types(tp) #:nodoc:
        tp[:primary_key] = "NUMERIC(22,0) IDENTITY PRIMARY KEY"
        tp[:integer][:limit] = nil
        tp[:boolean] = {:name => "bit"}
        tp[:binary] = {:name => "image"}
        tp
      end

      def remove_index(table_name, options = {})
        execute "DROP INDEX #{table_name}.#{index_name(table_name, options)}"
      end
  end
end

Version data entries

15 entries across 15 versions & 4 rubygems

Version Path
saturnflyer-activerecord-jdbc-adapter-0.9.3 lib/jdbc_adapter/jdbc_sybase.rb
kb-activerecord-jdbc-adapter-0.9.7.1-java lib/jdbc_adapter/jdbc_sybase.rb
activerecord-jdbc-adapter-0.9.7-java lib/jdbc_adapter/jdbc_sybase.rb
activerecord-jdbc-adapter-0.9.6-java lib/jdbc_adapter/jdbc_sybase.rb
activerecord-jdbc-adapter-0.9.5-java lib/jdbc_adapter/jdbc_sybase.rb
activerecord-jdbc-adapter-0.9.4-java lib/jdbc_adapter/jdbc_sybase.rb
activerecord-jdbc-adapter-0.9.3-java lib/jdbc_adapter/jdbc_sybase.rb
jpzwarte-activerecord-jdbc-adapter-0.9.2.6 lib/jdbc_adapter/jdbc_sybase.rb
jpzwarte-activerecord-jdbc-adapter-0.9.2.5 lib/jdbc_adapter/jdbc_sybase.rb
jpzwarte-activerecord-jdbc-adapter-0.9.2.4 lib/jdbc_adapter/jdbc_sybase.rb
jpzwarte-activerecord-jdbc-adapter-0.9.2.3 lib/jdbc_adapter/jdbc_sybase.rb
jpzwarte-activerecord-jdbc-adapter-0.9.2.2 lib/jdbc_adapter/jdbc_sybase.rb
jpzwarte-activerecord-jdbc-adapter-0.9.2.1 lib/jdbc_adapter/jdbc_sybase.rb
activerecord-jdbc-adapter-0.9.2 lib/jdbc_adapter/jdbc_sybase.rb
activerecord-jdbc-adapter-0.9.1 lib/jdbc_adapter/jdbc_sybase.rb