Sha256: 088415d2d63761d979bb1a1099de134eba4e724f03d90dac5566240b4fcae214

Contents?: true

Size: 1002 Bytes

Versions: 16

Compression:

Stored size: 1002 Bytes

Contents

module Arel
  module Visitors
    class SQLServer < Arel::Visitors::ToSql
      def make_Fetch_Possible_And_Deterministic o
        return if o.limit.nil? && o.offset.nil?
        t = table_From_Statement o
        pk = primary_Key_From_Table t
        return unless pk
        if o.orders.empty?
          # Prefer deterministic vs a simple `(SELECT NULL)` expr.
          # CPK
          #o.orders = [pk.asc]
          o.orders = pk.map {|a_pk| a_pk.asc}
        end
      end

      def primary_Key_From_Table t
        return unless t
        column_name = @connection.schema_cache.primary_keys(t.name) ||
          @connection.schema_cache.columns_hash(t.name).first.try(:second).try(:name)

        # CPK
        # column_name ? t[column_name] : nil
        case column_name
          when Array
            column_name.map do |name|
              t[name]
            end
          when NilClass
            nil
          else
            [t[column_name]]
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
composite_primary_keys-14.0.9 lib/composite_primary_keys/arel/sqlserver.rb
composite_primary_keys-14.0.8 lib/composite_primary_keys/arel/sqlserver.rb
composite_primary_keys-13.0.8 lib/composite_primary_keys/arel/sqlserver.rb
composite_primary_keys-14.0.7 lib/composite_primary_keys/arel/sqlserver.rb
composite_primary_keys-14.0.6 lib/composite_primary_keys/arel/sqlserver.rb
composite_primary_keys-13.0.7 lib/composite_primary_keys/arel/sqlserver.rb
composite_primary_keys-13.0.6 lib/composite_primary_keys/arel/sqlserver.rb
composite_primary_keys-14.0.5 lib/composite_primary_keys/arel/sqlserver.rb
composite_primary_keys-13.0.5 lib/composite_primary_keys/arel/sqlserver.rb
composite_primary_keys-13.0.4 lib/composite_primary_keys/arel/sqlserver.rb
composite_primary_keys-14.0.4 lib/composite_primary_keys/arel/sqlserver.rb
composite_primary_keys-14.0.3 lib/composite_primary_keys/arel/sqlserver.rb
composite_primary_keys-13.0.3 lib/composite_primary_keys/arel/sqlserver.rb
composite_primary_keys-14.0.2 lib/composite_primary_keys/arel/sqlserver.rb
composite_primary_keys-13.0.2 lib/composite_primary_keys/arel/sqlserver.rb
composite_primary_keys-14.0.1 lib/composite_primary_keys/arel/sqlserver.rb