From f991329972b6aa9d9a0ca25c6df3fc9e90fe81de Mon Sep 17 00:00:00 2001 From: Christoph Ritler Date: Thu, 14 Jun 2012 11:14:05 +0200 Subject: [PATCH 1/2] removed trailing whitespace --- .../sqlserver/core_ext/explain.rb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb b/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb index 478422807..6dfbc4f81 100644 --- a/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb +++ b/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb @@ -3,19 +3,19 @@ module ConnectionAdapters module Sqlserver module CoreExt module Explain - + SQLSERVER_STATEMENT_PREFIX = "EXEC sp_executesql " SQLSERVER_PARAM_MATCHER = /@\d+ =/ - + def exec_explain(queries) unprepared_queries = queries.map { |sql, bind| [unprepare_sqlserver_statement(sql), bind] } super(unprepared_queries) end - + private - - # This is somewhat hacky, but it should reliably reformat our prepared sql statment - # which uses sp_executesql to just the first argument, then unquote it. Likewise our + + # This is somewhat hacky, but it should reliably reformat our prepared sql statment + # which uses sp_executesql to just the first argument, then unquote it. Likewise our # do_exec_query method should substitude the @n args withe the quoted values. def unprepare_sqlserver_statement(sql) if sql.starts_with?(SQLSERVER_STATEMENT_PREFIX) @@ -29,8 +29,8 @@ def unprepare_sqlserver_statement(sql) sql end end - - + + end end end From 9070eaa371f751904e7a7607af11f0f19a53b772 Mon Sep 17 00:00:00 2001 From: Christoph Ritler Date: Thu, 14 Jun 2012 11:12:04 +0200 Subject: [PATCH 2/2] explain works with queries without @XX placeholders --- .../connection_adapters/sqlserver/core_ext/explain.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb b/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb index 6dfbc4f81..13a612c00 100644 --- a/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb +++ b/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb @@ -21,8 +21,10 @@ def unprepare_sqlserver_statement(sql) if sql.starts_with?(SQLSERVER_STATEMENT_PREFIX) executesql = sql.from(SQLSERVER_STATEMENT_PREFIX.length) executesql_args = executesql.split(', ') - executesql_args.reject! { |arg| arg =~ SQLSERVER_PARAM_MATCHER } - executesql_args.pop if executesql_args.many? + has_sqlserver_params = executesql_args.reject! { |arg| arg =~ SQLSERVER_PARAM_MATCHER } + if has_sqlserver_params + executesql_args.pop if executesql_args.many? + end executesql = executesql_args.join(', ').strip.match(/N'(.*)'/)[1] Utils.unquote_string(executesql) else