Amazing work Jeremy!

][`s

Em quarta-feira, 1 de agosto de 2018 12:27:44 UTC-3, Jeremy Evans escreveu:
>
> Sequel 5.11.0 has been released!
>
> = New Features
>
> * Sequel now supports more window frame specification types when
>   using window functions.  You can now provide the window frame
>   specification as a hash, and Sequel will format the correct
>   SQL.  Specifically, this adds support for RANGE and GROUPS,
>   numeric offsets, and EXCLUDE on a database that supports it
>   (e.g. PostgreSQL 11+).  Examples:
>
>     DB[:albums].select{function(c1).over(:partition=>c2, :order=>:c3,
>       :frame=>{:type=>:range, :start=>1, :end=>1})}
>     # SELECT function(c1) OVER (PARTITION BY c2 ORDER BY c3
>     # RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING) FROM albums
>
>     DB[:albums].select{function(c1).over(:partition=>c2, :order=>:c3,
>       :frame=>{:type=>:groups, :start=>[2, :preceding], :end=>[1, 
> :preceding]})}
>     # SELECT function(c1) OVER (PARTITION BY c2 ORDER BY c3
>     # GROUPS BETWEEN 2 PRECEDING AND 1 PRECEDING) FROM albums
>
>     DB[:albums].select{function(c1).over(:partition=>c2, :order=>:c3,
>       :frame=>{:type=>:range, :start=>:preceding, :exclude=>:current})}
>     # SELECT function(c1) OVER (PARTITION BY c2 ORDER BY c3
>     # RANGE UNBOUNDED PRECEDING EXCLUDE CURRENT ROW) FROM albums
>
> * The SQLite 3.24+ ON CONFLICT clause to INSERT is now supported.
>   This support is very similar to the PostgreSQL support for the
>   same feature, also known as  UPSERT (UPDATE if the row already
>   exists, INSERT if it does not).  This support is different than
>   the previous support for INSERT ON CONFLICT REPLACE (also known as
>   INSERT OR REPLACE), but it uses the same method name in order to
>   be compatible with the PostgreSQL support.  The new syntax requires
>   passing a hash to Dataset#insert_conflict.  Examples:
>
>     DB[:table].insert_conflict({}).insert(a: 1, b: 2)
>     # INSERT INTO TABLE (a, b) VALUES (1, 2)
>     # ON CONFLICT DO NOTHING
>  
>     DB[:table].insert_conflict(target: :a).insert(a: 1, b: 2)
>     # INSERT INTO TABLE (a, b) VALUES (1, 2)
>     # ON CONFLICT (a) DO NOTHING
>  
>     DB[:table].insert_conflict(target: :a,
>       conflict_where: {c: true}).insert(a: 1, b: 2)
>     # INSERT INTO TABLE (a, b) VALUES (1, 2)
>     # ON CONFLICT (a) WHERE (c IS TRUE) DO NOTHING
>  
>     DB[:table].insert_conflict(target: :a,
>       update: {b: Sequel[:excluded][:b]}).insert(a: 1, b: 2)
>     # INSERT INTO TABLE (a, b) VALUES (1, 2)
>     # ON CONFLICT (a) DO UPDATE SET b = excluded.b
>  
>     DB[:table].insert_conflict(target: :a,
>       update: {b: Sequel[:excluded][:b]},
>       update_where: {Sequel[:table][:status_id] => 1}).insert(a: 1, b: 2)
>     # INSERT INTO TABLE (a, b) VALUES (1, 2) ON CONFLICT (a)
>     # DO UPDATE SET b = excluded.b WHERE (table.status_id = 1)
>
> * Dataset#window for the WINDOW clause has been moved from the
>   PostgreSQL-specific support to core, and has been enabled on
>   MySQL 8+ and SQLAnywhere.  This allows you to specify a shared
>   window specification in a query, which can be used by multiple
>   window functions.
>
> = Other Improvements
>
> * When using the static_cache plugin, Model.first when called without
>   a block and without arguments or with a single Integer argument now
>   uses the cached values instead of issuing a query.
>
> * Using set_column_default with a nil value now correctly removes an
>   existing default value on MySQL when the column is NOT NULL.
>
> * Window function support has been enabled on SQLAnywhere, since it
>   works correctly.
>
> * Dumping schema for numeric/decimal columns with default values
>   now works correctly.  This was broken starting in Sequel 5.9.0
>   due to changes to use BigDecimal() instead of BigDecimal.new().
>
> * The jdbc/sqlserver adapter now works correctly on JRuby 9.2+.
>
> * An additional check constraint violation failure message is now
>   recognized on SQLite.
>
> 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