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
- .get_table_name(sql, qualified = nil) ⇒ Object
-
.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
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
See "Delimited Identifiers": http://msdn.microsoft.com/en-us/library/ms176027.aspx
27 28 29 30 31 32 33 34 35 |
# File 'lib/arjdbc/mssql/utils.rb', line 27 def remove_identifier_delimiters(keyword) if /\A(\[|")(.*)/m.match(keyword) delim, rest = $1, $2 if delim == '[' && rest =~ /]\z/ || delim == '"' && rest =~ /"\z/ return rest.chop end end keyword end |
.unqualify_db_name(table_name) ⇒ Object
57 58 59 60 |
# File 'lib/arjdbc/mssql/utils.rb', line 57 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
49 50 51 |
# File 'lib/arjdbc/mssql/utils.rb', line 49 def unqualify_table_name(table_name) remove_identifier_delimiters(table_name.to_s.split('.').last) end |
.unqualify_table_schema(table_name) ⇒ Object
53 54 55 |
# File 'lib/arjdbc/mssql/utils.rb', line 53 def unqualify_table_schema(table_name) remove_identifier_delimiters(table_name.to_s.split('.')[-2]) rescue nil end |
.unquote_column_name(column_name) ⇒ Object
41 42 43 |
# File 'lib/arjdbc/mssql/utils.rb', line 41 def unquote_column_name(column_name) remove_identifier_delimiters(column_name) end |
.unquote_string(string) ⇒ Object
45 46 47 |
# File 'lib/arjdbc/mssql/utils.rb', line 45 def unquote_string(string) string.to_s.gsub("''", "'") end |
.unquote_table_name(table_name) ⇒ Object
37 38 39 |
# File 'lib/arjdbc/mssql/utils.rb', line 37 def unquote_table_name(table_name) remove_identifier_delimiters(table_name) end |