Skip to content

Commit

Permalink
Update website for 4.21.0 release
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremyevans committed Apr 1, 2015
1 parent d6c16bf commit 03c2e5c
Show file tree
Hide file tree
Showing 82 changed files with 1,308 additions and 926 deletions.
11 changes: 11 additions & 0 deletions _posts/2015-04-01-sequel-4210-released.md
@@ -0,0 +1,11 @@
---
layout: post
title: Sequel 4.21.0 Released
---

Sequel 4.21.0 was released today! <a href="/rdoc/files/doc/release_notes/4_21_0_txt.html">Full release notes are available</a>, but here are some highlights:

* SQL::GenericExpression#=~ has been added for easier equality/inclusion/identity expressions in virtual rows.
* SQL::GenericExpression#!~ has been added on ruby 1.9 for easier inverted equality/inclusion/identity expressions in virtual rows.
* Database#add_named_conversion_proc has been added on PostgreSQL for adding conversion procs for named types.
* Database#transaction now works correctly inside after_commit/after_rollback hooks.
4 changes: 3 additions & 1 deletion documentation.html
Expand Up @@ -40,7 +40,7 @@ <h1>The Database Toolkit for Ruby</h1>

<div id="content">
<br style="clear: both;" />
<h2>Documentation for Sequel (v4.20.0)</h2>
<h2>Documentation for Sequel (v4.21.0)</h2>

<h3>General Info, Guides, Examples, and Tutorials</h3>

Expand Down Expand Up @@ -114,6 +114,8 @@ <h3>Release Notes</h3>

<li>

<a href="rdoc/files/doc/release_notes/4_21_0_txt.html">4.21</a> |

<a href="rdoc/files/doc/release_notes/4_20_0_txt.html">4.20</a> |

</li>
Expand Down
2 changes: 1 addition & 1 deletion index.html
Expand Up @@ -40,7 +40,7 @@ <h1>The Database Toolkit for Ruby</h1>

<div id="content">
<br style="clear: both;" />
<h2>Sequel: The Database Toolkit for Ruby (v4.20.0)</h2>
<h2>Sequel: The Database Toolkit for Ruby (v4.21.0)</h2>

<p>&quot;Sequel has restored my faith in Ruby. It's really amazing. The O/RM I've been hoping for for years.&quot; -- Sam Smoot, creator of DataMapper</p>

Expand Down
3 changes: 2 additions & 1 deletion plugins.html
Expand Up @@ -40,7 +40,7 @@ <h1>The Database Toolkit for Ruby</h1>

<div id="content">
<br style="clear: both;" />
<h2>Sequel::Model Plugins for v4.20.0</h2>
<h2>Sequel::Model Plugins for v4.21.0</h2>

<p>Sequel::Model has a standardized and very flexible plugin architecture, see the <a href="rdoc/classes/Sequel/Plugins.html">RDoc</a>. Here is a list of plugins that members of the Sequel community have developed:</p>

Expand Down Expand Up @@ -257,6 +257,7 @@ <h3>External Extensions</h3>
<li><a href='http://github.com/brasten/sequel-rails'>sequel-rails</a>: Rails 3 plugin that allows you to use Sequel instead of ActiveRecord.</li>
<li><a href='http://github.com/gucki/sequel_rails3'>sequel_rails3</a>: Another Rails 3 plugin that allows you to use Sequel instead of ActiveRecord.</li>
<li><a href='http://github.com/jsvd/sequel_vectorized'>sequel_vectorized</a>: Allows Sequel::Dataset to be exported as an Hash of Arrays and NArrays.</li>
<li><a href='https://github.com/refile/refile-sequel'>refile-sequel</a>: Provides an extension for using Refile with Sequel.</li>
</ul>

<h3>Submitting Your Plugin/Extension</h3>
Expand Down
96 changes: 59 additions & 37 deletions rdoc-adapters/classes/Sequel/Postgres/DatabaseMethods.html

Large diffs are not rendered by default.

57 changes: 34 additions & 23 deletions rdoc-adapters/classes/Sequel/Postgres/DatasetMethods.html

Large diffs are not rendered by default.

Expand Up @@ -67,7 +67,7 @@ <h2>Public Instance methods</h2>
<a class='source-toggle' href='#' onclick="toggleCode('method-i-prepared_sql-source'); return false">
[show source]
</a>
<pre id='method-i-prepared_sql-source'><span class="ruby-comment"># File lib/sequel/adapters/shared/postgres.rb, line 1209</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">prepared_sql</span>&#x000A; <span class="ruby-keyword">return</span> <span class="ruby-ivar">@prepared_sql</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@prepared_sql</span>&#x000A; <span class="ruby-ivar">@opts</span>[<span class="ruby-value">:returning</span>] = <span class="ruby-identifier">insert_pk</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@prepared_type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:insert</span>&#x000A; <span class="ruby-keyword">super</span>&#x000A; <span class="ruby-ivar">@prepared_sql</span>&#x000A;<span class="ruby-keyword">end</span></pre>
<pre id='method-i-prepared_sql-source'><span class="ruby-comment"># File lib/sequel/adapters/shared/postgres.rb, line 1218</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">prepared_sql</span>&#x000A; <span class="ruby-keyword">return</span> <span class="ruby-ivar">@prepared_sql</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@prepared_sql</span>&#x000A; <span class="ruby-ivar">@opts</span>[<span class="ruby-value">:returning</span>] = <span class="ruby-identifier">insert_pk</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@prepared_type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:insert</span>&#x000A; <span class="ruby-keyword">super</span>&#x000A; <span class="ruby-ivar">@prepared_sql</span>&#x000A;<span class="ruby-keyword">end</span></pre>
</div>
</div>
<div class='method public-instance' id='method-method-i-run'>
Expand All @@ -84,7 +84,7 @@ <h2>Public Instance methods</h2>
<a class='source-toggle' href='#' onclick="toggleCode('method-i-run-source'); return false">
[show source]
</a>
<pre id='method-i-run-source'><span class="ruby-comment"># File lib/sequel/adapters/shared/postgres.rb, line 1201</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">run</span>&#x000A; <span class="ruby-keyword">if</span> <span class="ruby-ivar">@prepared_type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:insert</span>&#x000A; <span class="ruby-identifier">fetch_rows</span>(<span class="ruby-identifier">prepared_sql</span>){<span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">first</span>}&#x000A; <span class="ruby-keyword">else</span>&#x000A; <span class="ruby-keyword">super</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A;<span class="ruby-keyword">end</span></pre>
<pre id='method-i-run-source'><span class="ruby-comment"># File lib/sequel/adapters/shared/postgres.rb, line 1210</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">run</span>&#x000A; <span class="ruby-keyword">if</span> <span class="ruby-ivar">@prepared_type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:insert</span>&#x000A; <span class="ruby-identifier">fetch_rows</span>(<span class="ruby-identifier">prepared_sql</span>){<span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">first</span>}&#x000A; <span class="ruby-keyword">else</span>&#x000A; <span class="ruby-keyword">super</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A;<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion rdoc-adapters/classes/Sequel/TinyTDS/Database.html
Expand Up @@ -114,7 +114,7 @@ <h2>Public Instance methods</h2>
<a class='source-toggle' href='#' onclick="toggleCode('method-i-execute-source'); return false">
[show source]
</a>
<pre id='method-i-execute-source'><span class="ruby-comment"># File lib/sequel/adapters/tinytds.rb, line 31</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">execute</span>(<span class="ruby-identifier">sql</span>, <span class="ruby-identifier">opts</span>=<span class="ruby-constant">OPTS</span>)&#x000A; <span class="ruby-identifier">synchronize</span>(<span class="ruby-identifier">opts</span>[<span class="ruby-value">:server</span>]) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-keyword">begin</span>&#x000A; <span class="ruby-identifier">m</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-value">:return</span>]&#x000A; <span class="ruby-identifier">r</span> = <span class="ruby-keyword">nil</span>&#x000A; <span class="ruby-keyword">if</span> (<span class="ruby-identifier">args</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-value">:arguments</span>]) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">args</span>.<span class="ruby-identifier">empty?</span>&#x000A; <span class="ruby-identifier">types</span> = []&#x000A; <span class="ruby-identifier">values</span> = []&#x000A; <span class="ruby-identifier">args</span>.<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span>(<span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span>), <span class="ruby-identifier">i</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-identifier">v</span>, <span class="ruby-identifier">type</span> = <span class="ruby-identifier">ps_arg_type</span>(<span class="ruby-identifier">v</span>)&#x000A; <span class="ruby-identifier">types</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;@#{k} #{type}&quot;</span>&#x000A; <span class="ruby-identifier">values</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;@#{k} = #{v}&quot;</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">case</span> <span class="ruby-identifier">m</span>&#x000A; <span class="ruby-keyword">when</span> <span class="ruby-value">:do</span>&#x000A; <span class="ruby-identifier">sql</span> = <span class="ruby-node">&quot;#{sql}; SELECT @@ROWCOUNT AS AffectedRows&quot;</span>&#x000A; <span class="ruby-identifier">single_value</span> = <span class="ruby-keyword">true</span>&#x000A; <span class="ruby-keyword">when</span> <span class="ruby-value">:insert</span>&#x000A; <span class="ruby-identifier">sql</span> = <span class="ruby-node">&quot;#{sql}; SELECT CAST(SCOPE_IDENTITY() AS bigint) AS Ident&quot;</span>&#x000A; <span class="ruby-identifier">single_value</span> = <span class="ruby-keyword">true</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-identifier">sql</span> = <span class="ruby-node">&quot;EXEC sp_executesql N&#39;#{c.escape(sql)}&#39;, N&#39;#{c.escape(types.join(&#39;, &#39;))}&#39;, #{values.join(&#39;, &#39;)}&quot;</span>&#x000A; <span class="ruby-identifier">log_yield</span>(<span class="ruby-identifier">sql</span>) <span class="ruby-keyword">do</span>&#x000A; <span class="ruby-identifier">r</span> = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">execute</span>(<span class="ruby-identifier">sql</span>)&#x000A; <span class="ruby-identifier">r</span>.<span class="ruby-identifier">each</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">row</span><span class="ruby-operator">|</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">row</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">first</span>} <span class="ruby-keyword">if</span> <span class="ruby-identifier">single_value</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">else</span>&#x000A; <span class="ruby-identifier">log_yield</span>(<span class="ruby-identifier">sql</span>) <span class="ruby-keyword">do</span>&#x000A; <span class="ruby-identifier">r</span> = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">execute</span>(<span class="ruby-identifier">sql</span>)&#x000A; <span class="ruby-keyword">return</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">m</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">m</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">yield</span>(<span class="ruby-identifier">r</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>&#x000A; <span class="ruby-keyword">rescue</span> <span class="ruby-constant">TinyTds</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>&#x000A; <span class="ruby-identifier">raise_error</span>(<span class="ruby-identifier">e</span>, <span class="ruby-value">:disconnect=</span><span class="ruby-operator">&gt;</span><span class="ruby-operator">!</span><span class="ruby-identifier">c</span>.<span class="ruby-identifier">active?</span>)&#x000A; <span class="ruby-keyword">ensure</span>&#x000A; <span class="ruby-identifier">r</span>.<span class="ruby-identifier">cancel</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">r</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">sqlsent?</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A;<span class="ruby-keyword">end</span></pre>
<pre id='method-i-execute-source'><span class="ruby-comment"># File lib/sequel/adapters/tinytds.rb, line 31</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">execute</span>(<span class="ruby-identifier">sql</span>, <span class="ruby-identifier">opts</span>=<span class="ruby-constant">OPTS</span>)&#x000A; <span class="ruby-identifier">synchronize</span>(<span class="ruby-identifier">opts</span>[<span class="ruby-value">:server</span>]) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-keyword">begin</span>&#x000A; <span class="ruby-identifier">m</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-value">:return</span>]&#x000A; <span class="ruby-identifier">r</span> = <span class="ruby-keyword">nil</span>&#x000A; <span class="ruby-keyword">if</span> (<span class="ruby-identifier">args</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-value">:arguments</span>]) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">args</span>.<span class="ruby-identifier">empty?</span>&#x000A; <span class="ruby-identifier">types</span> = []&#x000A; <span class="ruby-identifier">values</span> = []&#x000A; <span class="ruby-identifier">args</span>.<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span>(<span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span>), <span class="ruby-identifier">i</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-identifier">v</span>, <span class="ruby-identifier">type</span> = <span class="ruby-identifier">ps_arg_type</span>(<span class="ruby-identifier">v</span>)&#x000A; <span class="ruby-identifier">types</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;@#{k} #{type}&quot;</span>&#x000A; <span class="ruby-identifier">values</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;@#{k} = #{v}&quot;</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">case</span> <span class="ruby-identifier">m</span>&#x000A; <span class="ruby-keyword">when</span> <span class="ruby-value">:do</span>&#x000A; <span class="ruby-identifier">sql</span> = <span class="ruby-node">&quot;#{sql}; SELECT @@ROWCOUNT AS AffectedRows&quot;</span>&#x000A; <span class="ruby-identifier">single_value</span> = <span class="ruby-keyword">true</span>&#x000A; <span class="ruby-keyword">when</span> <span class="ruby-value">:insert</span>&#x000A; <span class="ruby-identifier">sql</span> = <span class="ruby-node">&quot;#{sql}; SELECT CAST(SCOPE_IDENTITY() AS bigint) AS Ident&quot;</span>&#x000A; <span class="ruby-identifier">single_value</span> = <span class="ruby-keyword">true</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-identifier">sql</span> = <span class="ruby-node">&quot;EXEC sp_executesql N&#39;#{c.escape(sql)}&#39;, N&#39;#{c.escape(types.join(&#39;, &#39;))}&#39;, #{values.join(&#39;, &#39;)}&quot;</span>&#x000A; <span class="ruby-identifier">log_yield</span>(<span class="ruby-identifier">sql</span>) <span class="ruby-keyword">do</span>&#x000A; <span class="ruby-identifier">r</span> = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">execute</span>(<span class="ruby-identifier">sql</span>)&#x000A; <span class="ruby-identifier">r</span>.<span class="ruby-identifier">each</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">row</span><span class="ruby-operator">|</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">row</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">first</span>} <span class="ruby-keyword">if</span> <span class="ruby-identifier">single_value</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">else</span>&#x000A; <span class="ruby-identifier">log_yield</span>(<span class="ruby-identifier">sql</span>) <span class="ruby-keyword">do</span>&#x000A; <span class="ruby-identifier">r</span> = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">execute</span>(<span class="ruby-identifier">sql</span>)&#x000A; <span class="ruby-keyword">return</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">m</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">m</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">yield</span>(<span class="ruby-identifier">r</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>&#x000A; <span class="ruby-keyword">rescue</span> <span class="ruby-constant">TinyTds</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>&#x000A; <span class="ruby-identifier">raise_error</span>(<span class="ruby-identifier">e</span>, <span class="ruby-value">:disconnect=</span><span class="ruby-operator">&gt;</span><span class="ruby-operator">!</span><span class="ruby-identifier">c</span>.<span class="ruby-identifier">active?</span>)&#x000A; <span class="ruby-keyword">ensure</span>&#x000A; <span class="ruby-identifier">r</span>.<span class="ruby-identifier">cancel</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">r</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">sqlsent?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">active?</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A;<span class="ruby-keyword">end</span></pre>
</div>
</div>
<div class='method public-instance' id='method-method-i-execute_ddl'>
Expand Down

0 comments on commit 03c2e5c

Please sign in to comment.