Module: ArJdbc::MSSQL::Utils

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

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



36
37
38
39
40
41
42
43
44
45
# File 'lib/arjdbc/mssql/utils.rb', line 36

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



76
77
78
# File 'lib/arjdbc/mssql/utils.rb', line 76

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

.unqualify_db_name(table_name) ⇒ Object



68
69
70
71
# File 'lib/arjdbc/mssql/utils.rb', line 68

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



59
60
61
# File 'lib/arjdbc/mssql/utils.rb', line 59

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

.unqualify_table_schema(table_name) ⇒ Object



63
64
65
66
# File 'lib/arjdbc/mssql/utils.rb', line 63

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



51
52
53
# File 'lib/arjdbc/mssql/utils.rb', line 51

def unquote_column_name(column_name)
  remove_identifier_delimiters(column_name)
end

.unquote_string(string) ⇒ Object



55
56
57
# File 'lib/arjdbc/mssql/utils.rb', line 55

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

.unquote_table_name(table_name) ⇒ Object



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

def unquote_table_name(table_name)
  remove_identifier_delimiters(table_name)
end