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
- .get_table_name(sql, qualified = nil) ⇒ Object
- .insert_sql?(sql) ⇒ Boolean
-
.remove_identifier_delimiters(keyword) ⇒ Object
See "Delimited Identifiers": http://msdn.microsoft.com/en-us/library/ms176027.aspx.
- .unqualify_db_name(table_name) ⇒ Object
- .unqualify_table_name(table_name) ⇒ Object
- .unqualify_table_schema(table_name) ⇒ Object
- .unquote_column_name(column_name) ⇒ Object
- .unquote_string(string) ⇒ Object
- .unquote_table_name(table_name) ⇒ Object
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
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
See "Delimited Identifiers": http://msdn.microsoft.com/en-us/library/ms176027.aspx
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 |