Module: ArJdbc::MSSQL::Utils

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

Constant Summary collapse

TABLE_NAME_INSERT_UPDATE =
/^\s*(INSERT|EXEC sp_executesql N'INSERT)(?:\s+INTO)?\s+([^\(\s]+)\s*|^\s*update\s+([^\(\s]+)\s*/i
TABLE_NAME_FROM =
/\bFROM\s+([^\(\)\s,]+)\s*/i

Class Method Summary collapse

Class Method Details

.get_table_name(sql, qualified = nil) ⇒ Object



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

def self.get_table_name(sql, qualified = nil)
  if sql =~ TABLE_NAME_INSERT_UPDATE
    tn = $2 || $3
    qualified ? tn : unqualify_table_name(tn)
  elsif sql =~ TABLE_NAME_FROM
    qualified ? $1 : unqualify_table_name($1)
  end
end

.insert_sql?(sql) ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/arjdbc/mssql/utils.rb', line 34

def self.insert_sql?(sql)
  !(sql =~ /^\s*(INSERT|EXEC sp_executesql N'INSERT)/i).nil?
end

.remove_identifier_delimiters(keyword) ⇒ Object



78
79
80
# File 'lib/arjdbc/mssql/utils.rb', line 78

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

.unqualify_db_name(table_name) ⇒ Object



70
71
72
73
# File 'lib/arjdbc/mssql/utils.rb', line 70

def self.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
62
63
# File 'lib/arjdbc/mssql/utils.rb', line 59

def self.unqualify_table_name(table_name)
  return if table_name.blank?

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

.unqualify_table_schema(table_name) ⇒ Object



65
66
67
68
# File 'lib/arjdbc/mssql/utils.rb', line 65

def self.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 self.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 self.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 self.unquote_table_name(table_name)
  remove_identifier_delimiters(table_name)
end