Module: ActiveRecord::ConnectionAdapters::MSSQL::Quoting::ClassMethods

Defined in:
lib/arjdbc/mssql/quoting.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#column_name_matcherObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/arjdbc/mssql/quoting.rb', line 13

def column_name_matcher
  /
    \A
    (
      (?:
        # \[table_name\].\[column_name\] | function(one or no argument)
        ((?:\w+\.|\[\w+\]\.)?(?:\w+|\[\w+\])) | \w+\((?:|\g<2>)\)
      )
      (?:\s+AS\s+(?:\w+|\[\w+\]))?
    )
    (?:\s*,\s*\g<1>)*
    \z
  /ix
end

#column_name_with_order_matcherObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/arjdbc/mssql/quoting.rb', line 28

def column_name_with_order_matcher
  /
    \A
    (
      (?:
        # \[table_name\].\[column_name\] | function(one or no argument)
        ((?:\w+\.|\[\w+\]\.)?(?:\w+|\[\w+\])) | \w+\((?:|\g<2>)\)
      )
      (?:\s+ASC|\s+DESC)?
    )
    (?:\s*,\s*\g<1>)*
    \z
  /ix
end

#mssql_quote_column_name(name) ⇒ Object



51
52
53
54
55
# File 'lib/arjdbc/mssql/quoting.rb', line 51

def mssql_quote_column_name(name)
  name = name.to_s.split(".")
  name.map! { |n| mssql_quote_name_part(n) } # "[#{name}]"
  name.join(".")
end

#mssql_quote_name_part(part) ⇒ Object

Implements the quoting style for SQL Server



58
59
60
# File 'lib/arjdbc/mssql/quoting.rb', line 58

def mssql_quote_name_part(part)
  part =~ /^\[.*\]$/ ? part : "[#{part.gsub(']', ']]')}]"
end

#quote_column_name(name) ⇒ Object



43
44
45
# File 'lib/arjdbc/mssql/quoting.rb', line 43

def quote_column_name(name)
  QUOTED_COLUMN_NAMES[name] ||= mssql_quote_column_name(name)
end

#quote_table_name(name) ⇒ Object



47
48
49
# File 'lib/arjdbc/mssql/quoting.rb', line 47

def quote_table_name(name)
  QUOTED_TABLE_NAMES[name] ||= mssql_quote_column_name(name)
end