Module: ArJdbc::MSSQL::Utils

Included in:
ArJdbc::MSSQL
Defined in:
lib/arjdbc/mssql/utils.rb

Overview

Note:

Lot of code kindly borrowed from activerecord-sqlserver-adapter.

Constant Summary collapse

GET_TABLE_NAME_INSERT_UPDATE_RE =
/^\s*(INSERT|EXEC sp_executesql N'INSERT)\s+INTO\s+([^\(\s,]+)\s*|^\s*update\s+([^\(\s,]+)\s*/i
GET_TABLE_NAME_FROM_RE =
/\bFROM\s+([^\(\)\s,]+)\s*/i

Class Method Summary collapse

Class Method Details

.get_table_name(sql, qualified = nil) ⇒ Object



13
14
15
16
17
18
19
20
21
22
# File 'lib/arjdbc/mssql/utils.rb', line 13

def get_table_name(sql, qualified = nil)
  if sql =~ GET_TABLE_NAME_INSERT_UPDATE_RE
    tn = $2 || $3
    qualified ? tn : unqualify_table_name(tn)
  elsif sql =~ GET_TABLE_NAME_FROM_RE
    qualified ? $1 : unqualify_table_name($1)
  else
    nil
  end
end

.remove_identifier_delimiters(keyword) ⇒ Object



53
54
55
# File 'lib/arjdbc/mssql/utils.rb', line 53

def remove_identifier_delimiters(keyword)
  keyword.to_s.tr("\]\[\"", '')
end

.unqualify_db_name(table_name) ⇒ Object



45
46
47
48
# File 'lib/arjdbc/mssql/utils.rb', line 45

def unqualify_db_name(table_name)
  table_names = table_name.to_s.split('.')
  table_names.length == 3 ? remove_identifier_delimiters(table_names.first) : nil
end

.unqualify_table_name(table_name) ⇒ Object



36
37
38
# File 'lib/arjdbc/mssql/utils.rb', line 36

def unqualify_table_name(table_name)
  remove_identifier_delimiters(table_name.to_s.split('.').last)
end

.unqualify_table_schema(table_name) ⇒ Object



40
41
42
43
# File 'lib/arjdbc/mssql/utils.rb', line 40

def unqualify_table_schema(table_name)
  schema_name = table_name.to_s.split('.')[-2]
  schema_name.nil? ? nil : remove_identifier_delimiters(schema_name)
end

.unquote_column_name(column_name) ⇒ Object



28
29
30
# File 'lib/arjdbc/mssql/utils.rb', line 28

def unquote_column_name(column_name)
  remove_identifier_delimiters(column_name)
end

.unquote_string(string) ⇒ Object



32
33
34
# File 'lib/arjdbc/mssql/utils.rb', line 32

def unquote_string(string)
  string.to_s.gsub("''", "'")
end

.unquote_table_name(table_name) ⇒ Object



24
25
26
# File 'lib/arjdbc/mssql/utils.rb', line 24

def unquote_table_name(table_name)
  remove_identifier_delimiters(table_name)
end