I recently pushed a commit that adds the first Sequel 5 deprecation 
warnings, which are for using dataset mutation methods.  This is one of the 
changes I want to make that is most likely to break existing code

One of the other changes I want to make in Sequel 5 that is likely to break 
existing code is the removal of symbol splitting by default (so that 
Sequel.split_symbols = false is the default).  This will mean that all 
symbols are treated as plain identifiers.  To extract from the Sequel 
4.40.0 release notes:

      # Sequel.split_symbols = true (current default)
    :column                    # "column"
    :table__column             # "table"."column"
    :column___alias            # "column" AS "alias"
    :table__column___alias     # "table"."column" AS "alias"
    Sequel.expr{table__column} # "table"."column"

    # Sequel.split_symbols = false (proposed default)
    :column                    # "column"
    :table__column             # "table__column"
    :column___alias            # "column___alias"
    :table__column___alias     # "table__column___alias"
    Sequel.expr{table__column} # "table__column"

Symbol splitting has been the source of many, many bugs in the past. 
 Disabling it by default will make it much less likely that users will hit 
such bugs in the future, unless they turn the feature on.

Symbol splitting has existing in Sequel since the first commit that 
imported code.  As I am not the original author of Sequel, I do not know 
for sure why it was done, but my guess is that qualification and aliasing 
were very common, and having the information embedded in a symbol was a 
nice terse way of expressing the need, and few people use double/triple 
underscores in their database identifiers.

With recent versions of Sequel (starting in 4.40.0), there are many 
alternative ways to create qualified/aliased identifiers, from the built in 
Sequel[:qualifier][:identifier] to the shorter forms supported by the 
symbol_aref (:qualifier[:identifier]), symbol_as (:identifer.as(:alias)), 
and s (S(:qualifier)[:identifier]) extensions, or just doing ::S = ::Sequel 
and using S[:qualifier][:identifier].

Before deprecating symbol splitting, I'd like to get some feedback from the 
community. If you are in favor or opposed, please post your reasons why. 
 Absent any feedback, I will probably disable symbol splitting by default.

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