On Sunday, February 4, 2018 at 9:01:18 PM UTC-8, Tom Wardrop wrote:
>
> Ok, that all makes sense at least. Cheers.
>

>From some additional research, at least by default, identifiers are case 
insensitive on Microsoft SQL Server.  It it possible to change that by 
modifying the database's collation.  Seems very odd that a data setting 
would affect metadata like identifier names, but apparently that is by 
design.

I did check and the second argument to sp_rename cannot be quoted, though 
the first one can.  The diff below shouldn't cause any harm, and doesn't 
break any tests, so I'll probably commit it later today.

Thanks,
Jeremy

 

>
> On Monday, 5 February 2018 14:51:47 UTC+10, Jeremy Evans wrote:
>>
>> On Sunday, February 4, 2018 at 5:32:47 PM UTC-8, Tom Wardrop wrote:
>>>
>>> Not sure if this a bug, but check the following:
>>>
>>> # Adds column "TEST" to "RESOURCE" table.
>>> add_column :resource, :test, :bit
>>>
>>> # Renames "TEST" to "another_test" in lower case
>>> rename_column :resource, :test, :another_test
>>>
>>> This is using the TinyTDS adapter. Adding columns automatically converts 
>>> column names to uppercase, where as renaming does not.
>>>
>>> Thoughts?
>>>
>>
>> Microsoft SQL Server doesn't actually have syntax support for renaming 
>> columns, you have to call the sp_rename stored procedure, and you pass that 
>> procedure a string, not an identifier.  I'm not sure what the quoting rules 
>> are regarding that string, I'll have to experiment tomorrow and see if 
>> there is a bug.  Considering that MSSQL can pass the related specs, it 
>> seems unlikely there is a bug, unless you have noticed an actual problem 
>> and not just worried that the generated SQL looks odd.
>>
>> You could try the following, but I have no idea if it works as I haven't 
>> tested it:
>>
>> diff --git a/lib/sequel/adapters/shared/mssql.rb 
>> b/lib/sequel/adapters/shared/mssql.rb
>> index 68dd4d1fd..8365701fa 100644
>> --- a/lib/sequel/adapters/shared/mssql.rb
>> +++ b/lib/sequel/adapters/shared/mssql.rb
>> @@ -260,7 +260,7 @@ module Sequel
>>            add_drop_default_constraint_sql(sqls, table, op[:name])
>>            sqls << super
>>          when :rename_column
>> -          "sp_rename 
>> #{literal("#{quote_schema_table(table)}.#{quote_identifier(op[:name])}")}, 
>> #{literal(op[:new_name].to_s)}, 'COLUMN'"
>> +          "sp_rename 
>> #{literal("#{quote_schema_table(table)}.#{quote_identifier(op[:name])}")}, 
>> #{literal(metadata_dataset.with_quote_identifiers(false).quote_identifier(op[:new_name]))},
>>  
>> 'COLUMN'"
>>          when :set_column_type
>>            sqls = []
>>            if sch = schema(table)
>>
>>
>> Thanks,
>> Jeremy
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to